123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- *DECK INITDS
- FUNCTION INITDS (OS, NOS, ETA)
- C***BEGIN PROLOGUE INITDS
- C***PURPOSE Determine the number of terms needed in an orthogonal
- C polynomial series so that it meets a specified accuracy.
- C***LIBRARY SLATEC (FNLIB)
- C***CATEGORY C3A2
- C***TYPE DOUBLE PRECISION (INITS-S, INITDS-D)
- C***KEYWORDS CHEBYSHEV, FNLIB, INITIALIZE, ORTHOGONAL POLYNOMIAL,
- C ORTHOGONAL SERIES, SPECIAL FUNCTIONS
- C***AUTHOR Fullerton, W., (LANL)
- C***DESCRIPTION
- C
- C Initialize the orthogonal series, represented by the array OS, so
- C that INITDS is the number of terms needed to insure the error is no
- C larger than ETA. Ordinarily, ETA will be chosen to be one-tenth
- C machine precision.
- C
- C Input Arguments --
- C OS double precision array of NOS coefficients in an orthogonal
- C series.
- C NOS number of coefficients in OS.
- C ETA single precision scalar containing requested accuracy of
- C series.
- C
- C***REFERENCES (NONE)
- C***ROUTINES CALLED XERMSG
- C***REVISION HISTORY (YYMMDD)
- C 770601 DATE WRITTEN
- C 890531 Changed all specific intrinsics to generic. (WRB)
- C 890831 Modified array declarations. (WRB)
- C 891115 Modified error message. (WRB)
- C 891115 REVISION DATE from Version 3.2
- C 891214 Prologue converted to Version 4.0 format. (BAB)
- C 900315 CALLs to XERROR changed to CALLs to XERMSG. (THJ)
- C***END PROLOGUE INITDS
- DOUBLE PRECISION OS(*)
- C***FIRST EXECUTABLE STATEMENT INITDS
- IF (NOS .LT. 1) CALL XERMSG ('SLATEC', 'INITDS',
- + 'Number of coefficients is less than 1', 2, 1)
- C
- ERR = 0.
- DO 10 II = 1,NOS
- I = NOS + 1 - II
- ERR = ERR + ABS(REAL(OS(I)))
- IF (ERR.GT.ETA) GO TO 20
- 10 CONTINUE
- C
- 20 IF (I .EQ. NOS) CALL XERMSG ('SLATEC', 'INITDS',
- + 'Chebyshev series too short for specified accuracy', 1, 1)
- INITDS = I
- C
- RETURN
- END
|