Boost logo

Ublas :

From: Matthias Troyer (troyer_at_[hidden])
Date: 2006-07-23 05:13:35


There is a serious bug in the mapped_vector_of_mapped_vector spare
matrix type. Rows containing only zero elements are not treated
correctly in prod(). The following code should give a vector that
contains only 1 in the last element. Instead prod() gives a vector
containing 1 in each element. In debug mode this bug is found by the
checks:

Check failed in file boost/boost/numeric/ublas/detail/
vector_assign.hpp at line 371:
detail::expression_type_check (v, cv)
Aborted

The bug appears in Boost 1.33 as well as in the CVS version

Best regards

Matthias

#include <boost/numeric/ublas/matrix_sparse.hpp>
#include <boost/numeric/ublas/vector.hpp>

int main()
{
   boost::numeric::ublas::mapped_vector_of_mapped_vector<double> m
(64,64);
   boost::numeric::ublas::vector<double> v(64);
   boost::numeric::ublas::vector<double> w(64);
   v[63] = 1.;
   m(63,63) = 1.;
   w = boost::numeric::ublas::prod(m,v);
}