bool TestOneCRAWritePointer(std::ostream& report, Iter& iteration, RandGen& genprime, size_t N, const BoundType& bound) { report << "ChineseRemainder<" << typeid(Builder).name() << ">(" << bound << ')' << std::endl; LinBox::ChineseRemainder< Builder > cra( bound ); Givaro::ZRing<Integer> Z ; LinBox::BlasMatrix<Givaro::ZRing<Integer> > Res(Z, (int)N, (int)N); cra( Res.getWritePointer(), iteration, genprime); bool locpass = std::equal( iteration.getVector().begin(), iteration.getVector().end(), Res.getWritePointer() ); if (locpass) { report << "ChineseRemainder<" << typeid(Builder).name() << ">(" << iteration.getLogSize() << ')' << ", passed." << std::endl; } else { report << "***ERROR***: ChineseRemainder<" << typeid(Builder).name() << ">(" << iteration.getLogSize() << ')' << "***ERROR***" << std::endl; } return locpass; }
bool TestOneCRA(std::ostream& report, Iter& iteration, RandGen& genprime, size_t N, const BoundType& bound) { report << "ChineseRemainder<" << typeid(Builder).name() << ">(" << bound << ')' << std::endl; LinBox::ChineseRemainder< Builder > cra( bound ); Givaro::ZRing<Integer> Z; BlasVector<Givaro::ZRing<Integer> > Res(Z,N); cra( Res, iteration, genprime); bool locpass = std::equal( Res.begin(), Res.end(), iteration.getVector().begin() ); if (locpass) report << "ChineseRemainder<" << typeid(Builder).name() << ">(" << iteration.getLogSize() << ')' << ", passed." << std::endl; else { report << "***ERROR***: ChineseRemainder<" << typeid(Builder).name() << ">(" << iteration.getLogSize() << ')' << "***ERROR***" << std::endl; BlasVector<Givaro::ZRing<Integer> >::const_iterator Rit=Res.begin(); BlasVector<Givaro::ZRing<Integer> >::const_iterator Oit=iteration.getVector().begin(); for( ; Rit!=Res.end(); ++Rit, ++Oit) if (*Rit != *Oit) report << *Rit << " != " << * Oit << std::endl; } return locpass; }