subroutine lu6L ( inform, m, n, v, &
lena, luparm, parmlu, a, indc, indr, lenc )
integer(ip), intent(in) :: m, n, lena
integer(ip), intent(in) :: indc(lena), indr(lena), lenc(n)
real(rp), intent(in) :: a(lena)
integer(ip), intent(inout) :: luparm(30)
real(rp), intent(inout) :: parmlu(30), v(m)
integer(ip), intent(out) :: inform
!------------------------------------------------------------------
! lu6L solves L v = v(input).
!
! 15 Dec 2002: First version derived from lu6sol.
! 15 Dec 2002: Current version.
! 13 Dec 2011: First f90 version.
!------------------------------------------------------------------
integer(ip) :: i, ipiv, j, k, l, l1, ldummy, len, lenL, lenL0, numL, numL0
real(rp) :: small, vpiv
numL0 = luparm(20)
lenL0 = luparm(21)
lenL = luparm(23)
small = parmlu(3)
inform = 0
l1 = lena + 1
do k = 1, numL0
len = lenc(k)
l = l1
l1 = l1 - len
ipiv = indr(l1)
vpiv = v(ipiv)
if (abs(vpiv) > small) then
!***** This loop could be coded specially.
do ldummy = 1, len
l = l - 1
j = indc(l)
v(j) = v(j) + a(l)*vpiv
end do
end if
end do
l = lena - lenL0 + 1
numL = lenL - lenL0
!***** This loop could be coded specially.
do ldummy = 1, numL
l = l - 1
i = indr(l)
if (abs(v(i)) > small) then
j = indc(l)
v(j) = v(j) + a(l)*v(i)
end if
end do
! Exit.
luparm(10) = inform
end subroutine lu6L