davint.f
SUBROUTINE DAVINT (X, Y, N, XLO, XUP, ANS, IERR)
C***BEGIN PROLOGUE DAVINT
C***PURPOSE Integrate a function tabulated at arbitrarily spaced
C abscissas using overlapping parabolas.
C***LIBRARY SLATEC
C***CATEGORY H2A1B2
C***TYPE DOUBLE PRECISION (AVINT-S, DAVINT-D)
C***KEYWORDS INTEGRATION, QUADRATURE, TABULATED DATA
C***AUTHOR Jones, R. E., (SNLA)
C***DESCRIPTION
C
C Abstract
C DAVINT integrates a function tabulated at arbitrarily spaced
C abscissas. The limits of integration need not coincide
C with the tabulated abscissas.
C
C A method of overlapping parabolas fitted to the data is used
C provided that there are at least 3 abscissas between the
C limits of integration. DAVINT also handles two special cases.
C If the limits of integration are equal, DAVINT returns a
C result of zero regardless of the number of tabulated values.
C If there are only two function values, DAVINT uses the
C trapezoid rule.
C
C Description of Parameters
C The user must dimension all arrays appearing in the call list
C X(N), Y(N)
C
C Input--
C X - DOUBLE PRECISION array of abscissas, which must be in
C increasing order.
C Y - DOUBLE PRECISION array of function values. i.e.,
C Y(I)=FUNC(X(I))
C N - The integer number of function values supplied.
C N .GE. 2 unless XLO = XUP.
C XLO - DOUBLE PRECISION lower limit of integration
C XUP - DOUBLE PRECISION upper limit of integration. Must have
C XLO.LE.XUP
C
C Output--
C ANS - Double Precision computed approximate value of integral
C IERR - A status code
C --Normal Code
C =1 Means the requested integration was performed.
C --Abnormal Codes
C =2 Means XUP was less than XLO.
C =3 Means the number of X(I) between XLO and XUP
C (inclusive) was less than 3 and neither of the two
C special cases described in the abstract occurred.
C No integration was performed.
C =4 Means the restriction X(I+1).GT.X(I) was violated.
C =5 Means the number N of function values was .lt. 2.
C ANS is set to zero if IERR=2,3,4,or 5.
C
C DAVINT is documented completely in SC-M-69-335
C Original program from *Numerical Integration* by Davis & Rabinowitz
C Adaptation and modifications by Rondall E Jones.
C
C***REFERENCES R. E. Jones, Approximate integrator of functions
C tabulated at arbitrarily spaced abscissas,
C Report SC-M-69-335, Sandia Laboratories, 1969.
C***ROUTINES CALLED XERMSG
C***REVISION HISTORY (YYMMDD)
C 690901 DATE WRITTEN
C 890831 Modified array declarations. (WRB)
C 890831 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 920501 Reformatted the REFERENCES section. (WRB)
C***END PROLOGUE DAVINT