Author(s): H.-H. Umstätter | Library: MATHLIB |
Submitter: K.S. Kölbig | Submitted: 07.06.1992 |
Language: Fortran | Revised: |
Subroutine subprogram RMULLZ and DMULLZ compute the zeros of the polynomial
of degree n with real coefficients and .
On computers other than CDC or Cray, only the double-precision version DMULLZ is available. On CDC and Cray computers, only the single-precision version RMULLZ is available.
Structure:
SUBROUTINE subprograms
User Entry Names : RMULLZ, DMULLZ
Files Referenced: Unit 6
External References: MTLMTR, ABEND
Usage:
For (type REAL), (type DOUBLE PRECISION),
CALL tMULLZ(A,N,MAXIT,Z)
Method:
The method of Muller (see Ref. 1) is used. This is based on iterated inverse quadratic interpolation followed by deflation to remove each zero as found.
Accuracy:
For well-conditioned polynomials (i.e. polynomials whose zeros are not unduly sensitive to small errors in the coefficients), the relative error of a computed zero of multiplicity m is of order where d is the machine precision expressed in decimal digits. For m>1, the m approximations to the single multiple zero are uniformly distributed on a small circle of radius of order around the exact zero. Therefore, if the polynomial is well-conditioned, the true value of the multiple zero will be close to the centre of this circle.
Error handling:
Error C202.1: .
Error C202.2: The number of iterations exceeds MAXIT.
In both cases, a message is written on Unit 6,
unless subroutine MTLSET (N002) has been called.
If the number of iterations exceeds MAXIT, those
zeros which have not been found are set to .
Notes:
For difficult cases which lead to too many iterations the following transformations may be applied, singly or together, to obtain a better-conditioned polynomial:
References: