C program for finding the inverse of an n x n matrix DIMENSION a(10,10),m(10),l(10) nn=10 DO 2 j=1,nn ak=nn-j+1 DO 2 i=1,nn IF (j-i)7,2,2 7 ak=ak-1.0 2 a(i,j)=ak 232 PRINT [..the matrix to invert.] DO 230 i=1,nn PRINT [.] DO 230 mm=1,nn PRINT a(i,mm)[ ,4,1] 230 CONTINUE n=nn C search for largest element d=1.0 DO 80 k=1,n l(k)=k m(k)=k biga=a(k,k) DO 20 i=k,n DO 20 j=k,n IF(absf(biga)-absf(a(i,j)))10,20,20 10 biga=a(i,j) l(k)=i m(k)=j 20 CONTINUE j=l(k) IF(l(k)-k)35,35,25 25 DO 30 i=1,n hold=-a(k,i) a(k,i)=a(j,i) 30 a(j,i)=hold C interchange columns 35 i=m(k) IF(m(k)-k)45,45,37 37 DO 40 j=1,n hold=-a(j,k) a(j,k)=a(j,i) 40 a(j,i)=hold 45 DO 55 i=1,n 46 IF(i-k)50,55,50 50 a(i,k)=a(i,k)\(-a(k,k)) 55 CONTINUE C reduce matrix DO 65 i=1,n DO 65 j=1,n 56 IF(i-k)57,65,57 57 IF(j-k)60,65,60 60 a(i,j)=a(i,k)*a(k,j)+a(i,j) 65 CONTINUE DO 75 j=1,n 68 IF(j-k)70,75,70 70 a(k,j)=a(k,j)\a(k,k) 75 CONTINUE d=d*a(k,k) a(k,k)=1.0\a(k,k) 80 CONTINUE C final row and column interchange k=n 100 k=(k-1) IF(k)150,150,103 103 i=l(k) IF(i-k)120,120,105 105 DO 110 j=1,n hold=a(j,k) a(j,k)=-a(j,i) 110 a(j,i)=hold 120 j=m(k) IF(j-k)100,100,125 125 DO 130 i=1,n hold=a(k,i) a(k,i)=-a(j,i) 130 a(j,i)=hold GO TO 100 150 CONTINUE IF(nn-10)3000,250,3000 3000 STOP 7 250 CONTINUE PRINT [..the inverse.] DO 210 i=1,nn PRINT [.] DO 210 mm=1,nn PRINT a(i,mm)[ ,3,3] 210 CONTINUE STOP 6 END