You are on page 1of 2

!

*********************** /* CALCULATING INVERSES */


*****************************
subroutine inv()

do i=1,100
do j=1,100
array(i,j)=0
in(i,j)=0
enddo
temp1(i)=0
temp2(i)=0
enddo
! /* converting inverse matrix to identity matrix */
do i=1,n
in(i,i)=1
enddo
! /* calculating inverse */

i=1;j=1;k=0;l=0;o=0
do while(i < (n+1))
if(array(i,j) == 0)then
z=i; l=j
do k=z,n
if(array(k,l) .ne. 0)then

! /* swaping the rows */


do o=1,n
temp1(o) = array(k,o)
temp2(o) = in(k,o)
array(k,o) = array(i,o)
in(k,o) = in(i,o)
array(i,o) = temp1(o)
in(i,o) = temp2(o)
enddo
goto 20
endif
if (k==(n))then
bl = 1
endif
20 enddo
endif
var=array(i,j)
if(var .ne. 0 )then
do o=1,n
array(i,o) = array(i,o)/var
in(i,o) = in(i,o)/var
enddo
endif
o=1
do while (o < (n+1))
if(o==i)then
o = o + 1
endif
if(array(o,j) == 0)then
else
var = array(o,j)
do p=1,n
array(o,p) = array(o,p) - ( var *array(i
,p))
in(o,p) = in(o,p) - ( var *in(i,p))
enddo
endif
o=o+1
end do

if(bl==1)then
i = i - 1
endif
bl=0
j=j+1
i=i+1
end do

endsubroutine

You might also like