From ff152ff0a3bd6e5f44287ece36d3a3855f771eb3 Mon Sep 17 00:00:00 2001 From: Lukas Devos Date: Wed, 11 Jun 2025 20:44:47 -0400 Subject: [PATCH 1/3] Special case svd_full on empty matrices --- src/implementations/svd.jl | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/implementations/svd.jl b/src/implementations/svd.jl index 17c621aa..a7d4c9e5 100644 --- a/src/implementations/svd.jl +++ b/src/implementations/svd.jl @@ -74,6 +74,12 @@ function svd_full!(A::AbstractMatrix, USVᴴ, alg::LAPACK_SVDAlgorithm) fill!(S, zero(eltype(S))) m, n = size(A) minmn = min(m, n) + if minmn == 0 + one!(U) + zero!(S) + one!(Vᴴ) + return USVᴴ + end if alg isa LAPACK_QRIteration isempty(alg.kwargs) || throw(ArgumentError("LAPACK_QRIteration does not accept any keyword arguments")) From 252fd76b6e8a5cc36c1597e1a8d24b4ba8c23d18 Mon Sep 17 00:00:00 2001 From: Lukas Devos Date: Wed, 11 Jun 2025 20:46:16 -0400 Subject: [PATCH 2/3] Also add tests --- test/svd.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/svd.jl b/test/svd.jl index 40de0897..375dc8ea 100644 --- a/test/svd.jl +++ b/test/svd.jl @@ -8,7 +8,7 @@ using MatrixAlgebraKit: TruncatedAlgorithm, TruncationKeepAbove, diagview @testset "svd_compact! for T = $T" for T in (Float32, Float64, ComplexF32, ComplexF64) rng = StableRNG(123) m = 54 - @testset "size ($m, $n)" for n in (37, m, 63) + @testset "size ($m, $n)" for n in (37, m, 63, 0) k = min(m, n) if LinearAlgebra.LAPACK.version() < v"3.12.0" algs = (LAPACK_DivideAndConquer(), LAPACK_QRIteration(), LAPACK_Bisection(), @@ -57,7 +57,7 @@ end @testset "svd_full! for T = $T" for T in (Float32, Float64, ComplexF32, ComplexF64) rng = StableRNG(123) m = 54 - @testset "size ($m, $n)" for n in (37, m, 63) + @testset "size ($m, $n)" for n in (37, m, 63, 0) @testset "algorithm $alg" for alg in (LAPACK_DivideAndConquer(), LAPACK_QRIteration()) A = randn(rng, T, m, n) From 8e90ee5abe7964a01758ec9075e535a671e5fd51 Mon Sep 17 00:00:00 2001 From: Lukas Devos Date: Wed, 11 Jun 2025 20:47:26 -0400 Subject: [PATCH 3/3] Bump v0.2.4 --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 287f9950..479074d2 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "MatrixAlgebraKit" uuid = "6c742aac-3347-4629-af66-fc926824e5e4" authors = ["Jutho and contributors"] -version = "0.2.3" +version = "0.2.4" [deps] LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"