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