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