# bspdr.f

          SUBROUTINE BSPDR (T, A, N, K, NDERIV, AD)
    C***BEGIN PROLOGUE  BSPDR
    C***PURPOSE  Use the B-representation to construct a divided difference
    C            table preparatory to a (right) derivative calculation.
    C***LIBRARY   SLATEC
    C***CATEGORY  E3
    C***TYPE      SINGLE PRECISION (BSPDR-S, DBSPDR-D)
    C***KEYWORDS  B-SPLINE, DATA FITTING, DIFFERENTIATION OF SPLINES,
    C             INTERPOLATION
    C***AUTHOR  Amos, D. E., (SNLA)
    C***DESCRIPTION
    C
    C     Written by Carl de Boor and modified by D. E. Amos
    C
    C     Abstract
    C         BSPDR is the BSPLDR routine of the reference.
    C
    C         BSPDR uses the B-representation (T,A,N,K) to construct a
    C         divided difference table ADIF preparatory to a (right)
    C         derivative calculation in BSPEV.  The lower triangular matrix
    C         ADIF is stored in vector AD by columns.  The arrays are
    C         related by
    C
    C           ADIF(I,J) = AD(I-J+1 + (2*N-J+2)*(J-1)/2)
    C
    C         I = J,N , J = 1,NDERIV .
    C
    C     Description of Arguments
    C         Input
    C          T       - knot vector of length N+K
    C          A       - B-spline coefficient vector of length N
    C          N       - number of B-spline coefficients
    C                    N = sum of knot multiplicities-K
    C          K       - order of the spline, K .GE. 1
    C          NDERIV  - number of derivatives, 1 .LE. NDERIV .LE. K.
    C                    NDERIV=1 gives the zero-th derivative = function
    C                    value
    C
    C         Output
    C          AD      - table of differences in a vector of length
    C                    (2*N-NDERIV+1)*NDERIV/2 for input to BSPEV
    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  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   900326  Removed duplicate information from DESCRIPTION section.
    C           (WRB)
    C   920501  Reformatted the REFERENCES section.  (WRB)
    C***END PROLOGUE  BSPDR