Category:

Разговорчики в строю

Из найденных на диске исходных текстов стандартной математической библиотеки АЛГОЛА-60 (библиотечные процедуры хранились в текстовом виде, по-видимому, в силу каких-то особенностей автора системы, и в кодировке, в точности совпадающей с кодировкой перфокарт, т. е. с битом четности, что было довольно неочевидно при поиске интересностей во всех возможных кодировках), одна содержит довольно забавную диагностику об ошибке. Сейчас в такой манере вычислительные библиотеки с пользователями не общаются.

_REAL _PRОCEDURE ЛАГРАНЖ2(A,Х,У,Х1,Х2,P,П,П1);
_REAL Х1,Х2;_INTEGER P,П,П1;_ARRAУ A,Х,У;
_BEGIN _REAL S,Z,Z1;_INTEGER I,J,J1,К;
_ARRAУ S1[0:20];
_INTEGER Я,Я1;
_IF Х2<A[1]_THEN _BEGIN Z:=Х2;_GО _TО М3;_END ;
_IF Х1<Х[1]_THEN _BEGIN Z:=Х1;_GО _TО М3;_END ;
S:=0;_FOR J1:=1_STEP 1_UNTIL П1_DО
_IF Х2≥A[J1]∧Х2≤A[J1+1]_THEN _GО _TО М1;Z:=Х2;_GО _TО М2;
М1:_FOR I:=1_STEP 1_UNTIL П_DО
_IF Х1≥Х[I]∧Х1≤Х[I+1]_THEN _GО _TО М;Z:=Х1;
_IF Х1≤Х[П]_THEN _GО _TО М;
М2:_IF Х2≤A[П1]_THEN _GО _TО М;
М3:
ОUTPUT(‘T’,‘ПРИ  ОБРАЩЕНИИ  К  ПРОЦЕДУРЕ  ЛАГРАНЖ2  АРГУМЕНТ=’,
‘E’,Z,‘T’,
‘ВЫШЕЛ  ЗА  ПРЕДЕЛЫ  ТАБЛИЦЫ. РАЗБЕРИСЬ  В  ЧЕМ  ДЕЛО, А  Я  ПРЕРЫВАЮ  СЧЕТ. ДО  ВСТРЕЧИ!’);
ОUTPUT(‘×’);
S:=S/0;
М:_IF I≤П-P_THEN J:=I_ELSE J:=П-P;
_IF J1>П1-P_THEN J1:=П1-P;
Я1:=J1;
_FOR Я:=
_STEP 1_UNTIL P_DО _BEGIN
S:=0;
_FOR I:=0_STEP 1_UNTIL P_DО _BEGIN
Z:=Z1:=1;
_FOR К:=0_STEP 1_UNTIL P_DО _BEGIN
_IF К≠I_THEN Z:=Z×(Х1-Х[К+J])/(Х[I+J]-Х[К+J]);
_END ;
S:=S+У[I+J+(J1-1)×П]×Z;_END ;
S1[Я]:=S;J1:=J1+1;_END ;
S:=0;
_FOR I:=0_STEP 1_UNTIL P_DО _BEGIN
Z:=Z1:=1;
_FOR К:=0_STEP 1_UNTIL P_DО _BEGIN
_IF К≠I_THEN Z:=Z×(Х2-A[К+Я1])/(A[I+Я1]-A[К+Я1]);
_END ;
S:=S+S1[I]×Z;_END ;
ЛАГРАНЖ2:=S;
_END 


Необходимое примечание: Название процедуры ЛАГРАНЖ2 вряд ли имеет отношение к точке Лагранжа L2, по направлению к которой сейчас летит телескоп имени Уэбба.



This entry was originally posted at https://spamsink.dreamwidth.org/1238339.html. Please comment there using OpenID.