@@ -26,17 +26,19 @@ Random.seed!(1)
2626 ev += im* convert (Vector{elty}, rand (1 : 10 , n- 1 ))
2727 end
2828 end
29+ dv0 = zeros (elty, 0 )
30+ ev0 = zeros (elty, 0 )
2931
3032 @testset " Constructors" begin
31- for (x, y) in ((dv, ev), (GenericArray (dv), GenericArray (ev)))
33+ for (x, y) in ((dv0, ev0), ( dv, ev), (GenericArray (dv), GenericArray (ev)))
3234 # from vectors
3335 ubd = Bidiagonal (x, y, :U )
3436 lbd = Bidiagonal (x, y, :L )
35- @test ubd != lbd
37+ @test ubd != lbd || x === dv0
3638 @test ubd. dv === x
3739 @test lbd. ev === y
3840 @test_throws ArgumentError Bidiagonal (x, y, :R )
39- @test_throws DimensionMismatch Bidiagonal (x, x, :U )
41+ x == dv0 || @test_throws DimensionMismatch Bidiagonal (x, x, :U )
4042 @test_throws MethodError Bidiagonal (x, y)
4143 # from matrix
4244 @test Bidiagonal (ubd, :U ) == Bidiagonal (Matrix (ubd), :U ) == ubd
@@ -593,4 +595,44 @@ Base.transpose(n::MyNotANumberType) = n
593595 @test transpose (copy (tB)) == B
594596end
595597
598+ @testset " empty bidiagonal matrices" begin
599+ dv0 = zeros (0 )
600+ ev0 = zeros (0 )
601+ zm = zeros (0 , 0 )
602+ ubd = Bidiagonal (dv0, ev0, :U )
603+ lbd = Bidiagonal (dv0, ev0, :L )
604+ @test size (ubd) == (0 , 0 )
605+ @test_throws BoundsError getindex (ubd, 1 , 1 )
606+ @test_throws BoundsError setindex! (ubd, 0.0 , 1 , 1 )
607+ @test similar (ubd) == ubd
608+ @test similar (lbd, Int) == zeros (Int, 0 , 0 )
609+ @test ubd == zm
610+ @test lbd == zm
611+ @test ubd == lbd
612+ @test ubd * ubd == ubd
613+ @test lbd + lbd == lbd
614+ @test lbd' == ubd
615+ @test ubd' == lbd
616+ @test triu (ubd, 1 ) == ubd
617+ @test triu (lbd, 1 ) == ubd
618+ @test tril (ubd, - 1 ) == ubd
619+ @test tril (lbd, - 1 ) == ubd
620+ @test_throws ArgumentError triu (ubd)
621+ @test_throws ArgumentError tril (ubd)
622+ @test sum (ubd) == 0.0
623+ @test reduce (+ , ubd) == 0.0
624+ @test reduce (+ , ubd, dims= 1 ) == zeros (1 , 0 )
625+ @test reduce (+ , ubd, dims= 2 ) == zeros (0 , 1 )
626+ @test hcat (ubd, ubd) == zm
627+ @test vcat (ubd, lbd) == zm
628+ @test hcat (lbd, ones (0 , 3 )) == ones (0 , 3 )
629+ @test fill! (copy (ubd), 1.0 ) == ubd
630+ @test map (abs, ubd) == zm
631+ @test lbd .+ 1 == zm
632+ @test lbd + ubd isa Bidiagonal
633+ @test lbd .+ ubd isa Bidiagonal
634+ @test ubd * 5 == ubd
635+ @test ubd .* 3 == ubd
636+ end
637+
596638end # module TestBidiagonal
0 commit comments