Sleeve univariate solver

A first family of methods correspond to the scheme. It starts with a representation of a polynomial (on an interval ) and according to some criterion , it applies remove the interval, keep it on split it:

Algorithm

solve_binary(f,I)

Description: Isolation of the roots of on the interval .

Input: A representation associate with .

  • Compute the number of sign changes of the coefficient sequence .

  • If , remove the interval.

  • If , output the interval and .

  • If subdivide the representation into two subrepresentations, corresponding to the two halves of the input interval and apply recursively the algorithm to them.

Output: a list of subintervals of .

Typically, one can use the representation of a polynomial in the Bernstein basis on : , where . The subdivision step will be based on de Casteljau algorithm.

For , one can take the number of sign variation of the control coeffcients , not taking into account the of this sequence. By Descartes' rule, if the polynomial has no multiple root, the algorithm outputs a list of intervals containing one and only one root.

Two variants are implemented.