subroutine lu6Lt ( 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
!------------------------------------------------------------------
! lu6Lt 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, l2, len, lenL, lenL0, numL0
real(rp) :: small, sum
numL0 = luparm(20)
lenL0 = luparm(21)
lenL = luparm(23)
small = parmlu(3)
inform = 0
l1 = lena - lenL + 1
l2 = lena - lenL0
!***** This loop could be coded specially.
do l = l1, l2
j = indc(l)
if (abs(v(j)) > small) then
i = indr(l)
v(i) = v(i) + a(l)*v(j)
end if
end do
do k = numL0, 1, -1
len = lenc(k)
sum = zero
l1 = l2 + 1
l2 = l2 + len
!***** This loop could be coded specially.
do l = l1, l2
j = indc(l)
sum = sum + a(l)*v(j)
end do
ipiv = indr(l1)
v(ipiv) = v(ipiv) + sum
end do
! Exit.
luparm(10) = inform
end subroutine lu6Lt