2
SUBROUTINE DFSPVD (T, K, X, ILEFT, VNIKX, NDERIV)
3
C***BEGIN PROLOGUE DFSPVD
5
C***PURPOSE Subsidiary to DFC
7
C***TYPE DOUBLE PRECISION (BSPLVD-S, DFSPVD-D)
11
C **** Double Precision Version of BSPLVD ****
12
C Calculates value and deriv.s of all B-splines which do not vanish at X
14
C Fill VNIKX(J,IDERIV), J=IDERIV, ... ,K with nonzero values of
15
C B-splines of order K+1-IDERIV , IDERIV=NDERIV, ... ,1, by repeated
19
C***ROUTINES CALLED DFSPVN
20
C***REVISION HISTORY (YYMMDD)
22
C 890531 Changed all specific intrinsics to generic. (WRB)
23
C 890831 Modified array declarations. (WRB)
24
C 890911 Removed unnecessary intrinsics. (WRB)
25
C 891214 Prologue converted to Version 4.0 format. (BAB)
26
C 900328 Added TYPE section. (WRB)
27
C***END PROLOGUE DFSPVD
28
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
29
DIMENSION T(*),VNIKX(K,*)
31
C***FIRST EXECUTABLE STATEMENT DFSPVD
32
CALL DFSPVN(T,K+1-NDERIV,1,X,ILEFT,VNIKX(NDERIV,NDERIV))
33
IF (NDERIV .LE. 1) GO TO 99
38
11 VNIKX(J-1,IDERVM) = VNIKX(J,IDERIV)
40
CALL DFSPVN(T,0,2,X,ILEFT,VNIKX(IDERIV,IDERIV))
55
DIFF = T(IPKMD) - T(I)
56
IF (JM1 .EQ. 0) GO TO 26
57
IF (DIFF .EQ. 0.D0) GO TO 25
59
24 A(L,J) = (A(L,J) - A(L,J-1))/DIFF*FKMD
63
26 IF (DIFF .EQ. 0.) GO TO 30
64
A(1,1) = A(1,1)/DIFF*FKMD
70
35 V = A(I,J)*VNIKX(J,M) + V