dgaus8.f
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