Skip to content

cholfact and bkfact fail for non-<:StridedMatrix types #377

@Sacha0

Description

@Sacha0

Similar to #375, cholfact and bkfact fail for matrices that are not subtypes of StridedMatrix. Contrast with qrfact, which succeeds for many more matrix types. (The difference seems to be that qrfact has a fallback that gracefully handles <:AbstractArrays more generally. Fixing this may be as simple as adding such ~five-line fallbacks for bkfact and cholfact.) Best!

julia> VERSION
v"0.6.0-dev.979"

julia> bkfact(SymTridiagonal(fill(2, 4), ones(3)))
ERROR: MethodError: no method matching bkfact(::SymTridiagonal{Float64})
Closest candidates are:
  bkfact(::Union{Hermitian{T,S},Symmetric{T,S}}) at linalg/symmetric.jl:183
  bkfact{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}}) at linalg/bunchkaufman.jl:72
  bkfact{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}}, ::Symbol) at linalg/bunchkaufman.jl:72
  ...

(Yes, LDLt would be better for [edit: positive- or quasi-definite] SymTridiagonals.) (Edited to include cholfact.)

Metadata

Metadata

Assignees

No one assigned

    Labels

    HacktoberfestGood for Hacktoberfest participants

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions