#include <iostream>
#include <iomanip>
int main(
int argc,
char** argv)
{
upol_t p("x^2+3*x-1");
std::cout <<"p: "<<p<< std::endl;
std::cout <<std::setprecision(16);
std::cout << "Sleeve double: " << std::endl;
std::cout << solve(p,Sleeve<Isolate>())<<std::endl;
std::cout << solve(p,Sleeve<Approximate>())<<std::endl;
Poly f( "x^10+21*x^5+3*x^2-1"), g("x^2-2*x-3");
f = f + Poly( "-3*x");
std::cout << "f: " << f << std::endl;
std::cout << "Sleeve Integer: " << std::endl;
std::cout << solve(g,Sleeve<Approximate>())<<std::endl;
std::cout << solve(f,Sleeve<Isolate>())<<std::endl;
std::cout << solve(f,Sleeve<Approximate>())<<std::endl;
std::cout << solve(f,Sleeve<Approximate>(),-1.,0.)<<std::endl;
std::cout << "ContFrac: " << std::endl;
std::cout << solve(f,ContFrac<Isolate>() ) << std::endl;
std::cout << solve(f,ContFrac<Approximate>() ) << std::endl;
f = Poly("x^2-3");
std::cout << solve(f,ContFrac<Approximate>(),
rational(1),rational(2)) << std::endl;
f = Poly("x^3-4*x-1");
solver_t::set_precision(100);
std::cout << sol<<std::endl;
}