19 static void apply(
const M& A, X& x, Y& d,
22 typedef typename M::ConstRowIterator RowIterator;
23 typedef typename M::ConstColIterator ColIterator;
25 typename Y::iterator dIter=d.begin();
26 typename Y::const_iterator bIter=b.begin();
27 typename X::iterator xIter=x.begin();
29 for(RowIterator row=A.begin(), end=A.end(); row != end;
30 ++row, ++dIter, ++xIter, ++bIter)
32 ColIterator
col=(*row).begin();
35 for (;
col.index()<row.index(); ++
col)
36 (*col).mmv(x[
col.index()],*dIter);
37 assert(row.index()==
col.index());
41 diag->solve(*xIter,*dIter);
45 for(
col=(*row).begin();
col.index()<row.index(); ++
col)
46 col->mmv(*xIter, d[
col.index()]);