code 34366; procedure HSHCOMHES(AR, AI, N, EM, B, TR, TI, DEL); value N; integer N; array AR, AI, EM, B, TR, TI, DEL; begin integer R, RM1, I, J, NM1; real TOL, T, XR, XI; NM1:= N - 1; TOL:= (EM[0] * EM[1]) ** 2; RM1:= 1; for R:= 2 step 1 until NM1 do begin if HSHCOMCOL(R, N, RM1, AR, AI, TOL, B[RM1], TR[R], TI[R], T) then begin for I:= 1 step 1 until N do begin XR:= (MATMAT(R, N, I, RM1, AI, AI) - MATMAT(R, N, I, RM1, AR, AR)) / T; XI:= ( - MATMAT(R, N, I, RM1, AR, AI) - MATMAT(R, N, I, RM1, AI, AR)) / T; ELMROWCOL(R, N, I, RM1, AR, AR, XR); ELMROWCOL(R, N, I, RM1, AR, AI, XI); ELMROWCOL(R, N, I, RM1, AI, AR, XI); ELMROWCOL(R, N, I, RM1, AI, AI, - XR) end; HSHCOMPRD(R, N, R, N, RM1, AR, AI, AR, AI, T); end; DEL[RM1]:= T; RM1:= R end FORR; if N > 1 then CARPOL(AR[N,NM1], AI[N,NM1], B[NM1], TR[N], TI[N]); RM1:= 1; TR[1]:= 1; TI[1]:= 0; for R:= 2 step 1 until N do begin COMMUL(TR[RM1], TI[RM1], TR[R], TI[R], TR[R], TI[R]); COMCOLCST(1, RM1, R, AR, AI, TR[R], TI[R]); COMROWCST(R + 1, N, R, AR, AI, TR[R], - TI[R]); RM1:= R end; end HSHCOMHES eop