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