The IMSL_ZEROPOLY function finds the zeros of a polynomial with real or complex coefficients using the companion matrix method or, optionally, the Jenkins- Traub, three-stage algorithm.
            This routine requires an IDL Advanced Math and Stats license. For more information, contact your sales or technical support representative.
            The IMSL_ZEROPOLY function computes the n zeros of the polynomial:
            p (z) = an zn + an – 1zn – 1 + ... + a1 z + a0
            where the coefficients ai for i = 0, 1, ..., n are real and n is the degree of the polynomial.
            The default method used by IMSL_ZEROPOLY is the companion matrix method. The companion matrix method is based on the fact that if Ca denotes the companion matrix associated with p(z), then det (zI – Ca) = a(z), where I  is an n x n identity matrix. Thus, det (z0I – Ca) = 0 if, and only if, z0 is a zero of p(z). This implies that computing the eigenvalues of Ca will yield the zeros of p(z). This method is thought to be more robust than the Jenkins-Traub algorithm in most cases, but the companion matrix method is not as computationally efficient. Thus, if speed is a concern, the Jenkins-Traub algorithm should be considered.
		
            If the keyword JENKINS_TRAUB is set, then IMSL_ZEROPOLY function uses the Jenkins-Traub three-stage algorithm (Jenkins and Traub 1970, Jenkins 1975). The zeros are computed one-at-a-time for real zeros or two-at-a-time for a complex conjugate pair. As the zeros are found, the real zero or quadratic factor is removed by polynomial deflation.
            Example
            This example finds the zeros of the third-degree polynomial:
            p (z) = z3 – 3z2 + 4z – 2
            where z is a complex variable.
            coef = [-2, 4, -3, 1]
            
            
            PM, zeros, Title = $
            'The complex zeros found are: '
            
            The complex zeros found are:
              (      1.00000,      0.00000)
              (      1.00000,     -1.00000)
              (      1.00000,      1.00000)
            Errors
            Warning Errors
            MATH_ZERO_COEFF: First several coefficients of the polynomial are equal to zero. Several of the last roots are set to machine infinity to compensate for this problem.
            MATH_FEWER_ZEROS_FOUND: Fewer than (N_ELEMENTS (coef) – 1) zeros were found. The root vector contains the value for machine infinity in the locations that do not contain zeros.
            Syntax
            Result = IMSL_ZEROPOLY(Coef [, /DOUBLE] [, COMPANION=value] [, JENKINS_TRAUB=value])
            Return Value
            The complex array of zeros of the polynomial.
            Arguments
            Coef
            Array containing coefficients of the polynomial in increasing order by degree. The polynomial is Coef (n) zn + Coef (n – 1) zn – 1 + ... + Coef
            Keywords
            COMPANION (optional)
            If present and nonzero, the companion matrix method is used. Default: companion matrix method
            DOUBLE (optional)
            If present and nonzero, then double precision is used.
            JENKINS_TRAUB (optional)
            If present and nonzero, the Jenkins-Traub, three-stage algorithm is used.
            Version History