This problem is what ArrayLayouts.jl is designed to solve, but note that view(L,1:n,1:n)
does not know from the type information that the view is lower triangular: this means its not clear that ldiv!
can be overwrite the result. view(L,Base.OneTo(n),Base.OneTo(n))
is a bit better though not yet supported, but would be easy to add a LowerTrapezoidalLayout
for this case so that ArrayLayouts.ldiv!(view(L,Base.OneTo(n),Base.OneTo(n)), Y)
works.
I don’t have time to do this myself but happy to walk you through it if you are willing to make a PR.