Algorithm 419 Zeros of A Complex Polynomial 1-C2) : L.D. Fosdick Algorithms Editor

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

Submittal of an algorithm for consideration for publication in

L.D. Fosdick Communications of the ACM implies unrestricted use of the


Algorithms Editor algorithm within a computer is permissible.
Editor's note: The algorithms described here are available on magnetic which describe the precision and range of the floating point arith-
tape from the Department of Computer Science, University of metic being used. Instructions for setting M C O N variables are given
Colorado, Boulder, CO 80302. The cost .for the tape is $16.00 (U.S. in the M C O N comments. The algorithm will accept polynomials of
and Canada) or $18.00 (elsewhere). I f the user sends a small tape maximal degree 49.
(wt. less than 1 lb.) the algorithms will be copied on it and returned
The authors would like to thank K. Paciorek and M.T. Dolan
to him at a charge of $10.O0 (U.S. only). All orders are to be prepaid
with checks payable to A C M Algorithms. The algorithm is recorded for their assistance in preparing the Fortran version of the program
as one file o f BCD 80 character card images at 556 B.P.I., even and P. Businger and C. Lawson for suggesting improvements to the
parity, on seven track tape. We will supply the algorithm at a program.
density o f 800 B.P.I. i f requested. The cards for the algorithms are
sequenced starting at 10 and incremented by 10. The sequence number References
is right justified in column 80. Although we will make every attempt 1. Traub, J.F. A class of globally convergent iteration functions
to insure that the algorithm conforms to the description printed here, for the solution of polynomial equations. Math. Comp. 20 (1966),
we camlot guarantee it, nor can we guarantee that the algorithm is
113-138.
correct.---L.D.F.
2. Traub, J.F. The calculation of zeros of polynomials and
analytic functions. In Mathematical Aspects of Computer Science,
Proceedings Symposium Applied Mathematics, Fol. 19, Amer.
Math. Soc., Providence, R.I., 1967, pp. 138-152.
3. Jenkins, M.A. Three-stage variable-shift iterations for the
Algorithm 419 solution of polynomial equations with a posteriori error bounds
for the zeros. Diss., Rep. CS 138, Comput. Sci. Dep., Stanford U.,
Stanford, Cal., 1969.
4. Jenkins, M.A., and Traub, J.F. A three-stage variable-shift
Zeros of a Complex iteration for polynomial zeros and its relation to generalized
Rayleigh iteration. Numer. Math. 14 (1970), 252-263.
Polynomial 1-C2] 5. Jenkins, M.A., and Traub, J.F. A three-stage algorithm for
real polynomials using quadratic iteration. S l A M J. Numer. Anal.
7 (1970), 545-566.
M.A. Jenkins
Queen's University, Kingston, Ontario, Canada Algorithm
and SUBROUTINE CPOLYIOPRtOPleDEGREE,ZERGR,ZEROItEAILI
J.F. Traub* [Recd. 10 Aug. 1970] C
C
FINDS THE ZEROS OF A COMPLEX POLYNOMIAL.
OPR, OPT DOUBLE PRECISION VECTORS OF REAL AND
Department of Computer Science, Carnegie-Mellon C
C
IMAGINARY PARTS OF T H E COEFFICIENTS I N
ORDER OF DECREASING POWERS.
University, Pittsburgh, PA 15213 C
C
DEGREE
ZEROR, Z E R O I
INTEGER DEGREE OF POLYNOMIAL.
O U I P U TDOUBLE PRECISION VECTORS OF
C REAL AND IMAGINARY PARTS OF THE ZEROS.
C FAIL OUTPUT LOGICAL PARAMETERt TRUE ONLY IF
C LEADING COEFFICIENT IS ZERO OR IF CPOLY
C HAS FOUND FEWER THAN DEGREE ZEROS.
Key Words and Phrases: roots, roots of a polynomial, zeros of a C THE PROGRAM HAS BEEN WRITTEN TO REDUCE THE CHANCE OF OVERFLOW
polynomial C OCCURRING. IF IT DOES OCCURt THERE I S STILL A POSSIBILITY [HAT
C THE ZEROFINDER WILL WORK PROVIDEO THE OVERFLOWED QUANTITY IS
CR Categories: 5.15 C REPLACED BY A LARGE NUMBER.
C COMMONA R E A
COMNON/GLOBAL/PRePIeHR,HI,QPRtQPI,QHRtQHI,SHR=SH|,
Description * SR,SIoTR,T|~PVR,PVI,AREIMRE,ETA,INFIN,NN
DOUBLE PRECISION SR,SI~TR,TI,PVR,PVItARE,MREtETA,I N F I ~ t
The subroutine CPOL Y is a Fortran program to find all the * PR(SO),PlI50),HRISOItHI(SO)IQPRlSO),QPIISO),QHRlSO)e
* QHI(50),SHR(SOItSHI(50)
zeros of a complex polynomial by the three-stage complex algorithm C TO CHANGE THE S I Z E OF POLYNOMIALS WHICH CAN BE SOLVED, REPLACE
described in Jenkins and Traub [4]. (An algorithm for real poly- C THE DIMENSICN OF THE ARRAYS IN THE COMMON AREA.
DOUBLE PRECISION XX,YY.COSR,SINR,SMALNO,BASE,XXX,ZR,ZI,BND,
nomials is given in [5].) The algorithm is similar in spirit to the * OPRII|tOPIIII,ZEROR(LI,ZEROIII)~
* CMOD,SCALEtCAUCHYtDSURT
two-stage algorithms studied by Traub [1, 2]. The program finds the LOGICAL FAIL,CONV
zeros one at a time in roughly increasing order of modulus and INTEGER OEGREE,CNTLtCNT2
C I N I T I A L I Z A T I O N OF CONSTANTS
deflates the polynomial to one of lower degree. The program is CALL MCCN(ETA,INFIN,SMALNO,BASE)
ARE = ETA
extremely fast and the timing is quite insensitive to the distribution MRE = 2.0DO*DSQRTIZ.OO0)*ETA
of zeros. Extensive testing of an Algol version of the program,. XX = . 7 0 7 1 0 6 7 B
YY = - X X
reported in Jenkins [3], has shown the program to be very reliable. COSR = - . 0 6 0 1 5 6 6 7 6
SINR = . 9 q 7 5 6 6 0 ~
The program is written in a portable subset of ANSI Fortran. FAIL = .FALSE.
It has been successfully used on the IBM 360/65, the G E 635 and NN = DEGREE~L
C ALGORITHM FAILS IF I~6 LEADING COEFFICIENT IS ZERO.
the CDC 6600. The program is a translation of the Algol 60 pro- IF {OPRIL) . ' i : . ~.000 .OR. O P I I I I .ME. O.0DO) GO TO LO
FAIL = . T ' U , - .
cedure cpolyzerofinder appearing in [3]. RETURN
MCON, the final subroutine of the program, sets four variables C REMOVE IHE ZEROS AT THE ORIGIN IF ANY.
lO IF {OPR(NNI .ME. O.DO0 .OR. OPIINN) .NE. 0.000| GO TO 2 0
Copyright © 1972, Association for Computing Machinery, Inc. IDNN2 = DEGREE-NN*2
ZERQRIIDNNZI = O.ODO
General permission to republish, but not for profit, an algorithm ZERDI|IDNNZ} = O.OO0
is granted, provided that reference is made to this publication, to NN = NN-I
G O TO IO
its date of issue, and to the fact that reprinting privileges were C MAKE A COPY OF THE COEFFICIENTS,
granted by permission of the Association for Computing Machinery. 20 DO ~0 I = lyNN
PR(II = OPRII)
* This work was done while J.F. Traub was at Bell Telephone Pill) : OPIII)
Laboratories. SHRIll : CMODIPRIIItPI{Ill

97 Communications February 1972


of Volume 15
the ACM Number 2
30 CONTINUE
C SCALE THE PCLYNOMIAL. N = NN-I
BNO = SCALE INNmSHR,ETA,INFIN,SMALNOeOASE) C EVALUATE P AT S,
IF (BND .EQ. I.OOO) GO TO 6 0 CALL POLYEVINNwSRtSIvPKtPI,QPReOP[tPVRtPVII
00 3 5 I = l t N N TEST = .TRUE.
PR(II = BND=PR(I) PASO = .FALSE.
Pill) = 8ND*PI(II C CALCULATE FIRST T = -PIS)/HIS),
35 CONTINUE CALL CALCT(DOOL)
C START T H E ALGORITHM FOR ONE ZERO. G MAIN LOOP FCR ONE SECOND STAGE STEP.
¢0 IF (NN. GT. 2) GO TO S0 DO 50 J = I , L 2
C C A L C U L A T E T H E F I N A L ZERO A N D RETURN. OTR = TR
CALL COIVIO(-PRIZlt-PII2I,PR(II,PIIII,ZERORIDEGREE)t Oil = Tl
* ZERGIIDEGREEI) G COMPUTE NEXT H POLYNOMIAL AND NEW T.
RETURN CALL NEXTHIUOOL)
G C A L C U L A T E B N D , A LOWER BOUND ON T H E MODULUS OF THE Z E R O S . CALL CALCTIBOOLI
5 0 DO 6 0 I = I t N N ZR = SR+TR
SHRIll = CMOOIPRIlI~PI(III Z l = SI÷TI
60 CONTINUE C TEST FOR CONVEROENC~ UNLESS STAGE 3 HAS FAILED ONCE OR THIS
BND = C A U C H Y I N N f S H R t S H I ) C IS THE LAST H POLYNOMIAL,
C OUTER LOOP TO CONTROL 2 MAJOR P A S S E S WITH DIFFERENT SEQUENCES IF ( BOOL .OR. .NOT. TEST .OR. J .EQ. L2) GO TO 50
C OF S H I F T S . IF (CMODITR-OTR,TI-OTII .GE. .SDO*CMODIZRtZI)) G3 T3 40
DO I O O CNTI = 1,2 IF (.NOT. P A S D ) GO TO 3 0
C FIRST STAGE CALCULATIONt NO SHIFT. C THE WEAK CONVERGENCE TEST HAS BEEN PASSED TWICE, START THE
CALL N O S H F T ( S ) C THIRD STAGE ITERATIUNt AFTER SAVING THE CURRENT H POLYNOMIAL
C INNER LOOP TO SELECT A SHIFI. C AND S H I F T .
DO qO CNT2 = leg DO I O I = I , N
C SHIFT IS CHOSEN WITH MODULUS BND AND AMPLITUDE ROTATED BY
SHR(I)= HRll)
C q A DEGREES FROM THE PREVIOUS SHIFT.
XXX = COSRtXX-SINR~YY SHill) = Hill)
YY = SINReXX*COSReYY 10 CONTINUE
S V S R = SR
XX = XXX
SR = BND*XX SVSI = S I
ST = BND~YY CALL VRSHFT(IO,ZR,ZI,CDNV)
IF (CONV) RETURN
C SECOND STAGE CALCULATION, FIXED SHIFT.
C THE ITERATION FAILED TO CONVERGE. TURN OFF TESTING AND RESTORE
CALL FXSHFIIIO*CNT2tZR,ZI,CONV)
C HtStPV ANO T .
IF (.NOT. CONV) GO TO 80
T E S T = .FALSE.
C THE SECOND STAGE JUMPS DIRECTLY TO THE THIRD STAGE ITERATION.
C IF SUCCESSFUL THE ZERO IS SFORED AND THE POLYNOMIAL DEFLATEO. DO 20 I = ) i N
HR(II = SHRIll
IDNN2 = DEGREE-NN+2
H I l l ) = SHI(1)
ZEROR(IDNN2I = ZR
20 CONTINUE
ZEROI(IONNZ) = Z I
SR = SVSR
NN = N N - I
SI = SVSI
O0 7 0 I = I t N N
CALL POLYEVINN,SR,SItPRtPItQPRtQPI,PVR~PVI)
PRIII = QPR(I)
CALL CALCT(BOOL)
PlIll = QPIll)
GO 1 0 5 0
70 CONTINUE
30 PASO = . T R U E .
GO TO AO
GO TO 5 0
80 CONTINUE
40 PASO = . F A L S E .
C I F THE ITERATION IS U N S U C C E S S F U L ANOTHER S H I F T IS CHOSEN.
50 CONTINUE
90 CONTINUE
C ATTEMpt AN ITERATION WITH FINAL H POLYNOMIAL FROM SECOND STAGE.
C IF 9 SHIFTS FAIE~ THE OUTER LOOP IS REPEATED WITH ANOTHER
CALL VRSHFTIIO,ZR,ZIfCONVI
C SEQUENCE OF SHIFTS.
RETURN
tOO CONTINUE
END
C THE ZEROFINOER HAS FAILED ON TWO MAJOR PASSES.
S U B R O U T I N E VRSHFTILO,ZR,ZIICONV)
C R E T U R N EMPTY H A N D E D .
C CARRIES OUT THE THIRD SFAGE ITERATION.
FAIL = .TRUE.
C L3 - LIMIT OF STEPS IN STAGE 3 .
RETURN
C ZRvZl - Oh ENTRY CONTAINS THE I N I T I A L ITERATE, IF THE
END
C ITERATION C~NVERGES IT CONTAINS T H E FINAL ITERATE
SUBROUTINE NOSHFTILI)
C ON EXIT.
C COMPUTES THE OERIVATIVE P O L Y N O M I A L AS THE I N I T I A L H
C CONV - .TRUE. IF ITERATION CONVERGES
C POLYNOMIAL ANO COMPUTES L I N O - S H I F T H POLYNOMIALS.
C COMMON A R E A
C COMMON AREA
COMMON/GLOBAL/PKtPI,HRIHItQPR,QPI,QHR~QHI,SHRtSHI,
CQNMON/GLOBAL/PK~PIwHRtHIwQPReQPI,QHReQHIvSHRvSHI,
SRtSI,TRtTIwPVR.PVItARE,MRE,ETAtlNFIN,NN
* SR, SI,TR,TIePVR,PVI,AREtMRE,ETA~INFIN,NN
DOUBLE PRECISION SR,SI,IR,TI~PVR,PVI,ARE,MRE.ETA,INFIN,
DOUBLE PRECISION S R , S I , I R , T I , P V R , P V I t A R E . M R E , E T A , I N F I N ,
* PRlSO),PI(SO),HRiSO),HII5OI,QPR(SOItOPI(SOI,QHRiSO)t
* PRISOI,PIISO),HRlSO)tHIlSOItQPRISO),QPIISOl,QHRlSOI,
* QHI(SO),SHRISOI~SHII50)
* QHIISO)tSHRI5OI,SHI(50)
DOUBLE P R E C I S I O N ZR,ZI,MP,MS,OMP,RELSTP,RI,RZ,CMOD,DSQRTtERREVtTP
DOUBLE P R E C I S I O N XNItTItT2,CMOD
LOGICAL CONV,BeBOOL
N = NN-I
CONV = .FALSE.
NM[ = N - |
B = .FALSE.
DO l O I = l ~ N
SR = ZR
XNI = NN-I
SI = Zl
HR(I) = XNI*PRII)/FLOATINI
C MAIN LOOP FGR STAGE T H R E E .
Hill) = XNI*PIIII/FLOATIN)
DO bO I = 1 , L 3
IO CONTINUE
C EVALUATE P AT S AND TEST FOR CONVERGENCE.
00 SO JJ = I ~ L I CALL POLYEVINNtSRtSIfPR~PIeQPR,QPI,PVRIPVI}
IF ICMODIHRINI~HIIN)I . L E . ETA$IO,ODO*CM00(PRIN),PIINII) MP = CMOOIPVR,PVI)
* GO TO 3 0 MS = CMOO(SR,SII
CALL COIVID(-PR(NN)t-PIINN),HR(NI,HI(NltTR,TI) I F IMP .GT. 20.ODO~ERREVINN,QPR,QPI,MSeMPtARE,MRE|)
00 20 l = I,NMI GO TO l O
J = NN-I C POL NDMIAL VALUE IS SMALLER IN VALUE THAN A BOUND ON THE ERROR
TI = HKIJ-I) C IN EVALUATING P~ TERMINATE T H E ITERATION.
T2 = H I ( J - l ) CONV = . T R U E .
HRIJ) = [R~TI-II=TZ÷PR(J) ZR = SR
HIIJ) = TR*T2÷TI*TI+PIIJ) ZI = SI
20 CONTINUE RETURN
HRII) = PR(I) IO IF (I .EQ. I ) GO TO 4 0
Hl(ll = PIll) I F (B .OR. MP .LT.OMP .OR. RELSTP .GE. .OSDO)
GO TO 5 0 GO TO 3 0
C I F THE CONSTANT TERM IS ESSENTIALLY ZERO, S H I F T H CDEFFICIEWTS. C ITE ATION HAS STALLED. PROBABLY A CLUSTER OF ZEROS. DO 5 FIXED
30 O0 40 I = I t N M I C SHIFT STEPS INTO THE CLUSTER TO FORCE ONE ZERO TO DOMINATE.
J ~ NN-I T? - ~ L S T P
HRIJ) ~ HRIJ-I) B = .TRUE.
H I I J ) = HI(J-l) IF ( R E L S T P . L T . ETA) T P = ETA
~O CONTINUE R I = DSQRTiTP)
H R I [ ) = 0.000 R2 = S R * i I . O D O + R I I - S I * R I
Hill) = O.OUO SI = S R ~ R I + S I * I I . O O O ÷ R I )
50 CONTINUE SR = R2
RETURN CALL POLYEVINN~SRtSI,PRtPI,QPR,QPI,PVR,PVI)
END DO 2 0 J = l v S
SUBROUTINE FXSHEEIL2,ZR,ZI,CONV) CALL C A L C T ( B O O L )
C COMPUTES L 2 F I X E D - S H I F T H P O L Y N O M I A L S A N D T E S T S FOR CALL NEXTHIBOOL)
C CONVERGENCE. 20 CONTINUE
C INITIATES A VARIABLE-SHIFT IFERAIION AND R E T U R N S W I T H THE OMP = INFIN
C APPROXIMATE ZER0 I F SUCCESSFUL. GO TO 5 0
C L2 - LIMIT CF FIXED SHIFT SIEPS C EXIT IF POLYNOMIAL VALUE INCREASES SIGNIFICANTLY.
C ZR~ZI - APPROXIMATE ZERO IF CONV IS .TRUE. 30 IF IMP*.IOO ,GT. OMP) RETURN
C CONV - LOGICAL INDICATING CONVERGENCE OF STAGE 3 ITERATION 40 OMP = MP
C COMMONA R E A C C A L C U L A T E NEXT ITERATE.
COMMON/DLOBALIPH,PI,HR,HI,QPR~QPI.QHR,QHI~SHR,SHIt 50 CALL CALCTiBOOLI
* SRtSI~TR,TI~PVR,PVItARE,MREtETA,INFINtNN C A L L NEXTHIBOOL)
DOUBLE PRECISION S R , S I ~ I R , T I , P V R , P V I , A R E , M R E , E T A ~ I N F I N ~ C A L L CALCT(BOOL)
PRISOI,PIlSOI,HRlSOl~HIISO),QPRI5OI,QPlISO)tOHRISO), IF ( B O O L ) GO TO 6 0
QHI(SO)~SHRISOItSHI(SO) RELSTP = CMUDITR,TII/CMODISReSI|
DOUBLE PRECISION ZR,ZI,OTR,OTItSVSR,SVSI,GMOO SR = SR+TR
LOGICAL CONV,TEST,PASO~BOOL S! = SI÷TI

