Contributor: ALEKSANDAR DLABAC

{
             лллллллллллллллллллллллллллллллллллллллллллллллллл
             лллнммммммммммммммммммммммммммммммммммммммммммолллББ
             лллнлл                                      ллолллББ
             лллнлл           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])