code 35145;
real procedure AIRYZEROS(N,D,ZAI,VAI);
value N,D; integer N,D; array ZAI,VAI;
begin boolean A, FOUND; integer I;
real C,E,R,ZAJ,ZAK,VAJ,DAJ,KAJ,ZZ;
A := D = 0 or D = 2;
R := if D = 0 or D = 3 then -1.1780 97245 09617
else -3.5342 91735 28852;
comment R := "IF" D = 0 "OR" D = 3 "THEN" -3 * PI / 8
"ELSE" -9 * PI / 8;
AIRY(0,ZAJ,VAJ,DAJ,KAJ,ZZ,true );
for I := 1 step 1 until N do
begin R := R + 4.7123 88980 38469; comment R := R + 3 * PI / 2;
ZZ := R * R;
ZAJ := if I = 1 and D = 1 then -1.01879 297 else
if I = 1 and D = 2 then -1.17371 322 else
R ** 0.66666 66666 66667 * ( if A then
- ( 1 + ( 5/48 - ( 5/36 - ( 77125/82944 - (
1080 56875 / 69 67296 - (16 23755 96875 / 3344 30208)
/ZZ)/ZZ)/ZZ)/ZZ)/ZZ)
else
- ( 1 - ( 7/48 - ( 35/288 - ( 1 81223 / 2 07360 - (
186 83371 / 12 44160 - ( 9 11458 84361 / 1911 02976 )
/ZZ)/ZZ)/ZZ)/ZZ)/ZZ));
if D <= 1 then AIRY(ZAJ,VAJ,DAJ,C,E,ZZ,false )
else AIRY(ZAJ,C,E,VAJ,DAJ,ZZ,false );
FOUND := ABS( if A then VAJ else DAJ ) < "-12;
for C := C while not FOUND do
begin if A then
begin KAJ := VAJ / DAJ;
ZAK := ZAJ - KAJ * (1 + ZAJ * KAJ * KAJ)
end else
begin KAJ := DAJ / (ZAJ * VAJ);
ZAK := ZAJ - KAJ * (1 + KAJ * (KAJ * ZAJ + 1 / ZAJ))
end;
if D <= 1 then AIRY(ZAK,VAJ,DAJ,C,E,ZZ,false )
else AIRY(ZAK,C,E,VAJ,DAJ,ZZ,false );
FOUND := ABS(ZAK - ZAJ) < "-14 * ABS(ZAK) or
ABS(if A then VAJ else DAJ) < "-12;
ZAJ := ZAK
end;
VAI[I] := if A then DAJ else VAJ;
ZAI[I] := ZAJ;
end;
AIRYZEROS := ZAI[N];
end AIRYZEROS;
eop