Boost logo

Boost :

From: Julius Muschaweck (muschaweck_at_[hidden])
Date: 2003-01-29 04:22:19


Hi,

to me it looks like there may be a bug with sparse_matrix and matrix_row.
I was building a large sparse matrix from some smaller ones. When I tried
to assign a matrix_row of a sparse_matrix to another matrix_row of another
sparse_matrix, nothing happened. When I mix sparse_matrix with matrix, it
works as I expected, but then the sparse matrix isn't sparse anymore.

I tried this with the following code:

void SparseBug()
         {
         using namespace boost::numeric;
         typedef ublas::sparse_matrix<double> TSM;
         typedef ublas::matrix<double> TM;
         TSM sm1(3,3);
         TSM sm2(3,3);
         TM m1(3,3);
         TM m2(3,3);
         sm1(1,1) = m1(1,1) = 2.;
         ublas::matrix_row<TSM> (sm2,1) = ublas::matrix_row<TSM> (sm1,1);
         ublas::matrix_row<TM> (m2,1) = ublas::matrix_row<TM> (m1,1);
         std::cout << "matrix=matrix: m2(1,1) should be " << m1(1,1) << ",
is "<< m2(1,1) << std::endl;
         std::cout << "sparse_matrix=sparse_matrix: sm2(1,1) should be " <<
sm1(1,1) << ", is "<< sm2(1,1) << std::endl;
         ublas::matrix_row<TSM> (sm2,1) = ublas::matrix_row<TM> (m1,1);
         std::cout << "sparse_matrix=matrix: sm2(1,1) should be " <<
m1(1,1) << ", is "<< sm2(1,1) << std::endl;
         ublas::matrix_row<TM> (m2,1) = ublas::matrix_row<TSM> (sm1,1);
         std::cout << "matrix=sparse_matrix: m2(1,1) should be " <<
sm1(1,1) << ", is "<< m2(1,1) << std::endl;
         };

and got

matrix=matrix: m2(1,1) should be 2, is 2
sparse_matrix=sparse_matrix: sm2(1,1) should be 2, is 0
sparse_matrix=matrix: sm2(1,1) should be 2, is 2
matrix=sparse_matrix: m2(1,1) should be 2, is 2

on my Win2000 SP3 machine with Microsoft VC++.net in debug mode.

Has anyone an idea?

Thanks, Julius

Julius Muschaweck

_____________________________________________________
OEC AG
Paul-Gerhardt-Allee 42
81245 Muenchen, Germany

Phone: +49 89 820050-30
Fax: +49 89 820050-41
e-mail: <muschaweck_at_[hidden]>
Internet: www.oec.net
______________________________________________________



Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk