realroot_doc 0.1.1
|
#include <iostream> #include <iomanip> #include <realroot/GMP.hpp> #include <realroot/IEEE754.hpp> #include <realroot/polynomial_tensor.hpp> #include <realroot/solver_uv_sleeve.hpp> #include <realroot/solver_uv_continued_fraction.hpp> using namespace mmx; typedef polynomial<double , with<MonomialTensor> > upol_t; typedef polynomial<GMP::integer, with<MonomialTensor> > Poly; int main(int argc, char** argv) { typedef GMP::integer integer; typedef GMP::rational rational; 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; // std::cout << "*********************" << 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(g,ContFrac<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"); Seq< Interval<rational> >sol; typedef solver<integer, ContFrac<Approximate> > solver_t; solver_t::set_precision(100); solver_t::solve(sol,f,rational(0), rational(3)); std::cout << sol<<std::endl; }