code 34260; procedure HSHREABID(A, M, N, D, B, EM); value M, N; integer M, N; array A, D, B, EM; begin integer I, J, I1; real NORM, MACHTOL, W, S, F, G, H; NORM:= 0; for I:= 1 step 1 until M do begin W:= 0; for J:= 1 step 1 until N do W:= ABS(A[I,J]) + W; if W > NORM then NORM:= W end; MACHTOL:= EM[0] * NORM; EM[1]:= NORM; for I:= 1 step 1 until N do begin I1:= I + 1; S:= TAMMAT(I1, M, I, I, A, A); if S < MACHTOL then D[I]:= A[I,I] else begin F:= A[I,I]; S:= F * F + S; D[I]:= G:= if F < 0 then SQRT(S) else - SQRT(S); H:= F * G - S; A[I,I]:= F - G; for J:= I1 step 1 until N do ELMCOL(I, M, J, I, A, A, TAMMAT(I, M, I, J, A, A) / H) end; if I < N then begin S:= MATTAM(I1 + 1, N, I, I, A, A); if S < MACHTOL then B[I]:= A[I,I1] else begin F:= A[I,I1]; S:= F * F + S; B[I]:= G:= if F < 0 then SQRT(S) else - SQRT(S); H:= F * G - S; A[I,I1]:= F - G; for J:= I1 step 1 until M do ELMROW(I1, N, J, I, A, A, MATTAM(I1, N, I, J, A, A) / H) end end end end HSHREABID eop