traversal and update of sparse matrix
Rechnan <[email protected]> Sun, 18 Oct 2009 09:33:38 -0700 (PDT)
| Newsgroups | gmane.comp.lib.mtl.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi there,
I want to traverse a sparse matrix and update its elements. I have slightly
modified the iteration example from the tutorial, and the traversal works
fine. But if I add an inserter, the programm terminates with
Assertion failed: ma.starts[major+1] <= ma.my_nnz, file
c:\programme\boost\boost_1_39\boost\numeric\mtl\matrix\compressed2d.hpp,
line 209
If I put the inserter in an own subroutine, everything works fine, but the
update process is very slow (probably due to the repeated construction of
the inserter).
Has someone an idea how to solve this problem?
The source code is as follows:
template <typename Matrix>
void f(Matrix& m)
{
using traits::range_generator; using traits::range::min;
// Choose between row and column traversal
typedef typename min<range_generator<tag::row, Matrix>,
range_generator<tag::col, Matrix> >::type range_type;
range_type
my_range;
// Type of outer cursor
typedef typename range_type::type c_type;
// Type of inner cursor
typedef typename traits::range_generator<tag::nz, c_type>::type ic_type;
// Define the property maps
typename traits::row<Matrix>::type row(m);
typename traits::col<Matrix>::type col(m);
typename traits::const_value<Matrix>::type
value(m);
// Type of m's elements
typedef typename Collection<Matrix>::value_type value_type;
mtl::matrix::inserter<Matrix, update_store<value_type> > ins(m);
for (c_type cursor(my_range.begin(m)), cend(my_range.end(m)); cursor !=
cend; ++cursor)
for (ic_type icursor(begin<tag::nz>(cursor)), icend(end<tag::nz>(cursor));
icursor != icend; ++icursor){
int r=row(*icursor);
int c=col(*icursor);
double insval=6.789; // or something else
ins[r][c] << insval;
}
}
Thanks in advance,
Burkhard
--
View this message in context: http://www.nabble.com/traversal-and-update-of-sparse-matrix-tp25948202p25948202.html
Sent from the MTL Dev mailing list archive at Nabble.com.
_______________________________________________
This list is archived at http://www.osl.iu.edu/MailArchives/mtl-devel/