with Standard_Floating_Numbers; use Standard_Floating_Numbers; with Standard_Complex_Vectors; use Standard_Complex_Vectors; generic with procedure Write ( step : in natural; z,res : in Vector ); -- DESCRIPTION : -- This routine allows to write intermediate results after each iteration, -- such as the step number, the approximations z and the residuals res. -- If no output is wanted, supply an empty body for Write. procedure Durand_Kerner ( p : in Vector; z,res : in out Vector; maxsteps : in natural; eps : in double_float; nb : out natural ); -- DESCRIPTION : -- This routine computes all roots of a given polynomial -- in one unknown, applying the method of Durand Kerner. -- This method is also known as the method of Weierstrass. -- ON ENTRY : -- p the polynomial defined by -- p[k] + p[k+1]*x + p[k+2]*x^2 + .. + p[k+n]*x^n, -- with k = p'first; -- z initial approximations for the roots; -- res the residuals of the roots; -- maxsteps is the maximum number of steps that are allowed; -- eps the required accuracy. -- ON RETURN : -- z the computed roots; -- res the residuals of the roots; -- nb the number of steps.