code 34300; procedure DEC(A, N, AUX, P); value N; integer N; array A, AUX; integer array P; begin integer I, K, K1, PK, D; real R, S, EPS; array V[1:N]; R:= -1; for I:= 1 step 1 until N do begin S:= SQRT(MATTAM(1,N,I,I,A,A)); if S > R then R:= S; V[I]:= 1/S end; EPS:= AUX[2] * R; D:= 1; for K:= 1 step 1 until N do begin R:= - 1; K1:= K - 1; for I:= K step 1 until N do begin A[I,K]:= A[I,K] - MATMAT(1, K1, I, K, A, A); S:= ABS(A[I,K]) * V[I]; if S > R then begin R:= S; PK:= I end end LOWER; P[K]:= PK; V[PK]:= V[K]; S:= A[PK,K]; if ABS(S) < EPS then goto END; if S < 0 then D:= -D; if PK ^= K then begin D:= - D; ICHROW(1, N, K, PK, A) end; for I:= K + 1 step 1 until N do A[K,I]:= (A[K,I] - MATMAT(1, K1, K, I, A, A)) / S end LU; K:= N + 1; END: AUX[1]:= D; AUX[3]:= K - 1 end DEC; eop