"CODE" 34291; "PROCEDURE" DECSYM2(A,N,TOL,AUX,P,DETAUX); "VALUE" N;"INTEGER" N;"REAL" TOL; "ARRAY" A,DETAUX;"INTEGER" "ARRAY" P,AUX; "BEGIN" "INTEGER" I,J,K,M,IP1,IP2,DUMMY;"BOOLEAN" ONEBYONE,SYM; "REAL" DET,S,T,ALPHA,LAMBDA,SIGMA,AII,AIP1,AIP1I; AUX[3]:=AUX[4]:=0;SYM:="TRUE";I:=0; "FOR" DUMMY:=0 "WHILE" SYM "AND" (ILAMBDA "THEN" "BEGIN" J:=M;LAMBDA:=ABS(A[I,M]) "END"; T:=ALPHA*LAMBDA;ONEBYONE:="TRUE"; "IF" AIISIGMA "THEN" SIGMA:=ABS(A[M,J]); "FOR" M:=J+1 "STEP" 1 "UNTIL" N "DO" "IF" ABS(A[J,M])>SIGMA "THEN" SIGMA:=ABS(A[J,M]); "IF" SIGMA*AIIIP1 "THEN" "BEGIN" ICHROW(J+1,N,IP1,J,A);ICHROWCOL(IP2,J-1,IP1,J,A); T:=A[I,I];A[I,I]:=A[J,J];A[J,J]:=T; T:=A[I,J];A[I,J]:=A[I,IP1];A[I,IP1]:=T "END"; DET:=A[I,I]*A[IP1,IP1]-A[I,IP1]**2;AIP1I:=A[I,IP1]/DET; AII:=A[I,I]/DET;AIP1:=A[IP1,IP1]/DET;P[I]:=J;P[IP1]:=0; DETAUX[I]:=1;DETAUX[IP1]:=DET; "FOR" J:=IP2 "STEP" 1 "UNTIL" N "DO" "BEGIN" S:=AIP1I*A[IP1,J]-AIP1*A[I,J]; T:=AIP1I*A[I,J]-AII*A[IP1,J];ELMROW(J,N,J,I,A,A,S); ELMROW(J,N,J,IP1,A,A,T);A[I,J]:=S;A[IP1,J]:=T "END"; AUX[3]:=AUX[3]+1;AUX[4]:=AUX[4]+1;I:=IP2; ONEBYONE:="FALSE" "END" "END" "END"; "IF" ONEBYONE "THEN" "BEGIN" "IF" TOL0 "THEN" AUX[3]:=AUX[3]+1 "ELSE" AUX[4]:=AUX[4]+1; "FOR" J:=IP1 "STEP" 1 "UNTIL" N "DO" "BEGIN" S:=-A[I,J]/AII;ELMROW(J,N,J,I,A,A,S);A[I,J]:=S "END" "END";I:=IP1 "END" "END" WHILE I; "IF" I=N "THEN" "BEGIN" "IF" TOL0 "THEN" AUX[3]:=AUX[3]+1 "ELSE" AUX[4]:=AUX[4]+1 "END";DETAUX[N]:=A[N,N] "END"; ENDDEC: AUX[5]:=N-AUX[3]-AUX[4] "END" DECSYM2; "EOP"