GNU Octave  3.8.0
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
initds.f
Go to the documentation of this file.
1 *DECK INITDS
2  FUNCTION initds (OS, NOS, ETA)
3 C***BEGIN PROLOGUE INITDS
4 C***PURPOSE Determine the number of terms needed in an orthogonal
5 C polynomial series so that it meets a specified accuracy.
6 C***LIBRARY SLATEC (FNLIB)
7 C***CATEGORY C3A2
8 C***TYPE DOUBLE PRECISION (INITS-S, INITDS-D)
9 C***KEYWORDS CHEBYSHEV, FNLIB, INITIALIZE, ORTHOGONAL POLYNOMIAL,
10 C ORTHOGONAL SERIES, SPECIAL FUNCTIONS
11 C***AUTHOR Fullerton, W., (LANL)
12 C***DESCRIPTION
13 C
14 C Initialize the orthogonal series, represented by the array OS, so
15 C that INITDS is the number of terms needed to insure the error is no
16 C larger than ETA. Ordinarily, ETA will be chosen to be one-tenth
17 C machine precision.
18 C
19 C Input Arguments --
20 C OS double precision array of NOS coefficients in an orthogonal
21 C series.
22 C NOS number of coefficients in OS.
23 C ETA single precision scalar containing requested accuracy of
24 C series.
25 C
26 C***REFERENCES (NONE)
27 C***ROUTINES CALLED XERMSG
28 C***REVISION HISTORY (YYMMDD)
29 C 770601 DATE WRITTEN
30 C 890531 Changed all specific intrinsics to generic. (WRB)
31 C 890831 Modified array declarations. (WRB)
32 C 891115 Modified error message. (WRB)
33 C 891115 REVISION DATE from Version 3.2
34 C 891214 Prologue converted to Version 4.0 format. (BAB)
35 C 900315 CALLs to XERROR changed to CALLs to XERMSG. (THJ)
36 C***END PROLOGUE INITDS
37  DOUBLE PRECISION os(*)
38 C***FIRST EXECUTABLE STATEMENT INITDS
39  IF (nos .LT. 1) CALL xermsg('SLATEC', 'INITDS',
40  + 'Number of coefficients is less than 1', 2, 1)
41 C
42  err = 0.
43  DO 10 ii = 1,nos
44  i = nos + 1 - ii
45  err = err + abs(REAL(os(i)))
46  IF (err.GT.eta) go to 20
47  10 CONTINUE
48 C
49  20 IF (i .EQ. nos) CALL xermsg('SLATEC', 'INITDS',
50  + 'Chebyshev series too short for specified accuracy', 1, 1)
51  initds = i
52 C
53  RETURN
54  END