code 34371;
    integer procedure QRIHRM(A, N, VAL, VR, VI, EM); value N;
    integer N; array A, VAL, VR, VI, EM;
    begin integer I, J;
        array B, BB[1:N], TR, TI[1:N - 1];
        HSHHRMTRI(A, N, VAL, B, BB, EM, TR, TI);
        for I:= 1 step 1 until N do 
        begin VR[I,I]:= 1;
            for J:= I + 1 step 1 until N do VR[I,J]:= VR[J,I]:=
            0
        end;
        B[N]:= BB[N]:= 0;
        I:= QRIHRM:= QRISYMTRI(VR, N, VAL, B, BB, EM);
        BAKHRMTRI(A, N, I+1, N, VR, VI, TR, TI);
    end QRIHRM;
        eop