code 34365;
    procedure BAKHRMTRI(A, N, N1, N2, VECR, VECI, TR, TI);
    value N, N1, N2; integer N, N1, N2;
     array A, VECR, VECI, TR, TI;
    begin integer I, J, R, RM1;
        real C, S, T, QR, QI;
        for I:= 1 step 1 until N do 
        for J:= N1 step 1 until N2 do VECI[I,J]:= 0; C:= 1;
        S:= 0;
        for J:= N - 1 step - 1 until 1 do 
        begin COMMUL(C, S, TR[J], TI[J], C, S);
            COMROWCST(N1, N2, J, VECR, VECI, C, S)
        end J;
        RM1:= 2;
        for R:= 3 step 1 until N do 
        begin T:= A[R,R]; if T > 0 then 
            for J:= N1 step 1 until N2 do 
            begin QR:= (TAMMAT(1, RM1, R, J, A, VECR) -
                MATMAT(1, RM1, R, J, A, VECI)) / T;
                QI:= (TAMMAT(1, RM1, R, J, A, VECI) +
                MATMAT(1, RM1, R, J, A, VECR)) / T;
                ELMCOL(1, RM1, J, R, VECR, A, - QR);
                ELMCOLROW(1, RM1, J, R, VECR, A, - QI);
                ELMCOLROW(1, RM1, J, R, VECI, A, QR);
                ELMCOL(1, RM1, J, R, VECI, A, - QI)
            end;
            RM1:= R;
        end R
    end BAKHRMTRI

        eop