
  ***************************************************************************
  * All the software  contained in this library  is protected by copyright. *
  * Permission  to use, copy, modify, and  distribute this software for any *
  * purpose without fee is hereby granted, provided that this entire notice *
  * is included  in all copies  of any software which is or includes a copy *
  * or modification  of this software  and in all copies  of the supporting *
  * documentation for such software.                                        *
  ***************************************************************************
  * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED *
  * WARRANTY. IN NO EVENT, NEITHER  THE AUTHORS, NOR THE PUBLISHER, NOR ANY *
  * MEMBER  OF THE EDITORIAL BOARD OF  THE JOURNAL  "NUMERICAL ALGORITHMS", *
  * NOR ITS EDITOR-IN-CHIEF, BE  LIABLE FOR ANY ERROR  IN THE SOFTWARE, ANY *
  * MISUSE  OF IT  OR ANY DAMAGE ARISING OUT OF ITS USE. THE ENTIRE RISK OF *
  * USING THE SOFTWARE LIES WITH THE PARTY DOING SO.                        *
  ***************************************************************************
  * ANY USE  OF THE SOFTWARE  CONSTITUTES  ACCEPTANCE  OF THE TERMS  OF THE *
  * ABOVE STATEMENT.                                                        *
  ***************************************************************************

   AUTHOR:

       DARIO ANDREA BINI
       UNIVERSITY OF PISA, ITALY
       E-MAIL: bini@dm.unipi.it

   REFERENCE:

    -  NUMERICAL COMPUTATION OF POLYNOMIAL ZEROS BY MEANS OF 
       ABERTH'S METHOD
       NUMERICAL ALGORITHMS, 13 (1996), PP. 179-200   

   SOFTWARE REVISION DATE:

       JUNE, 1996

   SOFTWARE LANGUAGE:

       FORTRAN

  ***************************************************************************


Files related to the paper

README   :  this file
pzeros.f :  source fortran code of the routines for polynomial zeros
driver.f :  driver program

the following files of data corresponding to the homonymous polynomials in 
section 5 of the paper:

a1
a2
a3
a4
b1
b2
b3
c1
c2
c3
iv-40    :  (polynomial of degree 40 in the class iv)
vii-80   :  (polynomial of degree 80 in the class vii)

and the output files containing the corresponding results

a1.res
a2.res
a3.res
a4.res
b1.res
b2.res
b3.res
c1.res
c2.res
c3.res
iv-40.res
vii-80.res



                         Using the software:

  The driver program for numerically computing all the roots of the    
  polynomial p(x)=a(n+1)x^n+a(n)x^(n-1)+...+a(1) having complex        
  coefficients a(i), i=1,...,n+1 and degree n, where a(1) and a(n+1)   
  are nonzero, reads from the standard input the file  name  of  the   
  input data. This file should contain on each line the degree N, the  
  real part and the imaginary part of the coefficients a(1),...,a(n+1) 
  of p(x).                                                             
  The program creates the file '<input file name>.out' containing the  
  values of                                                            
  I, ERR(I), ROOT(I), RADIUS(I), RADIUS(I)/ABS(ROOT(I)),   I=1,...,N.  
  where:                                                               
           ROOT(I) is the computed approximation to the I-th root;     
           RADIUS(I) is the absolute error bound;                      
           RADIUS(I)/ABS(ROOT(I)) is the relative error bound.         
           ERR(I) is .FALSE. for successful approx. of the I-th root.  
  More specifically, the disk of center ROOT(i) and radius RADIUS(i),  
  in the complex plane  contains a root of p(x)  for i=1,...,n.        
  The output vector ERR contains informations about the computed       
  approximations, i.e.,                                                
    ERR(I)=.FALSE. if the approximation of the I-th root has  been     
           carried out successfully, i.e., the computed approximation  
           can be viewed as the exact root of a slightly perturbed     
           polynomial.                                                 
    ERR(I)=.TRUE. if more iterations are needed for the I-th  root.    
  The file contains also the number ITER of iterations needed by the   
  algorithm.                                                           
  If there exist roots which cannot be represented without overflow or 
  underflow, then the corresponding components of RADIUS are set to -1 
                                                   
  The parameter MAXDEG equals the maximum allowed degree; this value,  
  which is set to 500 by default, can be adjusted according to the     
  user needs.                                                          
  The parameters EPS, SMALL, BIG are related to the floating point     
  arithmetic used by the computer and have the following meaning and   
  default values (standard IEEE arithmetic)                            
       EPS  =1.1102230246252D-16  : machine precision                  
       SMALL=4.9406564584126D-324 : smallest positive real*8           
       BIG  =1.7976931348622D+308 : largest real*8                     
  The parameter NITMAX is the maximum number of allowed iterations.    
  This value is set to 30 by default.                                  
                                             
  WARNING: 2 is the output unit, 3 is the input unit    

  The files *.res contain the outputs obtained by running the program
  on a 586 (standard IEEE arithmetic) under the Linux operating system
  where the programs have been compiled with the f2c compiler.
 
