Boost logo

Ublas :

From: Gunter Winkler (guwi17_at_[hidden])
Date: 2005-05-03 08:19:19


On Tuesday 03 May 2005 14:38, Michael Stevens wrote:
> I think I see what Max wants: An 'equality' that uses a uBLAS "matrix
> expressions".
> Gunters suggests norm_inf(A-B) seems to fit the bill perfectly. In user
> code I think
> if (norm_inf(A-B) == 0)
> .. equal
>
> is nice linear algebra expression.
>
> Has two small drawbacks.
> a) norm_inf(A-B) !=0 does not short circuit
> b) Requires operator- instead of operator == for elements. Only an issue if
> you store non algebraic elements!

If I want it better I can write a few lines of code (row major version):

bool real_equal(const spm_t& A, const spm_t& B) {
 typedef spm_t::const_iterator1 i1_t;
  typedef spm_t::const_iterator2 i2_t;

  for (i1_t i1 = A.begin1(); i1 != A.end1(); ++i1) {
    for (i2_t i2 = i1.begin(); i2 != i1.end(); ++i2)
 if ( (*i2) != B(i2.index1(), i2.index2()) ) return false;
  }
  return true;
}

HTH
mfg
Gunter