# dbspev.f

          SUBROUTINE DBSPEV (T, AD, N, K, NDERIV, X, INEV, SVALUE, WORK)
    C***BEGIN PROLOGUE  DBSPEV
    C***PURPOSE  Calculate the value of the spline and its derivatives from
    C            the B-representation.
    C***LIBRARY   SLATEC
    C***CATEGORY  E3, K6
    C***TYPE      DOUBLE PRECISION (BSPEV-S, DBSPEV-D)
    C***KEYWORDS  B-SPLINE, DATA FITTING, INTERPOLATION, SPLINES
    C***AUTHOR  Amos, D. E., (SNLA)
    C***DESCRIPTION
    C
    C     Written by Carl de Boor and modified by D. E. Amos
    C
    C     Abstract    **** a double precision routine ****
    C         DBSPEV is the BSPLEV routine of the reference.
    C
    C         DBSPEV calculates the value of the spline and its derivatives
    C         at X from the B-representation (T,A,N,K) and returns them in
    C         SVALUE(I),I=1,NDERIV, T(K) .LE. X .LE. T(N+1).  AD(I) can be
    C         the B-spline coefficients A(I), I=1,N) if NDERIV=1.  Otherwise
    C         AD must be computed before hand by a call to DBSPDR (T,A,N,K,
    C         NDERIV,AD).  If X=T(I),I=K,N), right limiting values are
    C         obtained.
    C
    C         To compute left derivatives or left limiting values at a
    C         knot T(I), replace N by I-1 and set X=T(I), I=K+1,N+1.
    C
    C         DBSPEV calls DINTRV, DBSPVN
    C
    C     Description of Arguments
    C
    C         Input      T,AD,X, are double precision
    C          T       - knot vector of length N+K
    C          AD      - vector of length (2*N-NDERIV+1)*NDERIV/2 containing
    C                    the difference table from DBSPDR.
    C          N       - number of B-spline coefficients
    C                    N = sum of knot multiplicities-K
    C          K       - order of the B-spline, K .GE. 1
    C          NDERIV  - number of derivatives, 1 .LE. NDERIV .LE. K.
    C                    NDERIV=1 gives the zero-th derivative =
    C                    function value
    C          X       - argument, T(K) .LE. X .LE. T(N+1)
    C          INEV    - an initialization parameter which must be set
    C                    to 1 the first time DBSPEV is called.
    C
    C         Output     SVALUE,WORK are double precision
    C          INEV    - INEV contains information for efficient process-
    C                    ing after the initial call and INEV must not
    C                    be changed by the user.  Distinct splines require
    C                    distinct INEV parameters.
    C          SVALUE  - vector of length NDERIV containing the spline
    C                    value in SVALUE(1) and the NDERIV-1 derivatives
    C                    in the remaining components.
    C          WORK    - work vector of length 3*K
    C
    C     Error Conditions
    C         Improper input is a fatal error.
    C
    C***REFERENCES  Carl de Boor, Package for calculating with B-splines,
    C                 SIAM Journal on Numerical Analysis 14, 3 (June 1977),
    C                 pp. 441-472.
    C***ROUTINES CALLED  DBSPVN, DINTRV, XERMSG
    C***REVISION HISTORY  (YYMMDD)
    C   800901  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  DBSPEV