subroutine gauss(a, b)
implicit none
real(8), intent (inout) :: a(:,:)
real(8), intent (inout) :: b(:)
real(8) :: det, piv
integer :: i, j, k, n
n = size(b)
det = 1d0
do k = 1, n-1
piv = a(k,k)
if (dabs(piv) < 1.e-12) then
print*,"Pivote nulo en la etapa: ", k
stop
end if
det = det * piv
a(k+1:n, k) = a(k+1:n, k)/piv
do j = k+1, n
a(k+1:n, j) = a(k+1:n, j)-a(k+1:n, k)*a(k, j)
end do
b(k+1:n) = b(k+1:n)-a(k+1:n, k)*b(k)
end do
if (dabs(a(n, n)) < 1.e-12) then
print*,"Pivote nulo en la etapa: ", n
stop
end if
det = detgauss*a(n, n)
print*,"Determinante: ", det
return
end subroutine
gtyh3td6