98 Communications February 1972


of Volume 15
the ACM Number 2
60 CONTINUE 50 IF (OABSIDX/X) .LE. .OOSDOI GO TO 7 0
RETURN Oil) = PIll)
END DO BO I = 2 e N N
SUBROUTINE CALCI(BOOL) OIl) = O(I-1I*X+PTII)
C COMPUTES T = -PISIIHIS). 60 CONTINUE
C BDOL - LOGICAL, SET IRUE IF HIS) IS ESSENTIALLY ZERO. F = QINN)
C COMMONAREA DF = D i l l
COMNONIGLDBALIPR, P) ~HR~HI t QPR*QP I t OHRtQHI t SHR,SHI t DO 6 5 I = 2 I N
* SRt SI , T R t t l , PVRt PVI ,ARE~MRE~ETA, INF INtNN OF = DF*X÷QII)
DOUBLE PRECISION SR,SI,TRtTI,PVR~PVI,ARE,MREwETAwINFIN, 65 CONTINUE
* PRI 5Ol,P I lSOl tHR1501 tHI (50) tQPR(50) eOPI (50I tQHR| 50), DX = F/DE
* QHI (501 ,SHR(SO) t SHI (50) X = X-DX
DOUBLE PRECISION HVRtHVIeCMOD GO TO 50
LOGICAL BOOL 70 CAUCHY = X
N = NN-I RETURN
C EVALUATE HIST. ENO
CALL POLYEV(N~SR, S I , H R , H I t QHR,QHI,HVR,HVI ) DOUBLE PRECISION FUNCTION SCALEINNwPT,ETA,INFIN,SMALNO, BASE}
BOOL = CMODIHVR,HVI) . L E . AREe|O.ODO=CNDDIHRIN)tHI(N)) C RETURNS A SCALE FACTOR TO MULTIPLY THE COEFFICIENTS OF THE
IF IBOOL| GO TO l O C POLYNOMIAL. THE SCALING IS DONE TO AVOID OVERFLOW AND TO AVBID
CALL CDI VID I-PVR*-PVI ~HVR t H V I f T R e T I I C UNDETECTED UNDERFLOw INTERFERING WITH THE CONVERGENCE
RETURN C CRITERION. THE FACTOR IS A POWER OF THE BASE.
IO TR = OoODO C PT - MODULUS OF COEFFICIENTS OF P
TI = O.ODO C ETAtINFINtSMALNOyBASE - CONSTANTS DESCRIBING THE
RETURN C FLOATING P O I N T ARITHMETIC.
END DOUBLE PRECISION PTINNI,ETA,INFIN,SMALNO,BASE,HIyLO,
S U B R O U T I N E N E X T H ( BOOL ) MAX,MIN,X,SC,DSQURTtDLOG
C CALCULATES T H E N E X T SHIFTED H POLYNOMIAL . C FIN LARGEST AND SMALLEST MDDULI OF COEFFICIENTS.
C BOOL LOGICAL, I F .TRUE. H I S I I S ESSENTIALLY ZERO HI = DSQRT(INFIN)
C COMMONAREA LO = SMALNO/ETA
COMMONIGLOBALIPRtPl tHR,HI vQPR~QPI,QHRtOHI wSHRtSHI e MAX = O.ODO
* SRt SI t TRv TI IPVRt PVI ~ARE,MRE,ETA, INF I N t NN MIN = [NFIN
DOUBLE PRECISION S R , S I , I R t T I , P V R , P V I ~ A R E , M R E , E I A , I N F I N , DO [ O I = I , N N
ww P R ( 5 0 ) , * P I ( S O ) e H R ( SO ) ~ H I ( B O ) , Q P R ( 5 O I , O P I ( 5 0 ) ~ O H R ( 5 0 ) ~ X = Pill)
* QHI (50) ~SHR150) ,SHI ( 501 IF IX .GT. MAX) MAX = X
DOUBLE PRECISION T I . T 2 IF (X .NED O.ODO .AND. X.LT.MIN) MIN = X
LOGICAL BOOL IO CONTINUE
N = NN-I C SCALE ONLY IF THERE ARE VERY LARGE OR VERY SMALL COMPDNENIS.
NMI = N - I SCALE = I.ODO
IF IBOOL) GO TO 2 0 IF IMIN .GEo LO .AND. MAX . L E . H I ) RETURN
DO t O J = Z=N X = LOIPIN
Tl = QHR(J-I) I F I X .GT. I.ODO) GO TO 20
TZ = Q H I I J - I ) SC = I.OOO/(DSQRTIMAX)*DSQRTIMINI)
GO TO 30
H R I J ) = TR*TI-TI=TZ÷QpR(J) 20 SC = X
H I I J ) = TR*TZeTI~'TI+QPI(J) IF ( I N F I ~ I S C . G I . MAX) SC = I.ODO
IO CONTINUE
BO L = DLOGISC)/DLOGIBASE) ÷ .SOB
HRII) = QPR(I)
SCALE = BASE**L
HIll) = OPlll) RETURN
RETURN
END
C IF HIS) IS ZERO REPLACE H WITH QH,
SUBROUTINE C D I V I D ( A R , A I ~ B R , B I , C R , C I )
2 0 DO 3 0 J = Z , N
C COMPLEX DIVISION C = A/Bt AVOIDING OVERFLOW.
HRIJ) = QHRIJ-I)
DOUBLE PRECISION A R p A I t B R , B I , C R , C I t R , D t T v l N F I N , D A B S
HIIJ) = QHIIJ-I)
IF (DR .NE. O.ODO .OR. B) .NE. O.OOO) GO TO [O
BO CONTINUE
C DIVISION BY ZERO, C = I N F I N I T Y ,
HRII) = O.OOO
C~LL MCON ( T t I N F I N , T , T )
HIll) = O.OOO
CR = INFIN
RETURN
C) = INFIN
END
RETURN
S U B R O U T I N E P O L Y E V ( N N ~ SR~ S I , P R ~ P I ~UR~ OI ~ PVR~ PV1 )
lO IF (DABSIBR) . G t . DABSIBI)) GO TO 20
C EVALUATES A POLYNOMIAL P AT S BY THE HORNER RECURRENCE R = BR/BI
C PLACING THE PARTIAL SUMS IN Q AND THE COMPUTED VALUE IN PV.
D = BI÷R*BR
DOUBLE PRECISION P R ( N N I , P I I N N ) , O R I N N ) , Q I I N N ) , CR = ( A R * R ÷ A I I / D
* SReSI,PVR,PVI,T C) = (AI*R--ARIID
QRI1) = P R I I ) RETURN
Ol(l) = PIll)
20 R = BIIER
PVR = ORII)
D = BR÷R*BI
PVI = Oil[)
CR = ( A R ÷ A I * R I / D
DO I0 I = 2~NN
CI = ( A I - A R * R ) / D
T = PVR*SR-PVI*SI*PR(1)
RETURN
PVI = PVR*SI*PVI*SR÷PI(I)
END
PVR = T
DOUBLE PRECISION FUNCTION CMODIRwl)
Q R [ I ) = PVR
C MODULUS OF A COMPLEX NUMBER AVOIDING OVERFLOW.
QIIII = PVl
DOUBLE PRECISION R, ItARtAI,DABS,DSQURI
IO CONTINUE
AR = DABSIR)
RETURN
A[ = DABS(If
END
IF IAR .GE. A l l GO TO l O
DOUBLE PRECISION FUNCTION ERREVINN~QReOI,MS,MP,ARE~MRE) CMOC = A I * D S Q R I ( I . O D O ÷ ( A R / A I ) * * 2 )
C BOUNDS THE ERROR IN EVALUATING THE POLYNOMIAL BY THE HORNER RETURN
C RECURRENCE.
IO I F (AR . L E . A l l GO TO 20
C QR,QI -- THE PARTIAL SUMS
CMO0 = AR*OSORIII.ODO+IAIIAR)**2)
C MS -MODULUSOF IHE POINT RETURN
C MP -MODULUSOF POLYNOMIAL VALUE ZO CMOD = AR*DSQRIIZ.ODO)
C ARE. MRE -ERROR BOUNDS ON COMPLEX ADDITION AND MULTIPLICATIBN RETURN
DOUBLE PRECISION QRINN),QIINN),MS,MP,ARE~MRE~E~CMOD END
E = CMOCIUR|I)~)I(II)*HRE/IARE÷MRE) SUBROUTINE MCONIETA,INFINYtSMALNO,BASE)
OO t O I = I,NN
MCON PROVIDES MACHINE CONSTANTS USED IN VARIOUS PARTS OF T~E
E = E*MS÷CMODIQR(1)e~I(1)) PROGRAM. THE USER MAY FITHER SET THEM DIRECTLY OR USE THE
IO CONTINUE
STAIEMENTS BELOW TO COMPUTE THEM. THE MEANING OF IHE FOUR
ERREV = E*(ARE÷MRE)-MP*MRE CONSTANIS ARE -
RETURN
ETA THE MAXIMUM RELATIVE REPRESENTATION ERROR
END
WHICH CAN B E DESCRIBED AS THE SMALLEST POSITIVE
DOUBLE PRECISION FUNCTION CAUCHY(NN~PT~Q) FLOATING-POINT NUMBER SUCH THAT I.OOO ÷ ETA IS
C CAUCHY COMPUTES A LOWER BOUND ON THe MODULI OF THE ZEROS OF A GREATER THAN [.ODD.
C POLYNOMIAL - PT IS THE MODULUS OF THE COEFFICIENTS. INFINY T H E LARGEST FLOATING-POINT NUMBER
~OUBLE PRECISION QINNI,PTINN),X.XM,F,DX,OF~ SMALNO THE SMALLEST POSITIVE FLOATING-POINT NUMBER
* UABS,DEXP,DLOG BASE THE BASE OF THE FLOATING-POINT NUMBER sYSrEM USED
PTINN) = -PTINN) LET T BE THE NUMBER OF BASE-DIGITS IN EACH FLOATING-POINT
C COMPUTE UPPER ESTIMATE OF BOUND* NUMBERIDOUBLE PRECISION). THEN ETA IS EITHER . 5 * B * * ( I - T I
N = NN-Z OR B * * l t - r I DEPENDING ON WHETHER ROUNDING OR TRUNCATION
X = DEXP( (DLDGI-PTINN)) - D L O G I P T I I ) I ) / F L O A T I N ) ) I S USED.
I F IPTIhI.EO.O.CDO) GO TO 20 LET M BE THE LARGEST EXPONENT AND N IHE SMALLEST EXPONENT
C IF NEWTON STEP AT THE ORIGIN IS BEITER~ USE I T . IN THE NUMBER SYSTEM. THEN INFINY IS ( I - B A S E * * ( - I ) ) * B A S E * * q
XM = - P T I N N I / P T I N ) AND SMALNO IS BASE*=N.
IF (XM.LT.X) X=XM
THE VALUES FOR BASEiTtMtN BELOW CORRESPDND TO THE IBMI360.
C CHOP THE INIERVAL (O,X) U N I I L E l = O , DOUBLE PRECISION ETA, INFINY,SMALNOtBASE
20 XM = X*.IDO INTEGER MtNvT
F = Pill) BASE = I6.0DO
DO 3 0 I = Z , N N T = 14
F = F*XM~'PT(I) M = 63
30 CONTINUE N = -65
IF IF.LE. O . O D O ) . GO TO 40 ETA = BASE**II-TI
X = XM INFINY = B A S E * I I . O D O - B A S E * * I - T I ) * B A S E * * I M - I )
GO IO 2 0 SMALNO = I B A S E * * I N ÷ 3 I ) / B A S E * * 3
40 OX = X RETURN
C DO NEWTON ITERATION UNTIL X CONVERGES TO TWO DECIMAL PLACES . END

99 Communications February 1972


of Volume 15
the ACM Number 2

You might also like