JuliaArrays/LazyArrays.jl

Method ambiguity for ldiv(Diagonal{<:FillLayout}, LazyLayout)

Closed this issue · 0 comments

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.