From 4fefccffa1f699d402438737cd9e9e1cb7b5809a Mon Sep 17 00:00:00 2001 From: Katharine Hyatt Date: Thu, 23 Sep 2021 06:12:19 -0400 Subject: [PATCH] Fix bug and add tests for Bidiagonal (#42354) --- stdlib/LinearAlgebra/src/bidiag.jl | 2 +- stdlib/LinearAlgebra/test/bidiag.jl | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/stdlib/LinearAlgebra/src/bidiag.jl b/stdlib/LinearAlgebra/src/bidiag.jl index 1a75c6a9287f06..e44def613dea34 100644 --- a/stdlib/LinearAlgebra/src/bidiag.jl +++ b/stdlib/LinearAlgebra/src/bidiag.jl @@ -735,7 +735,7 @@ function ldiv!(A::Bidiagonal, b::AbstractVector) end if N == 0 - return x + return b end @inbounds begin diff --git a/stdlib/LinearAlgebra/test/bidiag.jl b/stdlib/LinearAlgebra/test/bidiag.jl index d9efdc1fd3ee60..274ca24fe018d5 100644 --- a/stdlib/LinearAlgebra/test/bidiag.jl +++ b/stdlib/LinearAlgebra/test/bidiag.jl @@ -269,6 +269,11 @@ Random.seed!(1) end end end + zdv = Vector{elty}(undef, 0) + zev = Vector{elty}(undef, 0) + zA = Bidiagonal(zdv, zev, :U) + zb = Vector{elty}(undef, 0) + @test ldiv!(zA, zb) === zb end if elty <: BlasReal @@ -549,6 +554,14 @@ end B = Bidiagonal(dv, ev, uplo) @test dot(x, B, y) ≈ dot(B'x, y) ≈ dot(x, Matrix(B), y) end + dv = Vector{elty}(undef, 0) + ev = Vector{elty}(undef, 0) + x = Vector{elty}(undef, 0) + y = Vector{elty}(undef, 0) + for uplo in (:U, :L) + B = Bidiagonal(dv, ev, uplo) + @test dot(x, B, y) ≈ dot(zero(elty), zero(elty), zero(elty)) + end end end