Real and Complex Root Computation package

# Real and Complex Root Computation package.

This package contains classes for the computation of isolating and refining intervals of real roots and complex roots of univariate polynomials.

Method `algebraicRoots()` from class `RootFactory` computes both the real and complex algebraic roots of a univariate polynomial. Method `decimalRoots()` computes isolating intervals (or rectangles) for the roots and then uses a numerical algorithm to get a decimal approximation of the roots.

For the computation of real roots the main interface is `RealRoots` and main implementing class is `RealRootsSturm`. The implementation follows in part section 8.8 "Computation of real zeroes of Polynomial Systems" in Gröbner Bases, A computational Approach to Commutative Algebra, by Becker et al.
The class `RealAlgebraicNumber` is based on `AlgebraicNumber` with factory class `RealAlgebraicRing` based on `AlgebraicNumberRing`. They implement real algebraic numbers, which are algebraic numbers plus an isolating interval for a real root of the generator. `RealRootsSturm` can be applied to polynomials with real algebraic numbers as coefficients.

For the computation of complex roots the main interface is `ComplexRoots` and the main implementing class is `ComplexRootsSturm`. The implementation provides an exact infallible method which follows the numeric method of Wilf (see Wilf: A global bisection algorithm for computing the zeros of polynomials in the complex plane). It uses Sturm sequences following the Routh-Hurwitz Method to count the number of complex roots within a rectangle in the complex plane. For a (eventually) more efficient method see: Collins and Krandick: An efficient algorithm for infallible polynomial complex root isolation, in ISSAC'92.

Last modified: Wed Aug 17 23:32:35 CEST 2016

$Id$