*DECK DGAUS8 SUBROUTINE DGAUS8 (FUN, A, B, ERR, ANS, IERR) C***BEGIN PROLOGUE DGAUS8 C***PURPOSE Integrate a real function of one variable over a finite C interval using an adaptive 8-point Legendre-Gauss C algorithm. Intended primarily for high accuracy C integration or integration of smooth functions. C***LIBRARY SLATEC C***CATEGORY H2A1A1 C***TYPE DOUBLE PRECISION (GAUS8-S, DGAUS8-D) C***KEYWORDS ADAPTIVE QUADRATURE, AUTOMATIC INTEGRATOR, C GAUSS QUADRATURE, NUMERICAL INTEGRATION C***AUTHOR Jones, R. E., (SNLA) C***DESCRIPTION C C Abstract *** a DOUBLE PRECISION routine *** C DGAUS8 integrates real functions of one variable over finite C intervals using an adaptive 8-point Legendre-Gauss algorithm. C DGAUS8 is intended primarily for high accuracy integration C or integration of smooth functions. C C The maximum number of significant digits obtainable in ANS C is the smaller of 18 and the number of digits carried in C double precision arithmetic. C C Description of Arguments C C Input--* FUN, A, B, ERR are DOUBLE PRECISION * C FUN - name of external function to be integrated. This name C must be in an EXTERNAL statement in the calling program. C FUN must be a DOUBLE PRECISION function of one DOUBLE C PRECISION argument. The value of the argument to FUN C is the variable of integration which ranges from A to B. C A - lower limit of integration C B - upper limit of integration (may be less than A) C ERR - is a requested pseudorelative error tolerance. Normally C pick a value of ABS(ERR) so that DTOL .LT. ABS(ERR) .LE. C 1.0D-3 where DTOL is the larger of 1.0D-18 and the C double precision unit roundoff D1MACH(4). ANS will C normally have no more error than ABS(ERR) times the C integral of the absolute value of FUN(X). Usually, C smaller values of ERR yield more accuracy and require C more function evaluations. C C A negative value for ERR causes an estimate of the C absolute error in ANS to be returned in ERR. Note that C ERR must be a variable (not a constant) in this case. C Note also that the user must reset the value of ERR C before making any more calls that use the variable ERR. C C Output--* ERR,ANS are double precision * C ERR - will be an estimate of the absolute error in ANS if the C input value of ERR was negative. (ERR is unchanged if C the input value of ERR was non-negative.) The estimated C error is solely for information to the user and should C not be used as a correction to the computed integral. C ANS - computed value of integral C IERR- a status code C --Normal codes C 1 ANS most likely meets requested error tolerance, C or A=B. C -1 A and B are too nearly equal to allow normal C integration. ANS is set to zero. C --Abnormal code C 2 ANS probably does not meet requested error tolerance. C C***REFERENCES (NONE) C***ROUTINES CALLED D1MACH, I1MACH, XERMSG C***REVISION HISTORY (YYMMDD) C 810223 DATE WRITTEN C 890531 Changed all specific intrinsics to generic. (WRB) C 890911 Removed unnecessary intrinsics. (WRB) C 890911 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 900326 Removed duplicate information from DESCRIPTION section. C (WRB) C***END PROLOGUE DGAUS8