15 SUBROUTINE r8nspline (N, X, Y, B, C, D)
19 INTEGER,
PARAMETER :: R8=selected_real_kind(12,100)
26 real*8 x(n), y(n), b(n), c(n), d(n)
57 INTEGER NM1, NM2, IB, I
61 IF ( n .LT. 2 )
RETURN
67 IF(x(ip1).LE.x(i))
then
69 write(6,9001) (x(ii),ii=1,n)
70 zbomb=sqrt(-1.0_r8/(x(1)*x(1)))
72 write(6,*)
' nspline -- code stop.'
75 >
' ? UNORDERED ORDINATE ARRAY PASSED TO SPLINE SUBROUTINE:')
76 9001
FORMAT(1x,5(1x,1pe12.5))
80 IF ( n .LT. 3 )
GO TO 50
87 c(2) = (y(2) - y(1))/d(1)
90 b(i) = 2._r8*(d(i-1) + d(i))
91 c(i+1) = (y(i+1) - y(i))/d(i)
104 b(i) = b(i) - t*d(i-1)
105 c(i) = c(i) - t*c(i-1)
111 c(nm1) = c(nm1)/b(nm1)
114 c(i) = (c(i) - d(i)*c(i+1))/b(i)
121 b(n) = (y(n) - y(nm1))/d(nm1) + d(nm1)*(c(nm1) + 2._r8*c(n))
123 b(i) = (y(i+1) - y(i))/d(i) - d(i)*(c(i+1) + 2._r8*c(i))
124 d(i) = (c(i+1) - c(i))/d(i)
131 50 b(1) = (y(2)-y(1))/(x(2)-x(1))