Contributor: ALEKSANDAR DLABAC

 Program MatrixInversionExample;
{
             غغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغ
             غغغفــــــــــــــــــــــــــــــــــــــــــقغغغ±±
             غغغفغغ                                      غغقغغغ±±
             غغغفغغ           Matrix inversion           غغقغغغ±±
             غغغفغغ                                      غغقغغغ±±
             غغغفغغ           Aleksandar Dlabac          غغقغغغ±±
             غغغفغغ    (C) 1995. Dlabac Bros. Company    غغقغغغ±±
             غغغفغغ    ------------------------------    غغقغغغ±±
             غغغفغغ      adlabac@urcpg.urc.cg.ac.yu      غغقغغغ±±
             غغغفغغ      adlabac@urcpg.pmf.cg.ac.yu      غغقغغغ±±
             غغغفغغ                                      غغقغغغ±±
             غغغفككككككككككككككككككككككككككككككككككككككككككقغغغ±±
             غغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغغ±±
               ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
}

   {   Gausian algorithm for matrix inversion  }

   Const MaxN = 10;

   Type Row    = array [1..MaxN] of real;
        Matrix = array [1..MaxN] of Row;

   Var I, J        : integer;
       InversionOK : Boolean;
       A           : Matrix;

   { A is matrix to be inverted, and N is dimension of matrix. }
   { Result is return in A.                                    }

   Procedure MatrixInversion (Var A:Matrix; N:integer);
     Var I, J, K : integer;
         Factor  : real;
         Temp    : Row;
         B       : Matrix;
       Begin
         InversionOK:=False;
         For I:=1 to N do
           For J:=1 to N do
             If I=J then
               B [I,J]:=1
                    else
               B [I,J]:=0;
         For I:=1 to N do
           Begin
             For J:=I+1 to N do
               If Abs (A [I,I])