You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
lufact fails for Diagonal, Bidiagonal, and SymTridiagonal matrices. (I realize the former two are in factored form and LDLt is a better choice for SymTridiagonal.) Contrast with qrfact, which succeeds for all such types. (The difference seems to be that qrfact calls similar to construct necessary fully mutable containers, whereas lufact merely copies the input matrix. The fix may be as simple as replacing the copy with similar and an appropriate type computation.) Ref. #136. Best!
julia>VERSIONv"0.6.0-dev.979"
julia>lufact(Diagonal(ones(4)))
ERROR: MethodError: no method matching lufact!(::Diagonal{Float64}, ::Type{Val{true}})
Closest candidates are:lufact!{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64}}(::Union{Base.ReshapedArray{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64},2,A<:DenseArray,MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N}}},DenseArray{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64},2},SubArray{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64},2,A<:Union{Base.ReshapedArray{T,N,A<:DenseArray,MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N}}},DenseArray},I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex,Colon,Int64,Range{Int64}},N}},L}}, ::Union{Type{Val{false}},Type{Val{true}}}) at linalg/lu.jl:16lufact!(::Union{Base.ReshapedArray{T,2,A<:DenseArray,MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N}}},DenseArray{T,2},SubArray{T,2,A<:Union{Base.ReshapedArray{T,N,A<:DenseArray,MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N}}},DenseArray},I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex,Colon,Int64,Range{Int64}},N}},L}}, ::Union{Type{Val{false}},Type{Val{true}}}) at linalg/lu.jl:31lufact!{T}(::Tridiagonal{T}, ::Union{Type{Val{false}},Type{Val{true}}}) at linalg/lu.jl:261inlufact(::Diagonal{Float64}) at ./linalg/lu.jl:81
julia>lufact(Bidiagonal(fill(2, 4), ones(3), true))
ERROR: MethodError: no method matching lufact!(::Bidiagonal{Float64}, ::Type{Val{true}})
Closest candidates are:lufact!{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64}}(::Union{Base.ReshapedArray{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64},2,A<:DenseArray,MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N}}},DenseArray{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64},2},SubArray{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64},2,A<:Union{Base.ReshapedArray{T,N,A<:DenseArray,MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N}}},DenseArray},I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex,Colon,Int64,Range{Int64}},N}},L}}, ::Union{Type{Val{false}},Type{Val{true}}}) at linalg/lu.jl:16lufact!(::Union{Base.ReshapedArray{T,2,A<:DenseArray,MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N}}},DenseArray{T,2},SubArray{T,2,A<:Union{Base.ReshapedArray{T,N,A<:DenseArray,MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N}}},DenseArray},I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex,Colon,Int64,Range{Int64}},N}},L}}, ::Union{Type{Val{false}},Type{Val{true}}}) at linalg/lu.jl:31lufact!{T}(::Tridiagonal{T}, ::Union{Type{Val{false}},Type{Val{true}}}) at linalg/lu.jl:261inlufact(::Bidiagonal{Float64}) at ./linalg/lu.jl:81
julia>lufact(SymTridiagonal(fill(2, 4), ones(3)))
ERROR: MethodError: no method matching lufact!(::SymTridiagonal{Float64}, ::Type{Val{true}})
Closest candidates are:lufact!{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64}}(::Union{Base.ReshapedArray{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64},2,A<:DenseArray,MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N}}},DenseArray{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64},2},SubArray{T<:Union{Complex{Float32},Complex{Float64},Float32,Float64},2,A<:Union{Base.ReshapedArray{T,N,A<:DenseArray,MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N}}},DenseArray},I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex,Colon,Int64,Range{Int64}},N}},L}}, ::Union{Type{Val{false}},Type{Val{true}}}) at linalg/lu.jl:16lufact!(::Union{Base.ReshapedArray{T,2,A<:DenseArray,MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N}}},DenseArray{T,2},SubArray{T,2,A<:Union{Base.ReshapedArray{T,N,A<:DenseArray,MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N}}},DenseArray},I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex,Colon,Int64,Range{Int64}},N}},L}}, ::Union{Type{Val{false}},Type{Val{true}}}) at linalg/lu.jl:31lufact!{T}(::Tridiagonal{T}, ::Union{Type{Val{false}},Type{Val{true}}}) at linalg/lu.jl:261inlufact(::SymTridiagonal{Float64}) at ./linalg/lu.jl:81
The text was updated successfully, but these errors were encountered:
Also, the matrices in StaticArrays.jl fail for lufact. Besides the inconsistent use of similar, I'm also see a problem that the LU container won't accept a vector container other than Vector, which seems too specific (compare with Eig).
lufact
fails forDiagonal
,Bidiagonal
, andSymTridiagonal
matrices. (I realize the former two are in factored form and LDLt is a better choice forSymTridiagonal
.) Contrast withqrfact
, which succeeds for all such types. (The difference seems to be thatqrfact
callssimilar
to construct necessary fully mutable containers, whereaslufact
merely copies the input matrix. The fix may be as simple as replacing thecopy
withsimilar
and an appropriate type computation.) Ref. #136. Best!The text was updated successfully, but these errors were encountered: