# dbfqad.f

          SUBROUTINE DBFQAD (F, T, BCOEF, N, K, ID, X1, X2, TOL, QUAD, IERR,
         +   WORK)
    C***BEGIN PROLOGUE  DBFQAD
    C***PURPOSE  Compute the integral of a product of a function and a
    C            derivative of a K-th order B-spline.
    C***LIBRARY   SLATEC
    C***CATEGORY  H2A2A1, E3, K6
    C***TYPE      DOUBLE PRECISION (BFQAD-S, DBFQAD-D)
    C***KEYWORDS  INTEGRAL OF B-SPLINE, QUADRATURE
    C***AUTHOR  Amos, D. E., (SNLA)
    C***DESCRIPTION
    C
    C     Abstract    **** a double precision routine ****
    C
    C         DBFQAD computes the integral on (X1,X2) of a product of a
    C         function F and the ID-th derivative of a K-th order B-spline,
    C         using the B-representation (T,BCOEF,N,K).  (X1,X2) must be a
    C         subinterval of T(K) .LE. X .LE. T(N+1).  An integration rou-
    C         tine, DBSGQ8 (a modification of GAUS8), integrates the product
    C         on subintervals of (X1,X2) formed by included (distinct) knots
    C
    C         The maximum number of significant digits obtainable in
    C         DBSQAD is the smaller of 18 and the number of digits
    C         carried in double precision arithmetic.
    C
    C     Description of Arguments
    C         Input      F,T,BCOEF,X1,X2,TOL are double precision
    C           F      - external function of one argument for the
    C                    integrand BF(X)=F(X)*DBVALU(T,BCOEF,N,K,ID,X,INBV,
    C                    WORK)
    C           T      - knot array of length N+K
    C           BCOEF  - coefficient array of length N
    C           N      - length of coefficient array
    C           K      - order of B-spline, K .GE. 1
    C           ID     - order of the spline derivative, 0 .LE. ID .LE. K-1
    C                    ID=0 gives the spline function
    C           X1,X2  - end points of quadrature interval in
    C                    T(K) .LE. X .LE. T(N+1)
    C           TOL    - desired accuracy for the quadrature, suggest
    C                    10.*DTOL .LT. TOL .LE. .1 where DTOL is the maximum
    C                    of 1.0D-18 and double precision unit roundoff for
    C                    the machine = D1MACH(4)
    C
    C         Output     QUAD,WORK are double precision
    C           QUAD   - integral of BF(X) on (X1,X2)
    C           IERR   - a status code
    C                    IERR=1  normal return
    C                         2  some quadrature on (X1,X2) does not meet
    C                            the requested tolerance.
    C           WORK   - work vector of length 3*K
    C
    C     Error Conditions
    C         Improper input is a fatal error
    C         Some quadrature fails to meet the requested tolerance
    C
    C***REFERENCES  D. E. Amos, Quadrature subroutines for splines and
    C                 B-splines, Report SAND79-1825, Sandia Laboratories,
    C                 December 1979.
    C***ROUTINES CALLED  D1MACH, DBSGQ8, DINTRV, XERMSG
    C***REVISION HISTORY  (YYMMDD)
    C   800901  DATE WRITTEN
    C   890531  Changed all specific intrinsics to generic.  (WRB)
    C   890531  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   920501  Reformatted the REFERENCES section.  (WRB)
    C***END PROLOGUE  DBFQAD