home *** CD-ROM | disk | FTP | other *** search
- C
- C ..................................................................
- C
- C SUBROUTINE PQFB
- C
- C PURPOSE
- C TO FIND AN APPROXIMATION Q(X)=Q1+Q2*X+X*X TO A QUADRATIC
- C FACTOR OF A GIVEN POLYNOMIAL P(X) WITH REAL COEFFICIENTS.
- C
- C USAGE
- C CALL PQFB(C,IC,Q,LIM,IER)
- C
- C DESCRIPTION OF PARAMETERS
- C C - INPUT VECTOR CONTAINING THE COEFFICIENTS OF P(X) -
- C C(1) IS THE CONSTANT TERM (DIMENSION IC)
- C IC - DIMENSION OF C
- C Q - VECTOR OF DIMENSION 4 - ON INPUT Q(1) AND Q(2) MUST
- C CONTAIN INITIAL GUESSES FOR Q1 AND Q2 - ON RETURN Q(1)
- C AND Q(2) CONTAIN THE REFINED COEFFICIENTS Q1 AND Q2 OF
- C Q(X), WHILE Q(3) AND Q(4) CONTAIN THE COEFFICIENTS A
- C AND B OF A+B*X, WHICH IS THE REMAINDER OF THE QUOTIENT
- C OF P(X) BY Q(X)
- C LIM - INPUT VALUE SPECIFYING THE MAXIMUM NUMBER OF
- C ITERATIONS TO BE PERFORMED
- C IER - RESULTING ERROR PARAMETER (SEE REMARKS)
- C IER= 0 - NO ERROR
- C IER= 1 - NO CONVERGENCE WITHIN LIM ITERATIONS
- C IER=-1 - THE POLYNOMIAL P(X) IS CONSTANT OR UNDEFINED
- C - OR OVERFLOW OCCURRED IN NORMALIZING P(X)
- C IER=-2 - THE POLYNOMIAL P(X) IS OF DEGREE 1
- C IER=-3 - NO FURTHER REFINEMENT OF THE APPROXIMATION TO
- C A QUADRATIC FACTOR IS FEASIBLE, DUE TO EITHER
- C DIVISION BY 0, OVERFLOW OR AN INITIAL GUESS
- C THAT IS NOT SUFFICIENTLY CLOSE TO A FACTOR OF
- C P(X)
- C
- C REMARKS
- C (1) IF IER=-1 THERE IS NO COMPUTATION OTHER THAN THE
- C POSSIBLE NORMALIZATION OF C.
- C (2) IF IER=-2 THERE IS NO COMPUTATION OTHER THAN THE
- C NORMALIZATION OF C.
- C (3) IF IER =-3 IT IS SUGGESTED THAT A NEW INITIAL GUESS BE
- C MADE FOR A QUADRATIC FACTOR. Q, HOWEVER, WILL CONTAIN
- C THE VALUES ASSOCIATED WITH THE ITERATION THAT YIELDED
- C THE SMALLEST NORM OF THE MODIFIED LINEAR REMAINDER.
- C (4) IF IER=1, THEN, ALTHOUGH THE NUMBER OF ITERATIONS LIM
- C WAS TOO SMALL TO INDICATE CONVERGENCE, NO OTHER PROB-
- C LEMS HAVE BEEN DETECTED, AND Q WILL CONTAIN THE VALUES
- C ASSOCIATED WITH THE ITERATION THAT YIELDED THE SMALLEST
- C NORM OF THE MODIFIED LINEAR REMAINDER.
- C (5) FOR COMPLETE DETAIL SEE THE DOCUMENTATION FOR
- C SUBROUTINES PQFB AND DPQFB.
- C
- C SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
- C NONE
- C
- C METHOD
- C COMPUTATION IS BASED ON BAIRSTOW'S ITERATIVE METHOD. (SEE
- C WILKINSON, J.H., THE EVALUATION OF THE ZEROS OF ILL-CON-
- C DITIONED POLYNOMIALS (PART ONE AND TWO), NUMERISCHE MATHE-
- C MATIK, VOL.1 (1959), PP. 150-180, OR HILDEBRAND, F.B.,
- C INTRODUCTION TO NUMERICAL ANALYSIS, MC GRAW-HILL, NEW YORK/
- C TORONTO/LONDON, 1956, PP. 472-476.)
- C
- C ..................................................................
- C
- SUBROUTINE PQFB(C,IC,Q,LIM,IER)
- C
- C
- DIMENSION C(1),Q(1)
- C
- C TEST ON LEADING ZERO COEFFICIENTS
- IER=0
- J=IC+1
- 1 J=J-1
- IF(J-1)40,40,2
- 2 IF(C(J))3,1,3
- C
- C NORMALIZATION OF REMAINING COEFFICIENTS
- 3 A=C(J)
- IF(A-1.)4,6,4
- 4 DO 5 I=1,J
- C(I)=C(I)/A
- CALL OVERFL(N)
- IF(N-2)40,5,5
- 5 CONTINUE
- C
- C TEST ON NECESSITY OF BAIRSTOW ITERATION
- 6 IF(J-3)41,38,7
- C
- C PREPARE BAIRSTOW ITERATION
- 7 EPS=1.E-6
- EPS1=1.E-3
- L=0
- LL=0
- Q1=Q(1)
- Q2=Q(2)
- QQ1=0.
- QQ2=0.
- AA=C(1)
- BB=C(2)
- CB=ABS(AA)
- CA=ABS(BB)
- IF(CB-CA)8,9,10
- 8 CC=CB+CB
- CB=CB/CA
- CA=1.
- GO TO 11
- 9 CC=CA+CA
- CA=1.
- CB=1.
- GO TO 11
- 10 CC=CA+CA
- CA=CA/CB
- CB=1.
- 11 CD=CC*.1
- C
- C START BAIRSTOW ITERATION
- C PREPARE NESTED MULTIPLICATION
- 12 A=0.
- B=A
- A1=A
- B1=A
- I=J
- QQQ1=Q1
- QQQ2=Q2
- DQ1=HH
- DQ2=H
- C
- C START NESTED MULTIPLICATION
- 13 H=-Q1*B-Q2*A+C(I)
- CALL OVERFL(N)
- IF(N-2)42,14,14
- 14 B=A
- A=H
- I=I-1
- IF(I-1)18,15,16
- 15 H=0.
- 16 H=-Q1*B1-Q2*A1+H
- CALL OVERFL(N)
- IF(N-2)42,17,17
- 17 C1=B1
- B1=A1
- A1=H
- GO TO 13
- C END OF NESTED MULTIPLICATION
- C
- C TEST ON SATISFACTORY ACCURACY
- 18 H=CA*ABS(A)+CB*ABS(B)
- IF(LL)19,19,39
- 19 L=L+1
- IF(ABS(A)-EPS*ABS(C(1)))20,20,21
- 20 IF(ABS(B)-EPS*ABS(C(2)))39,39,21
- C
- C TEST ON LINEAR REMAINDER OF MINIMUM NORM
- 21 IF(H-CC)22,22,23
- 22 AA=A
- BB=B
- CC=H
- QQ1=Q1
- QQ2=Q2
- C
- C TEST ON LAST ITERATION STEP
- 23 IF(L-LIM)28,28,24
- C
- C TEST ON RESTART OF BAIRSTOW ITERATION WITH ZERO INITIAL GUESS
- 24 IF(H-CD)43,43,25
- 25 IF(Q(1))27,26,27
- 26 IF(Q(2))27,42,27
- 27 Q(1)=0.
- Q(2)=0.
- GO TO 7
- C
- C PERFORM ITERATION STEP
- 28 HH=AMAX1(ABS(A1),ABS(B1),ABS(C1))
- IF(HH)42,42,29
- 29 A1=A1/HH
- B1=B1/HH
- C1=C1/HH
- H=A1*C1-B1*B1
- IF(H)30,42,30
- 30 A=A/HH
- B=B/HH
- HH=(B*A1-A*B1)/H
- H=(A*C1-B*B1)/H
- Q1=Q1+HH
- Q2=Q2+H
- C END OF ITERATION STEP
- C
- C TEST ON SATISFACTORY RELATIVE ERROR OF ITERATED VALUES
- IF(ABS(HH)-EPS*ABS(Q1))31,31,33
- 31 IF(ABS(H)-EPS*ABS(Q2))32,32,33
- 32 LL=1
- GO TO 12
- C
- C TEST ON DECREASING RELATIVE ERRORS
- 33 IF(L-1)12,12,34
- 34 IF(ABS(HH)-EPS1*ABS(Q1))35,35,12
- 35 IF(ABS(H)-EPS1*ABS(Q2))36,36,12
- 36 IF(ABS(QQQ1*HH)-ABS(Q1*DQ1))37,44,44
- 37 IF(ABS(QQQ2*H)-ABS(Q2*DQ2))12,44,44
- C END OF BAIRSTOW ITERATION
- C
- C EXIT IN CASE OF QUADRATIC POLYNOMIAL
- 38 Q(1)=C(1)
- Q(2)=C(2)
- Q(3)=0.
- Q(4)=0.
- RETURN
- C
- C EXIT IN CASE OF SUFFICIENT ACCURACY
- 39 Q(1)=Q1
- Q(2)=Q2
- Q(3)=A
- Q(4)=B
- RETURN
- C
- C ERROR EXIT IN CASE OF ZERO OR CONSTANT POLYNOMIAL
- 40 IER=-1
- RETURN
- C
- C ERROR EXIT IN CASE OF LINEAR POLYNOMIAL
- 41 IER=-2
- RETURN
- C
- C ERROR EXIT IN CASE OF NONREFINED QUADRATIC FACTOR
- 42 IER=-3
- GO TO 44
- C
- C ERROR EXIT IN CASE OF UNSATISFACTORY ACCURACY
- 43 IER=1
- 44 Q(1)=QQ1
- Q(2)=QQ2
- Q(3)=AA
- Q(4)=BB
- RETURN
- END