123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- *DECK RPZERO
- SUBROUTINE RPZERO (N, A, R, T, IFLG, S)
- C***BEGIN PROLOGUE RPZERO
- C***PURPOSE Find the zeros of a polynomial with real coefficients.
- C***LIBRARY SLATEC
- C***CATEGORY F1A1A
- C***TYPE SINGLE PRECISION (RPZERO-S, CPZERO-C)
- C***KEYWORDS POLYNOMIAL ROOTS, POLYNOMIAL ZEROS, REAL ROOTS
- C***AUTHOR Kahaner, D. K., (NBS)
- C***DESCRIPTION
- C
- C Find the zeros of the real polynomial
- C P(X)= A(1)*X**N + A(2)*X**(N-1) +...+ A(N+1)
- C
- C Input...
- C N = degree of P(X)
- C A = real vector containing coefficients of P(X),
- C A(I) = coefficient of X**(N+1-I)
- C R = N word complex vector containing initial estimates for zeros
- C if these are known.
- C T = 6(N+1) word array used for temporary storage
- C IFLG = flag to indicate if initial estimates of
- C zeros are input.
- C If IFLG .EQ. 0, no estimates are input.
- C If IFLG .NE. 0, the vector R contains estimates of
- C the zeros
- C ** Warning ****** If estimates are input, they must
- C be separated; that is, distinct or
- C not repeated.
- C S = an N word array
- C
- C Output...
- C R(I) = ith zero,
- C S(I) = bound for R(I) .
- C IFLG = error diagnostic
- C Error Diagnostics...
- C If IFLG .EQ. 0 on return, all is well.
- C If IFLG .EQ. 1 on return, A(1)=0.0 or N=0 on input.
- C If IFLG .EQ. 2 on return, the program failed to converge
- C after 25*N iterations. Best current estimates of the
- C zeros are in R(I). Error bounds are not calculated.
- C
- C***REFERENCES (NONE)
- C***ROUTINES CALLED CPZERO
- C***REVISION HISTORY (YYMMDD)
- C 810223 DATE WRITTEN
- C 890206 REVISION DATE from Version 3.2
- C 891214 Prologue converted to Version 4.0 format. (BAB)
- C***END PROLOGUE RPZERO
- C
- COMPLEX R(*), T(*)
- REAL A(*), S(*)
- C***FIRST EXECUTABLE STATEMENT RPZERO
- N1=N+1
- DO 1 I=1,N1
- T(I)= CMPLX(A(I),0.0)
- 1 CONTINUE
- CALL CPZERO(N,T,R,T(N+2),IFLG,S)
- RETURN
- END
|