Developer documentation

Sleeve univariate solver

The class used to call the sleeve solver is

template<class C, class M> struct solver<ring<C,Bernstein> >, Sleeve<M> >;
Parameters
Cis the coefficient type used for the subdivision,
Min Approximate, Isolate specifies if the solver is isolating the roots or approximating them within a given precision.

Real root isolation

The roots are isolated in intervals.

Here is an example:

Seq<Interval<rational> > sol;
polynomial< integer, with<Monomials> > f = ...;
solver< double, Sleeve<Isolate> >::solve(sol,f);

In the case, one want to isolate the roots on a given interval [a,b]=[-1,1], one can use the following instruction:

solver<double, Sleeve<Isolate> >::solve(sol,f,-1,1);

Real root isolation

The roots are isolated in intervals of size bounded by the precision parameter of the solver. Here is an example:

Seq< Interval<rational> > sol;
polynomial< integer, with<MonomialTensor> > f = ...;
solver<double, Sleeve<Approximate> >::solve(sol,f);

In this example, we approximate the roots within the precision $2^{-100}$. The precision can be set globally:

solver<double, Sleeve<Approximate> >::set_precision(100);

In the case, one want to compute the roots on a given interval a,b, one can use the following instruction:

solver< double, Sleeve<Approximate> >::solve(sol,f,-1,1);
solver< double, Sleeve<Approximate> >::solve(sol,f,prec,-1,1);
See also
solver_uv_sleeve.hpp
Home