realroot_doc 0.1.1
solver_uv_test.cpp
#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;
}