5 * Revision 1.1.1.1 1996/04/01 15:02:27 mclareni
10 #if !defined(CERNLIB_DOUBLE)
11 SUBROUTINE RCSPLN(N,X,M,Y,NDIM,MODE,A,B,C,D)
13 #if defined(CERNLIB_DOUBLE)
14 SUBROUTINE DCSPLN(N,X,M,Y,NDIM,MODE,A,B,C,D)
15 #include "gen/imp64.inc"
17 CHARACTER NAMEN*(*),NAMET*(*)
19 #if !defined(CERNLIB_DOUBLE)
20 PARAMETER (NAMEN = 'RCSPLN', NAMET = 'RCSPLT')
22 #if defined(CERNLIB_DOUBLE)
23 PARAMETER (NAMEN = 'DCSPLN', NAMET = 'DCSPLT')
27 DIMENSION X(0:*),Y(0:NDIM,*)
28 DIMENSION A(NDIM,*),B(NDIM,*),C(NDIM,*),D(NDIM,*)
30 PARAMETER (Z1 = 1, C1 = 3*Z1/2, C2 = Z1/3, C3 = 2*Z1/3)
31 PARAMETER (C4 = Z1/2, C5 = Z1/6, C6 = 2*Z1/15, C7 = 7*Z1/60)
36 #if !defined(CERNLIB_DOUBLE)
37 ENTRY RCSPNT(N,X,M,Y,NDIM,MODE,A,B,C,D)
39 #if defined(CERNLIB_DOUBLE)
40 ENTRY DCSPNT(N,X,M,Y,NDIM,MODE,A,B,C,D)
44 50 IF(N .LT. 2 .OR. M .LT. 1 .OR. NDIM .LT. N .OR.
45 1 MODE .NE. 0. AND. MODE .NE. 1) THEN
48 IF(.NOT.LNT) CALL MTLPRT(NAMEN,'E211.1',ERRTXT)
49 IF( LNT) CALL MTLPRT(NAMET,'E211.1',ERRTXT)
53 IF(.NOT.LNT) CALL MTLPRT(NAMEN,'E211.2',ERRTXT)
54 IF( LNT) CALL MTLPRT(NAMET,'E211.2',ERRTXT)
57 WRITE(ERRTXT,103) NDIM,N
58 IF(.NOT.LNT) CALL MTLPRT(NAMEN,'E211.3',ERRTXT)
59 IF( LNT) CALL MTLPRT(NAMET,'E211.3',ERRTXT)
61 IF(MODE .NE. 0 .AND. MODE .NE. 1) THEN
62 WRITE(ERRTXT,104) MODE
63 IF(.NOT.LNT) CALL MTLPRT(NAMEN,'E211.4',ERRTXT)
64 IF( LNT) CALL MTLPRT(NAMET,'E211.4',ERRTXT)
72 2 A(I,K)=(Y(I,K)-Y(I-1,K))/D(I,1)
77 3 C(2,K)=T1*(A(2,K)-A(1,K))
80 4 B(I,1)=1/(D(I,1)+D(I-1,1))
91 6 C(I,K)=(T1*(A(I,K)-A(I-1,K))-T2*C(I-1,K))*T3
95 T3=1/(3-T2*(1-B(N-1,1)))
97 7 C(N,K)=(T1*(A(N,K)-A(N-1,K))-T2*C(N-1,K))*T3
103 8 C(I,K)=T1*C(I+1,K)+C(I,K)
108 B(1,K)=A(1,K)-C(2,K)*D(1,1)
111 B(I,K)=A(I,K)-C2*(C(I+1,K)+2*C(I,K))*D(I,1)
112 11 D(I,K)=(C(I+1,K)-C(I,K))/(3*D(I,1))
113 B(N,K)=A(N,K)-C(N,K)*D(N,1)
121 T1=C1/(D(1,1)+D(2,1))
123 23 C(2,K)=T1*(A(2,K)-A(1,K))
126 24 B(I,1)=1/(D(I,1)+D(I-1,1))
137 26 C(I,K)=(T1*(A(I,K)-A(I-1,K))-T2*C(I-1,K))*T3
143 27 C(N,K)=(T1*(A(N,K)-A(N-1,K))-T2*C(N-1,K))*T3
149 28 C(I,K)=T1*C(I+1,K)+C(I,K)
158 B(1,K)=A(1,K)-T1*C(2,K)
161 B(I,K)=A(I,K)-C2*(C(I+1,K)+2*C(I,K))*D(I,1)
162 31 D(I,K)=(C(I+1,K)-C(I,K))/(3*D(I,1))
163 B(N,K)=A(N,K)-T3*C(N,K)
174 A(1,K)=C4*(Y(0,K)+Y(1,K)-C5*(C(1,K)+C(2,K))*T1)*D(1,1)
175 B(1,K)=C2*(Y(0,K)+C4*Y(1,K)-(C6*C(1,K)+C7*C(2,K))*T1)*T1
179 1 C4*(Y(I-1,K)+Y(I,K)-C5*(C(I,K)+C(I+1,K))*T1)*D(I,1)
180 42 B(I,K)=B(I-1,K)+C2*(Y(I-1,K)+C4*Y(I,K)-
181 1 (C6*C(I,K)+C7*C(I+1,K))*T1)*T1+A(I-1,K)*D(I,1)
184 1 C4*(Y(N-1,K)+Y(N,K)-C(N,K)*C5*(1+MODE)*T1)*D(N,1)
185 41 B(N,K)=B(N-1,K)+C2*(Y(N-1,K)+C4*Y(N,K)-
186 1 C(N,K)*(C6+MODE*C7)*T1)*T1+A(N-1,K)*D(N,1)
189 101 FORMAT('ILLEGAL N = ',I5,' < 2')
190 102 FORMAT('ILLEGAL M = ',I5,' < 1')
191 103 FORMAT('ILLEGAL NDIM = ',I5,' < ',I5,' = N')
192 104 FORMAT('ILLEGAL MODE = ',I5)