code 34194; comment MCA 2424; integer procedure COMEIG1(A, N, EM, RE, IM, VEC); value N; integer N; array A, EM, RE, IM, VEC; begin integer I, J, K, PJ, ITT; real X, Y, MAX, NEPS; array AB[1:N,1:N], D, U, V[1:N]; integer array INT, INT0[1:N]; procedure TRANSFER; begin integer I, J; for I:= 1 step 1 until N do for J:= (if I = 1 then 1 else I - 1) step 1 until N do AB[I,J]:= A[I,J] end TRANSFER; EQILBR(A, N, EM, D, INT0); TFMREAHES(A, N, EM, INT); TRANSFER; K:= COMEIG1:= COMVALQRI(AB, N, EM, RE, IM); NEPS:= EM[0] * EM[1]; MAX:= 0; ITT:= 0; for I:= K + 1 step 1 until N do begin X:= RE[I]; Y:= IM[I]; PJ:= 0; AGAIN: for J:= K + 1 step 1 until I - 1 do begin if ((X - RE[J]) ** 2 + (Y - IM[J]) ** 2 <= NEPS ** 2) then begin if PJ = J then NEPS:= EM[2] * EM[1] else PJ:= J; X:= X + 2 * NEPS; goto AGAIN end end; RE[I]:= X; TRANSFER; if Y ^= 0 then begin COMVECHES(AB, N, RE[I], IM[I], EM, U, V); for J:= 1 step 1 until N do VEC[J,I]:= U[J]; I:= I + 1; RE[I]:= X end else REAVECHES(AB, N, X, EM, V); for J:= 1 step 1 until N do VEC[J,I]:= V[J]; if EM[7] > MAX then MAX:= EM[7]; ITT:= if ITT > EM[9] then ITT else EM[9] end; EM[7]:= MAX; EM[9]:= ITT; BAKREAHES2(A, N, K + 1, N, INT, VEC); BAKLBR(N, K + 1, N, D, INT0, VEC); COMSCL(VEC, N, K + 1, N, IM) end COMEIG1; eop