NO DOC.
#include <iostream>
#include <givaro/givrandom.h>
#include <givaro/givtimer.h>
#include <givaro/gfq.h>
#include <givaro/givpoly1.h>
#include <givaro/givtruncdomain.h>
long long TTcount = 0;
{
++TTcount;
TruncDom< GFqDom<int> >::Element R, T, V;
DP.add ( R, P, Q, (int64_t)d1, (int64_t)d2);
DP.add (T, P, Q);
V=T;
DP.truncin(V,(int64_t)d1,(int64_t)d2);
if( DP.areNEqual( V, R) ) {
std::cerr << "ERROR ADD:" << TTcount << std::endl;
DP.write(std::cout << " R: " , R) << std::endl;
DP.write(std::cout << " T: " , T) << std::endl;
DP.write(std::cout << " V: " , V) << std::endl;
std::cerr << "vR: " << vP << ", dR: " << dP << ", vP: " << vQ << ", dP: " << dQ << ", v: " << d1 << ", d: " << d2 << std::endl;
return false;
}
return true;
}
{
++TTcount;
TruncDom< GFqDom<int> >::Element R, T, V;
DP.sub ( R, P, Q, (int64_t)d1, (int64_t)d2);
DP.sub (T, P, Q);
V=T;
DP.truncin(V,(int64_t)d1,(int64_t)d2);
if( DP.areNEqual( V, R) ) {
std::cerr << "ERROR SUB:" << TTcount << std::endl;
DP.write(std::cout << " R: " , R) << std::endl;
DP.write(std::cout << " T: " , T) << std::endl;
DP.write(std::cout << " V: " , V) << std::endl;
std::cerr << "vR: " << vP << ", dR: " << dP << ", vP: " << vQ << ", dP: " << dQ << ", v: " << d1 << ", d: " << d2 << std::endl;
return false;
}
return true;
}
{
++TTcount;
TruncDom< GFqDom<int> >::Element R, T, V;
DP.mul ( R, P, Q, (int64_t)d1, (int64_t)d2);
DP.mul (T, P, Q);
V=T;
DP.truncin(V,(int64_t)d1,(int64_t)d2);
if( DP.areNEqual( V, R) ) {
std::cerr << "ERROR MUL:" << TTcount << std::endl;
DP.write(std::cout << " R: " , R) << std::endl;
DP.write(std::cout << " T: " , T) << std::endl;
DP.write(std::cout << " V: " , V) << std::endl;
std::cerr << "vR: " << vP << ", dR: " << dP << ", vP: " << vQ << ", dP: " << dQ << ", v: " << d1 << ", d: " << d2 << std::endl;
return false;
}
return true;
}
{
++TTcount;
TruncDom< GFqDom<int> >::Element R, T, V;
DP.axpy ( R, P, Q, G, (int64_t)d1, (int64_t)d2);
DP.axpy (T, P, Q, G);
V=T;
DP.truncin(V,(int64_t)d1,(int64_t)d2);
if( DP.areNEqual( V, R) ) {
std::cerr << "ERROR Axpy:" << std::endl;
DP.write(std::cout << " P: " , P) << std::endl;
DP.write(std::cout << " Q: " , Q) << std::endl;
DP.write(std::cout << " G: " , G) << std::endl;
DP.write(std::cout << " R: " , R) << std::endl;
DP.write(std::cout << " T: " , T) << std::endl;
DP.write(std::cout << " V: " , V) << std::endl;
std::cerr << "vP: " << vP << ", dP: " << dP << ", vQ: " << vQ << ", dQ: " << dQ << ", vG: " << vG << ", dG: " << dG << ", v: " << d1 << ", d: " << d2 << std::endl;
return false;
}
return true;
}
{
++TTcount;
TruncDom< GFqDom<int> >::Element R, T, V;
DP.axmy ( R, P, Q, G, (int64_t)d1, (int64_t)d2);
DP.axmy (T, P, Q, G);
V=T;
DP.truncin(V,(int64_t)d1,(int64_t)d2);
if( DP.areNEqual( V, R) ) {
std::cerr << "ERROR Axmy:" << std::endl;
DP.write(std::cout << " R: " , R) << std::endl;
DP.write(std::cout << " T: " , T) << std::endl;
DP.write(std::cout << " V: " , V) << std::endl;
std::cerr << "vR: " << vP << ", dR: " << dP << ", vP: " << vQ << ", dP: " << dQ << ", v: " << d1 << ", d: " << d2 << std::endl;
return false;
}
return true;
}
{
++TTcount;
TruncDom< GFqDom<int> >::Element R, T, V;
DP.maxpy ( R, P, Q, G, (int64_t)d1, (int64_t)d2);
DP.maxpy (T, P, Q, G);
V=T;
DP.truncin(V,(int64_t)d1,(int64_t)d2);
if( DP.areNEqual( V, R) ) {
std::cerr << "ERROR Maxpy:" << std::endl;
DP.write(std::cout << " R: " , R) << std::endl;
DP.write(std::cout << " T: " , T) << std::endl;
DP.write(std::cout << " V: " , V) << std::endl;
std::cerr << "vR: " << vP << ", dR: " << dP << ", vP: " << vQ << ", dP: " << dQ << ", v: " << d1 << ", d: " << d2 << std::endl;
return false;
}
return true;
}
int main(int argc, char ** argv) {
{
int64_t seed = (argc>1?atoi(argv[1]):
BaseTimer::seed());
std::cerr << "seed: " << seed << std::endl;
TruncDom< GFqDom<int> > DP101( Z101,
Indeter(
"X") );
TruncDom< GFqDom<int> >::Element P, Q, R, monomial;
GFqDom<int>::Element tmp;
DP101.assign( P, Z101.init(tmp,5) );
DP101.write( std::cout << "P: " , P )<< std::endl;
DP101.init( monomial,
Degree(1), 33U) ;
DP101.write( std::cout << "m: " , monomial )<< std::endl;
DP101.degree(deg,monomial);
DP101.val(val,monomial);
DP101.write( std::cout << "[m]_" << val << '^' << deg << ": " , monomial )<< std::endl;
DP101.addin( P, monomial );
DP101.write( std::cout << "P: " , P )<< std::endl;
DP101.init( monomial,
Degree(2), 12U) ;
DP101.write( std::cout << "m: " , monomial )<< std::endl;
DP101.addin( P, monomial );
DP101.write( std::cout << "P: " , P )<< std::endl;
Q = P;
DP101.write( std::cout << "P: " , P )<< std::endl;
DP101.write( std::cout << "Q: " , Q )<< std::endl;
DP101.init( Q,
Degree(0), 6U );
DP101.write( std::cout << "Q: " , Q )<< std::endl;
DP101.init( monomial,
Degree(4), 3U);
DP101.write( std::cout << "m: " , monomial )<< std::endl;
DP101.addin( Q, monomial) ;
DP101.write( std::cout << "Q: " , Q )<< std::endl;
DP101.init( monomial,
Degree(1), 75U);
DP101.write( std::cout << "m: " , monomial )<< std::endl;
DP101.addin( Q, monomial) ;
DP101.write( std::cout << "Q: " , Q )<< std::endl;
DP101.init( monomial,
Degree(3), 45U);
DP101.write( std::cout << "m: " , monomial )<< std::endl;
DP101.subin( Q, monomial) ;
DP101.write( std::cout << "Q: " , Q )<< std::endl;
DP101.mulin( Q,
Degree(15) ) ;
DP101.write( std::cout << "Q: " , Q )<< std::endl;
DP101.mulin( monomial,
Degree(32));
DP101.write( std::cout << "m: " , monomial )<< std::endl;
DP101.addin( Q, monomial) ;
DP101.write( std::cout << "Q: " , Q )<< std::endl;
DP101.subin( Q, monomial) ;
DP101.write( std::cout << "Q: " , Q )<< std::endl;
DP101.write( std::cout << "Q: " , Q )<< std::endl;
DP101.divin( monomial,
Degree(12));
DP101.write( std::cout << "m: " , monomial )<< std::endl;
DP101.addin( Q, monomial) ;
DP101.write( std::cout << "Q: " , Q )<< std::endl;
DP101.subin( Q, monomial) ;
DP101.write( std::cout << "Q: " , Q )<< std::endl;
DP101.divin( monomial,
Degree(10));
DP101.write( std::cout << "m: " , monomial )<< std::endl;
DP101.addin( Q, monomial) ;
DP101.write( std::cout << "Q: " , Q )<< std::endl;
DP101.subin( Q, monomial) ;
DP101.write( std::cout << "Q: " , Q )<< std::endl;
DP101.divin( monomial,
Degree(10));
DP101.write( std::cout << "m: " , monomial )<< std::endl;
DP101.addin( Q, monomial) ;
DP101.write( std::cout << "Q: " , Q )<< std::endl;
DP101.subin( Q, monomial) ;
DP101.write( std::cout << "Q: " , Q )<< std::endl;
DP101.setval(Q);
DP101.write( std::cout << "Q: " , Q )<< std::endl;
DP101.mulin( P,
Degree(15) ) ;
DP101.mul ( R, P, Q);
DP101.write( DP101.write(
std::cout << "(" , P ) << ") * (", Q) << ")";
DP101.write(std::cout << " = " , R) << std::endl;
DP101.write( DP101.write(
std::cout << "[(" , P ) << ") * (", Q) << ")]_28^30";
DP101.write(std::cout << " = " , R) << std::endl;
DP101.write( DP101.write(
std::cout << "[(" , P ) << ") * (", Q) << ")]_0^30";
DP101.write(std::cout << " = " , R) << std::endl;
DP101.write( DP101.write(
std::cout << "[(" , P ) << ") * (", Q) << ")]_28^100";
DP101.write(std::cout << " = " , R) << std::endl;
DP101.write( DP101.write(
std::cout << "[(" , P ) << ") * (", Q) << ")]_4^10";
DP101.write(std::cout << " = " , R) << std::endl;
DP101.write( DP101.write(
std::cout << "[(" , P ) << ") * (", Q) << ")]_75^100";
DP101.write(std::cout << " = " , R) << std::endl;
DP101.setval(R);
DP101.write( std::cout << "R: " , R )<< std::endl;
DP101.add ( R, P, Q);
DP101.write( DP101.write(
std::cout << "(" , P ) << ") + (", Q) << ")";
DP101.write(std::cout << " = " , R) << std::endl;
}
return 0;
}
base for class RealTimer; class SysTimer; class UserTimer;
Definition: givtimer.h:35
Degree type for polynomials.
Definition: givdegree.h:26
class GFqDom
Definition: gfq.h:36
Indeterminate.
Definition: givindeter.h:24
Namespace in which the whole Givaro library resides.
Definition: all_field.C:23