diff --git a/Project.toml b/Project.toml index 01d350b7..28e903be 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "ArrayInterface" uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" -version = "7.4.6" +version = "7.4.7" [deps] Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" diff --git a/src/ArrayInterface.jl b/src/ArrayInterface.jl index 6cec03a8..d6872cf2 100644 --- a/src/ArrayInterface.jl +++ b/src/ArrayInterface.jl @@ -473,10 +473,10 @@ cholesky_instance(A, pivot = LinearAlgebra.RowMaximum()) -> cholesky_factorizati Returns an instance of the Cholesky factorization object with the correct type cheaply. """ -function cholesky_instance(A::Matrix{T}, pivot = LinearAlgebra.RowMaximum()) where {T} +function cholesky_instance(A::Matrix{T}, pivot = LinearAlgebra.NoPivot()) where {T} return cholesky(similar(A, 0, 0), pivot, check = false) end -function cholesky_instance(A::SparseMatrixCSC, pivot = LinearAlgebra.RowMaximum()) +function cholesky_instance(A::Union{SparseMatrixCSC,Symmetric{<:Number,<:SparseMatrixCSC}}, pivot = LinearAlgebra.RowMaximum()) cholesky(sparse(similar(A, 1, 1)), check = false) end diff --git a/test/core.jl b/test/core.jl index ee760858..bd0cd6cf 100644 --- a/test/core.jl +++ b/test/core.jl @@ -267,10 +267,19 @@ end @test ArrayInterface.qr_instance(A) isa typeof(qr(A)) if !(eltype(A) <: BigFloat) - @test ArrayInterface.bunchkaufman_instance(A) isa typeof(bunchkaufman(A' * A)) - @test ArrayInterface.cholesky_instance(A) isa typeof(cholesky(A' * A)) - @test ArrayInterface.ldlt_instance(A) isa typeof(ldlt(SymTridiagonal(A' * A))) + @test ArrayInterface.bunchkaufman_instance(A' * A) isa typeof(bunchkaufman(A' * A)) + @test ArrayInterface.cholesky_instance(A' * A) isa typeof(cholesky(A' * A)) + @test ArrayInterface.ldlt_instance(SymTridiagonal(A' * A)) isa typeof(ldlt(SymTridiagonal(A' * A))) @test ArrayInterface.svd_instance(A) isa typeof(svd(A)) end end + + for A in [sparse([1.0 2.0; 3.0 4.0])] + @test ArrayInterface.lu_instance(A) isa typeof(lu(A)) + @test ArrayInterface.qr_instance(A) isa typeof(qr(A)) + if VERSION >= v"1.9-" + @test ArrayInterface.cholesky_instance(A' * A) isa typeof(cholesky(A' * A)) + end + @test ArrayInterface.ldlt_instance(SymTridiagonal(A' * A)) isa typeof(ldlt(SymTridiagonal(A' * A))) + end end \ No newline at end of file