begin; comment JAZ164, R743, Outer Planets ; integer K, T; real A, K2, X; Boolean FI; array Y, YA, Z, ZA[1 : 15], M[0 : 5], E[1 : 60], D[1 : 33]; array OWND[1 : 5, 1 : 5], OWNR[1 : 5]; real procedure F(K); integer K; begin; integer I, J, I3, J3; real P; if K1 then goto A; for I := 1 step 1 until 4 do begin; I3 := 3
I; for J := I + 1 step 1 until 5 do begin; J3 := 3
J; P := (Y[I3 - 2] - Y[J3 - 2])
2 + (Y[I3 - 1] - Y[J3 - 1])
2 + (Y[I3] - Y[J3])
2; OWND[I, J] := OWND[J, I] := 1 ÷ P ÷ SQRT(P); end ; end ; for I := 1 step 1 until 5 do begin; I3 := 3
I; OWND[I, I] := 0; P := Y[I3 - 2]
2 + Y[I3 - 1]
2 + Y[I3]
2; OWNR[I] := 1 ÷ P ÷ SQRT(P); end ; A: I := (K - 1) ÷ 3 + 1; F := K2
(-M[0]
Y[K]
OWNR[I] + SUM(J, 1, 5, M[J]
((Y[3
(J - I) + K] - Y[K])
OWND[I, J] - Y[3
(J - I) + K]
OWNR[J]))); end F; procedure RK3N(X, A, B, Y, YA, Z, ZA, FXYJ, J, E, D, FI, N); value B, FI, N; integer J, N; real X, A, B, FXYJ; Boolean FI; array Y, YA, Z, ZA, E, D; begin; integer JJ; real XL, H, HMIN, INT, HL, ABSH, FHM, DISCRY, DISCRZ, TOLY, TOLZ, MU, MU1, FHY, FHZ; Boolean LAST, FIRST, REJECT; array YL, ZL, K0, K1, K2, K3, K4, K5[1 : N], EE[1 : 4
N]; if FI then begin; D[3] := A; for JJ := 1 step 1 until N do begin; D[JJ + 3] := YA[JJ]; D[N + JJ + 3] := ZA[JJ]; end ; end ; D[1] := 0; XL := D[3]; for JJ := 1 step 1 until N do begin; YL[JJ] := D[JJ + 3]; ZL[JJ] := D[N + JJ + 3]; end ; if FI then D[2] := B - D[3]; ABSH := H := ABS(D[2]); if B - XL < 0 then H := -H; INT := ABS(B - XL); HMIN := INT
E[1] + E[2]; for JJ := 2 step 1 until 2
N do begin; HL := INT
E[2
JJ - 1] + E[2
JJ]; if HL < HMIN then HMIN := HL; end ; for JJ := 1 step 1 until 4
N do EE[JJ] := E[JJ] ÷ INT; FIRST := REJECT := true; if FI then begin; LAST := true; goto STEP; end ; TEST: ABSH := ABS(H); if ABSH < HMIN then begin; H := if H > 0 then HMIN else -HMIN; ABSH := HMIN; end ; * Syntax error at: ifH>B-XL=H>0thenbegin;
D[2] := H; LAST := true; H := B - XL; ABSH := ABS(H); end else LAST := false; STEP: if REJECT then begin; X := XL; for JJ := 1 step 1 until N do Y[JJ] := YL[JJ]; for J := 1 step 1 until N do K0[J] := FXYJH; end else begin; FHY := H ÷ HL; for JJ := 1 step 1 until N do K0[JJ] := K5[JJ]
FHY; end ; X := XL + .276393202250021
H; for JJ := 1 step 1 until N do Y[JJ] := YL[JJ] + (ZL[JJ]
.276393202250021 + K0[JJ]
.038196601125011)
H; for J := 1 step 1 until N do K1[J] := FXYJ
H; X := XL + .723606797749979
H; for JJ := 1 step 1 until N do Y[JJ] := YL[JJ] + (ZL[JJ]
.723606797749979 + K1[JJ]
.261803398874989)
H; for J := 1 step 1 until N do K2[J] := FXYJ
H; X := XL + H
.5; for JJ := 1 step 1 until N do Y[JJ] := YL[JJ] + (ZL[JJ]
.5 + K0[JJ]
.046875 + K1[JJ]
.079824155839840 - K2[JJ]
.001699155839840)
H; for J := 1 step 1 until N do K4[J] := FXYJ
H; X := if LAST then B else XL + H; for JJ := 1 step 1 until N do Y[JJ] := YL[JJ] + (ZL[JJ] + K0[JJ]
.309016994374947 + K2[JJ]
.190983005625053)
H; for J := 1 step 1 until N do K3[J] := FXYJ
H; for JJ := 1 step 1 until N do Y[JJ] := YL[JJ] + (ZL[JJ] + K0[JJ]
.083333333333333 + K1[JJ]
.301502832395825 + K2[JJ]
.115163834270842)
H; for J := 1 step 1 until N do K5[J] := FXYJ
H; REJECT := false; FHM := 0; for JJ := 1 step 1 until N do begin; DISCRY := ABS((-K0[JJ]
.5 + K1[JJ]
1.809016994374947 + K2[JJ]
.690983005625053 - K4[JJ]
2)
H); DISCRZ := ABS((K0[JJ] - K3[JJ])
2 - (K1[JJ] + K2[JJ])
10 + K4[JJ]
16 + K5[JJ]
4); TOLY := ABSH
(ABS(ZL[JJ])
EE[2
JJ - 1] + EE[2
JJ]); TOLZ := ABS(K0[JJ])
EE[2
(JJ + N) - 1] + ABSH
EE[2
(JJ + N)]; REJECT := DISCRY > TOLY
DISCRZ > TOLZ
REJECT; FHY := DISCRY ÷ TOLY; FHZ := DISCRZ ÷ TOLZ; if FHZ > FHY then FHY := FHZ; if FHY > FHM then FHM := FHY; end ; MU := 1 ÷ (1 + FHM) + .45; if REJECT then begin; if ABSH < HMIN then begin; D[1] := D[1] + 1; for JJ := 1 step 1 until N do begin; Y[JJ] := YL[JJ]; Z[JJ] := ZL[JJ]; end ; FIRST := true; goto NEXT; end ; H := MU
H; goto TEST; end REJ; if FIRST then begin; FIRST := false; HL := H; H := MU
H; goto ACC; end ; FHY := MU
H ÷ HL + MU - MU1; HL := H; H := FHY
H; ACC: MU1 := MU; for JJ := 1 step 1 until N do Z[JJ] := ZL[JJ] + (K0[JJ] + K3[JJ])
.083333333333333 + (K1[JJ] + K2[JJ])
.416666666666667; NEXT: if B
X then begin; XL := X; for JJ := 1 step 1 until N do begin; YL[JJ] := Y[JJ]; ZL[JJ] := Z[JJ]; end ; goto TEST; end ; if ¬LAST then D[2] := H; D[3] := X; for JJ := 1 step 1 until N do begin; D[JJ + 3] := Y[JJ]; D[N + JJ + 3] := Z[JJ]; end ; end RK3N; procedure TYP(X); array X; begin; integer K; NLCR; PRINTTEXT("T = "); ABSFIXT(7, 1, T + A); NLCR; NLCR; for K := 1 step 1 until 5 do begin; if K = 1 then PRINTTEXT("J ") else if K = 2 then PRINTTEXT("S ") else if K = 3 then PRINTTEXT("U ") else if K = 4 then PRINTTEXT("N ") else PRINTTEXT("P "); FIXT(2, 9, X[3
K - 2]); FIXT(2, 9, X[3
K - 1]); FIXT(2, 9, X[3
K]); NLCR; end ; end TYP; real procedure SUM(I, A, B, XI); value B; integer I, A, B; real XI; begin; real S; S := 0; for I := A step 1 until B do S := S + XI; SUM := S; end SUM; A := READ; for K := 1 step 1 until 15 do begin; YA[K] := READ; ZA[K] := READ; end ; for K := 0 step 1 until 5 do M[K] := READ; K2 := READ; E[1] := READ; for K := 2 step 1 until 60 do E[K] := E[1]; NLCR; PRINTTEXT("JAZ164, R743, Outer Planets"); NLCR; NLCR; for K := 1 step 1 until 15 do begin; FLOT(12, 2, YA[K]); FLOT(12, 2, ZA[K]); NLCR; end ; for K := 0 step 1 until 5 do begin; NLCR; FLOT(12, 2, M[K]); end ; NLCR; NLCR; FLOT(12, 2, K2); NLCR; NLCR; PRINTTEXT("eps = "); FLOT(2, 2, E[1]); NLCR; T := 0; TYP(YA); FI := true; for T := 500, 1000 do begin; RK3N(X, 0, T, Y, YA, Z, ZA, F(K), K, E, D, FI, 15); FI := false; TYP(Y); end ; end;