Where is sparse ldlt?

It’s still there (1.7.2)

julia> import SparseArrays

julia> SparseArrays.ldlt
ldlt (generic function with 3 methods)

julia> methods(SparseArrays.ldlt)
# 3 methods for generic function "ldlt":
[1] ldlt(M::SymTridiagonal{T, V} where V<:AbstractVector{T}; shift) where T in LinearAlgebra at C:\Users\stephan\AppData\Local\Programs\Julia-1.7.2\share\julia\stdlib\v1.7\LinearAlgebra\src\ldlt.jl:161
[2] ldlt(A::SuiteSparse.CHOLMOD.Sparse; shift, check, perm) in SuiteSparse.CHOLMOD at C:\Users\stephan\AppData\Local\Programs\Julia-1.7.2\share\julia\stdlib\v1.7\SuiteSparse\src\cholmod.jl:1336
[3] ldlt(A::Union{Hermitian{Complex{T}, SparseMatrixCSC{Complex{T}, Int64}}, Hermitian{T, SparseMatrixCSC{T, Int64}}, Symmetric{T, SparseMatrixCSC{T, Int64}}, SparseMatrixCSC{Complex{T}}, SparseMatrixCSC{T}}; kws...) where T<:Real in SuiteSparse.CHOLMOD at C:\Users\stephan\AppData\Local\Programs\Julia-1.7.2\share\julia\stdlib\v1.7\SuiteSparse\src\cholmod.jl:1396

but strangely doesn’t appear in the tab-completion. I’ve had that happening recently with another package, which tripped me up too.

This happens apparently because SparseArrays extends ldlt from LinearAlgebra. Why it works this way or doesn’t, I cannot say.

julia> module ModA
       export f
       f(x::Float64) = x
       end
Main.ModA

julia> module ModB
       import ..ModA: f
       f(x::Int) = x^2
       end
Main.ModB

julia> ModA.

eval    f        include
julia> ModB.

eval    include

julia> ModB.f
f (generic function with 2 methods)
1 Like