

	program GAUSS

	implicit none

!seccion de variables
integer::n1,m1,n2,m2, i, j, mult, l, det, k, suma
real(8),allocatable,dimension(:,:):: A, B, C, D, resultad, x




!lectura de datos
open(unit=21, file="matriz.entrada", status="unknown")
read (21,*)m1, m2, n1, n2
allocate (A(m1,N1), b(m2,n2), c(m1,n1), d(m1,n1), resultad(m1,n2))

do i=1,m1
	read(21,*)(a(i,j), j=1,m1)
	enddo
	do i=1, m2
read(21,*)(b(i,j), j=1,m2)
enddo
close (21)


do k=1,n1
	do i=k+1,n1
          do j=k+1,m1
        a(i,j)=a(i,j) - (a(k,j)/a(k,k))*a(i,k)
          END do
        END do
end do
do i=1,3
 WRITE(*,*) (a(i,j), j=1,4)
 END do

do i=n1,1,-1
IF(i==3)then
x(i)= a(n1,m1)/a(n1,n1)
else
suma=0
do j=i+1,n
suma=suma+a(i,j)*x(j)
end do
x(i)= (a(i,m1)-(suma))/a(i,i)
END if
end do
do i=1,3
WRITE(*,*) "x",i,"=",    x(i)
end do


!impresion de resultados
open(unit=31, file="matriz.salida", status="unknown")
write (31,*) m1, n1, m2, n2
write(31,*) "_____________________________________________________________"
do i=1, m1
write(31,*) (a(i,j), j=1,m1)
enddo

write(31,*) "_____________________________________________________________"
do i=1, m1
write(31,*) (b(i,j), j=1,m1)
enddo






	end program GAUSS


