Method ambiguity for ldiv(Diagonal{<:FillLayout}, LazyLayout)
Closed this issue · 0 comments
DanielVandH commented
using LazyArrays, FillArrays
X = [1.0 2.0; 3.0 4.0]
Y = ApplyArray(inv, ApplyArray(*, X, [1.0 0.0; 0.0 1.0]))
Z = Diagonal(Ones(2))
Z \ Y
julia> Z \ Y
ERROR: MethodError: copy(::Ldiv{DiagonalLayout{ArrayLayouts.OnesLayout}, LazyArrays.InvLayout{LazyArrays.ApplyLayout{typeof(*)}}, Diagonal{Float64, Ones{Float64, 1, Tuple{Base.OneTo{Int64}}}}, ApplyArray{Float64, 2, typeof(inv), Tuple{ApplyArray{Float64, 2, typeof(*), Tuple{Matrix{Float64}, Matrix{Float64}}}}}}) is ambiguous.
Candidates:
copy(L::Ldiv{<:Any, <:LazyArrays.AbstractLazyLayout})
@ LazyArrays C:\Users\User\.julia\packages\LazyArrays\MLFsy\src\linalg\inv.jl:126
copy(L::Ldiv{D, <:LazyArrays.AbstractLazyLayout}) where D<:DiagonalLayout
@ LazyArrays C:\Users\User\.julia\packages\LazyArrays\MLFsy\src\linalg\inv.jl:128
copy(M::Ldiv{<:DiagonalLayout{<:AbstractFillLayout}})
@ ArrayLayouts C:\Users\User\.julia\packages\ArrayLayouts\3byqH\src\diagonal.jl:49
copy(M::Ldiv{<:DiagonalLayout})
@ ArrayLayouts C:\Users\User\.julia\packages\ArrayLayouts\3byqH\src\diagonal.jl:48
Possible fix, define
copy(::Ldiv{D, StyleB} where StyleB<:LazyArrays.AbstractLazyLayout) where D<:(DiagonalLayout{<:AbstractFillLayout})
Stacktrace:
[1] materialize
@ C:\Users\User\.julia\packages\ArrayLayouts\3byqH\src\ldiv.jl:22 [inlined]
[2] ldiv
@ C:\Users\User\.julia\packages\ArrayLayouts\3byqH\src\ldiv.jl:98 [inlined]
[3] \(x::Diagonal{Float64, Ones{…}}, A::ApplyArray{Float64, 2, typeof(inv), Tuple{…}}; kwds::@Kwargs{})
@ ArrayLayouts C:\Users\User\.julia\packages\ArrayLayouts\3byqH\src\ldiv.jl:174
[4] top-level scope
@ c:\Users\User\.julia\dev\SemiclassicalOrthogonalPolynomials.jl\test\runtests.jl:697
Some type information was truncated. Use `show(err)` to see complete types.