[pascal]Macierze-problem z procedura

Poniżej wkleiłem procedurę która potrzebna jest do obliczenia i sprawdzenia macierzy. Jednak podczas pracy nad tą procedurą nikt nie tłumaczył co jaka pętla robi i po co ona jest, a chciałbym takową wiedzę mieć. czy może ktoś ładnie krótkimi komentarzami powyjaśniać co nie co?

PROCEDURE GAUSS(A:MAC;B:MAC; VAR X:MAC; N,L:INTEGER; EPS:REAL; VAR IST:BOOLEAN; VAR DET:REAL);

VAR

M:REAL; I,J,K:INTEGER; LICZ:INTEGER;

BEGIN

IST:=TRUE; LICZ:=1;

FOR I:=1 TO N-1 DO BEGIN


M:=ABS(A[I,I]); K:=I;

FOR J:=I+1 TO N DO

IF ABS (A[J,I])>M THEN BEGIN

M:=ABS(A[J,I]); K:=J; END;

IF M
EXIT; END;

IF K>I THEN BEGIN

FOR J:=1 TO L DO BEGIN

M:=B[I,J]; B[I,J]:=B[K,J];

B[K,J]:=M;END;

 LICZ:=-LICZ;

FOR J:=1 TO N DO BEGIN

M:=A[I,J]; A[I,J]:=A[K,J];

A[K,J]:=M; END;

END;


FOR J:=I+1 TO N DO BEGIN

M:=-A[J,I]/A[I,I];

FOR K:= 1 TO L DO BEGIN

B[J,K]:=B[J,K]+M*B[I,K]; END;


FOR K:=I TO N DO

A[J,K]:=A[J,K]+M*A[I,K];

END;

END;

FOR K:=L DOWNTO 1 DO

FOR I:=N DOWNTO 1 DO BEGIN

M:=0;

FOR J:=I+1 TO N DO

M:=M+X[J,K]*A[I,J];

X[I,K]:=(B[I,K]-M)/A[I,I];

END;

To się pyta podczas “pracy nad tą procedurą”.

Procedura nie jest skończona, pozbawiona formatowania, napisana bardzo bałaganiarsko.

Nie sądzę aby ktoś chciał za darmo w tym bajzlu grzebać.

Właśnie sam mam ogromny problem z poukładaniem tego w całość nie wspominając już by coś z tego zrozumieć. Trudno będzie trzeba siąść i analizować krok po kroku