19 SUBROUTINE r8pspline (N, X, Y, B, C, D, WK)
23 INTEGER,
PARAMETER :: R8=selected_real_kind(12,100)
27 real*8 x(n), y(n), b(n), c(n), d(n), wk(n)
70 INTEGER NM1, NM2, IB, I
81 >
' ?PSPLINE -- at least 4 pts required for periodic spline.')
91 d(nm1) = x(n) - x(nm1)
92 b(1) = 2.0_r8*(d(1)+d(nm1))
93 c(1) = (y(n) - y(nm1))/d(nm1)
94 c(2) = (y(2) - y(1))/d(1)
99 b(i) = 2._r8*(d(i-1) + d(i))
100 c(i+1) = (y(i+1) - y(i))/d(i)
117 b(i) = b(i) - t*d(i-1)
118 c(i) = c(i) - t*c(i-1)
119 wk(i) = wk(i) - t*wk(i-1)
122 b(nm1) = b(nm1) - q*wk(i-1)
123 c(nm1) = c(nm1) - q*c(i-1)
128 wk(nm1) = wk(nm1) + d(nm2)
134 b(nm1) = b(nm1) - t*wk(nm2)
135 c(nm1) = c(nm1) - t*c(nm2)
139 c(nm1) = c(nm1)/b(nm1)
140 c(nm2) = (c(nm2) - wk(nm2)*c(nm1))/b(nm2)
144 c(i) = (c(i) - d(i)*c(i+1) - wk(i)*c(nm1))/b(i)
156 b(i) = (y(i+1) - y(i))/d(i) - d(i)*(c(i+1) + 2._r8*c(i))
157 d(i) = (c(i+1) - c(i))/d(i)