SUBROUTINE SPLINT(XA,YA,Y2A,N,X,Y,YPRIM) INTEGER N REAL*8 XA(N),YA(N),Y2A(N), X,Y,YPRIM * Calculate Y(X) from spline XA,YA,Y2A * * XA(N),YA(N) = pivoting points, * Y2A(N) = 2nd deriviatives in points. INTEGER K,KLO,KHI REAL*8 A,B,H KLO=1 KHI=N 1 IF (KHI-KLO.GT.1) THEN K=(KHI+KLO)/2 IF(XA(K).GT.X)THEN KHI=K ELSE KLO=K ENDIF GOTO 1 ENDIF H=XA(KHI)-XA(KLO) IF (H.LE.0.) THEN call nmf_error ('Inputs to SPLINT not prperly sorted') ENDIF A=(XA(KHI)-X)/H B=(X-XA(KLO))/H Y=A*YA(KLO)+B*YA(KHI)+ * ((A**3-A)*Y2A(KLO)+(B**3-B)*Y2A(KHI))*(H**2)/6. YPRIM= (YA(KHI)-YA(KLO) + & (Y2A(KHI)*(3*B**2-1.) - Y2A(KLO)*(3*A**2-1.))/6. & ) / H RETURN END