template<class POL>
void test() {
POL m0(1), m1(1,3), m2(2.1,2,3);
std::cout<<m0<<std::endl;
std::cout<<m1<<std::endl;
std::cout<<m2
<<" nbvar: "<<m2.nbvar()
<<", size: "<<m2.size()<<std::endl;
std::cout<< s
<<
" nbvar: "<<(s).
nbvar()
<<
", size: "<<(s).
size()<<std::endl;
std::cout<< m1-m2 <<std::endl;
std::cout<< -m2 <<std::endl;
std::cout<< m1*m2 <<std::endl;
m1 *= 4.2; std::cout<<m1<<std::endl;
m1 += 3.1; std::cout<<m1<<std::endl;
m1 -= 2; std::cout<<m1<<std::endl;
std::cout<<"-----------"<<std::endl;
POL p(
"a^2+b-2"); std::cout <<p<<std::endl;
p *= m1; std::cout<<p<<std::endl;
p += m2; std::cout<<p<<std::endl;
p -= m1; std::cout<<p<<std::endl;
}
int main(
int argc,
char** argv)
{
test< polynomial< double, with<MonomialTensor> > >();
test< polynomial< double, with<Bernstein> > >();
test< polynomial< double, with<Sparse,Lex> > >();
test< polynomial< double, with<Dual,DegRevLex> > >();
Polynomial p("x^2+y^2+2*x*y-1"); std::cout <<p<<std::endl;
Dual l("z^2-y*x+1"); std::cout <<l<<std::endl;
std::cout <<l*p<<std::endl;
std::cout <<p*l<<std::endl;
std::cout<<"Evaluation:"<<std::endl;
std::cout <<bb<<std::endl;
std::cout<< bb(1,1)<<std::endl;
Polynomial bb2("2*x+1");
std::cout <<bb2<<std::endl;
std::cout<< bb2(1,1)<<std::endl;
PolZ p2= as<PolZ>(p1);
}