begin library A0, A1, A4, A5, A15; real procedure GPS (I, N, Z, V); real I, N, Z, V; begin for I := 1 step 1 until N do Z := V; GPS := 1 end GPS; procedure GPS TEST 1 (m, n); value m, n; real m, n; begin real i, j; array A[1:m, 1:n]; writetext(30, {GPS _ TEST _ CASE _ 1{c}}); comment set A[i,j] to (i+j) ; i := GPS(j, n, i, GPS(i, m, A[i,j], i+j)); writetext(30, {A[i,j] _ should _ be _ (i+j){c}}); for i := 1 step 1 until m do begin for j := 1 step 1 until n do write(30, format({+d.dddddss}), A[i,j]); writetext(30, {{c}}); end ; end GPS TEST 1; procedure GPS TEST 2 (m, n, p); value m, n, p; real m, n, p; begin real i, j, k; array A[1:m, 1:n], B[1:n, 1:p], C[1:m, 1:p]; writetext(30, {{c}{c}GPS _ TEST _ CASE _ 2{c}}); for i := 1 step 1 until m do for k := 1 step 1 until n do A[i,k] := i/10.0^(k-1); for k := 1 step 1 until n do for j := 1 step 1 until p do B[k,j] := k; for i := 1 step 1 until m do for j := 1 step 1 until p do C[i,j] := -999999999; comment set C to AB ; i := GPS(i, 1.0, C[1,1], 0.0) × GPS(i, (m-1) × GPS(j, (p-1) × GPS(k, n, C[i,j], C[i,j] + A[i,k]×B[k,j]), C[i,j+1], 0.0 ), C[i+1,1], 0.0 ); writetext(30, {C[i,j] _ should _ be _ 1.234j{c}}); for i := 1 step 1 until m do begin for j := 1 step 1 until p do write(30, format({+d.dddddss}), C[i,j]); writetext(30, {{c}}); end ; end procedure GPS TEST 2; open(30); GPS TEST 1(5, 3); GPS TEST 2(3, 4, 5); close(30); end |