code 34134; procedure LSQORTDEC(A, N, M, AUX, AID, CI); value N, M; integer N, M; array A, AUX, AID; integer array CI; begin integer J, K, KPIV; real BETA, SIGMA, NORM, W, EPS, AKK, AIDK; array SUM[1:M]; NORM:= 0; AUX[3]:= M; for K:= 1 step 1 until M do begin W:= SUM[K]:= TAMMAT(1, N, K, K, A, A); if W > NORM then NORM:= W end; W:= AUX[5]:= SQRT(NORM); EPS:= AUX[2] * W; for K:= 1 step 1 until M do begin SIGMA:= SUM[K]; KPIV:= K; for J:= K + 1 step 1 until M do if SUM[J] > SIGMA then begin SIGMA:= SUM[J]; KPIV:= J end; if KPIV ^= K then begin SUM[KPIV]:= SUM[K]; ICHCOL(1, N, K, KPIV, A) end; CI[K]:= KPIV; AKK:= A[K,K]; SIGMA:= TAMMAT(K, N, K, K, A, A); W:= SQRT(SIGMA); AIDK:= AID[K]:= if AKK < 0 then W else - W; if W < EPS then begin AUX[3]:= K - 1; "GO TO" ENDDEC end; BETA:= 1 / (SIGMA - AKK * AIDK); A[K,K]:= AKK - AIDK; for J:= K + 1 step 1 until M do begin ELMCOL(K, N, J, K, A, A, - BETA * TAMMAT(K, N, K, J, A, A)); SUM[J]:= SUM[J] - A[K,J] ** 2 end end FOR K; ENDDEC: end LSQORTDEC eop