procedure SPLINT(XA, YA, Y2A:array of real; N:integer; X:real;var Y:real); label 1; var K,KLO,KHI:integer; H,A,B,AAA,BBB,Q,QQ:real; begin KLO:=1; KHI:=N; 1: If KHI - KLO > 1 Then begin K:=(KHI + KLO) Div 2; If XA[K] > X Then KHI:=K Else KLO:=K; GoTo 1; end; H:=XA[KHI] - XA[KLO]; If H = 0 Then begin ShowMessage(' PAUSE "BAD XA INPUT"'); Exit; end; A:=(XA[KHI] - X) / H; B:=(X - XA[KLO]) / H; AAA:=A * YA[KLO] + B * YA[KHI]; if A = 0 then Q:= 0 else if A > 0 then Q:= exp(3*ln(A)) else Q:= -EXP(3*LN(-A)); if B = 0 then QQ:= 0 else if B > 0 then QQ:= exp(3*ln(B)) else QQ:= -EXP(3*LN(-B)); BBB:=(Q - A) * Y2A[KLO] + (QQ - B) * Y2A[KHI]; Y:=AAA + BBB * (H * H) / 6; end;