|
Ublas : |
Subject: [ublas] Problem with matrix assignment...
From: Thomas Schmelzer (thomas.schmelzer_at_[hidden])
Date: 2009-01-27 08:57:37
Hi,
my goal is to compute the Cholesky decomposition of a matrix C (which
is spd) and store the results in a standard ublas matrix (row_major!).
Here's a brief code example:
typedef ublas::matrix<dbl_t> dbl_mat_t;
typedef ublas::matrix<dbl_t, ublas::column_major> dbl_mat_cm_t;
typedef ublas::symmetric_matrix<dbl_t, ublas::lower,
ublas::column_major> dbl_sym_mat_cm_t;
typedef ublas::triangular_matrix<dbl_t, ublas::upper,
ublas::column_major> dbl_mat_triang_t;
const dbl_mat_t chol(const dbl_mat_t& C)
{
// create a column-major matrix C1
dbl_sym_mat_cm_t C1(C);
if (lapack::pptrf(C1)==0)
{
dbl_mat_triang_t C2(C1);
dbl_mat_t R(C2);
std::cout << ublas::norm_frobenius(ublas::prod(ublas::trans(R),R)-C)
<< std::endl;
return R;
}
}
This all works nice in the release mode, however, once I switch to
debug matrix_assign.hpp is complaining at runtime.
The error message I get is...
Check failed in file D:\Thomas\simulation\3rd party\boost-1_36\boost/numeric/ubl
as/detail/matrix_assign.hpp at line 890:
detail::expression_type_check (m, cm)
unknown location(0): fatal error in "test::MatrixComputations::testCholesky": st
d::logic_error: external logic
Can someone please comment on this. Help is very appreciated...
Cheers
Thomas
-- Thomas Schmelzer 31 Oxford Castle New Road OX1 1AY Oxford, UK Mobile: +44 (0)7789 778187 Landline: +44 (0)5602 147976