Вот пример портирования программы с языка Fortran-IV из книги Дж.Форсайта. Программа предназначена для интерполяции табличной функции, заданной значениями в n узлах, кубическим сплайном. В исходном варианте предлагается описать пять массивов, а затем вызвать сначала процедуру Spline с шестью параметрами, а затем получить искомое значение с помощью функции Seval, имеющей уже семь параметров.
Выглядит это примерно так:
REAL X(10), Y(10), B(10), C(10), D(10)
REAL S, U, SEVAL
INTEGER I, N
N = 10
DO 1 I=1,N
X(I)=I
Y(I)=X(I)**3
1 CONTINUE
CALL SPLINE (N, X, Y, В, C, D)
U = 2.5
S=SEVAL (N, U. X, Y, В, C, D)
WRITE (6, 2) U, S
2 FORMAT (2F 10.5)
STOP
END
После портирования вызов стал намного проще и современнее:
uses StudLib;
begin
var n:=10;
var x:=ArrGen(n,i->real(i+1));
var y:=ArrGen(n,i->sqr(x[i])*x[i]);
var Sp:=new Spline(x,y); // создаем сплайн с заданными узлами интерполяции.
var u:=2.5;
Println(u,Sp.Value(u)); // интерполированное значение
end.
Модуль, реализующий класс, StudLib.pas (2,5 КБ)
Конечно, он еще сыроват, но вполне работоспособен.