code 34051;
procedure SOL(A, N, P, B); value N; integer N; array A, B;
integer array P;
begin integer K, PK;
real R;
for K:= 1 step 1 until N do
begin R:= B[K]; PK:= P[K];
B[K]:= (B[PK] - MATVEC(1, K - 1, K, A, B)) / A[K,K];
if PK ^= K then B[PK]:= R
end;
for K:= N step - 1 until 1 do
B[K]:= B[K] - MATVEC(K + 1, N, K, A, B)
end SOL
eop