code 34400;
    procedure CHLINV2(A, N); value N; integer N; array A;
    begin real R; integer I, J, I1;
        array U[1:N];

        for I:= N step - 1 until 1 do 
        begin R:= 1 / A[I,I]; I1:= I + 1;
            DUPVECROW(I1, N, I, U, A);
            for J:= N step - 1 until I1 do A[I,J]:=
            - (TAMVEC(I1, J, J, A, U) + MATVEC(J + 1, N, J, A, U)) * R;
            A[I,I]:= (R - MATVEC(I1, N, I, A, U)) * R
        end 
    end CHLINV2;
        eop