@@ -7,20 +7,12 @@ using Test
77@testset " linalg.jl" begin
88 rng = MersenneTwister (123456 )
99 N1, N2, N3 = 3 , 4 , 5
10- N = N1 + N2 + N3
1110 blocks1 = [rand (rng, N1, N1), rand (rng, N2, N2), rand (rng, N3, N3)]
1211 blocks2 = [rand (rng, N1, N1), rand (rng, N3, N3), rand (rng, N2, N2)]
13- blocks3 = [rand (rng, N1, N1), rand (rng, N2, N2), rand (rng, N2, N2)]
14-
15- @testset " $T " for (T, (b1, b2, b3)) in (
16- Tuple => (BlockDiagonal (Tuple (blocks1)), BlockDiagonal (Tuple (blocks2)), BlockDiagonal (Tuple (blocks3))),
17- Vector => (BlockDiagonal (blocks1), BlockDiagonal (blocks2), BlockDiagonal (blocks3)),
18- )
19- A = rand (rng, N, N + N1)
20- B = rand (rng, N + N1, N + N2)
21- A′, B′ = A' , B'
22- a = rand (rng, N)
23- b = rand (rng, N + N1)
12+
13+ @testset for V in (Tuple, Vector)
14+ b1 = BlockDiagonal (V (blocks1))
15+ b2 = BlockDiagonal (V (blocks2))
2416
2517 @testset " mul!" begin
2618 c = similar (b1)
@@ -60,7 +52,7 @@ using Test
6052
6153 @testset " eigvals on LinearAlgebra types" begin
6254 # `eigvals` has different methods for different types, e.g. Hermitian
63- b_herm = BlockDiagonal (T ( Hermitian (rand (rng, 3 , 3 ) + I) for _ in 1 : 3 ))
55+ b_herm = BlockDiagonal (V ([ Hermitian (rand (rng, 3 , 3 ) + I) for _ in 1 : 3 ] ))
6456 @test eigvals (b_herm) ≈ eigvals (Matrix (b_herm))
6557 @test eigvals (b_herm, 1.0 , 2.0 ) ≈ eigvals (Hermitian (Matrix (b_herm)), 1.0 , 2.0 )
6658 end
@@ -80,21 +72,21 @@ using Test
8072 0.0 1.0 5.0
8173 0.0 0.0 3.0 ]
8274
83- B = BlockDiagonal (T ([X, X]))
75+ B = BlockDiagonal (V ([X, X]))
8476 C = cholesky (B)
8577 @test C isa Cholesky{Float64, <: BlockDiagonal{Float64} }
8678 @test C. U ≈ cholesky (Matrix (B)). U
87- @test C. U ≈ BlockDiagonal (T ([U, U]))
88- @test C. L ≈ BlockDiagonal (T ([U' , U' ]))
79+ @test C. U ≈ BlockDiagonal (V ([U, U]))
80+ @test C. L ≈ BlockDiagonal (V ([U' , U' ]))
8981 @test C. UL ≈ C. U
9082 @test C. uplo === ' U'
9183 @test C. info == 0
9284
9385 M = BlockDiagonal (map (Matrix, blocks (C. L)))
9486 C = Cholesky (M, ' L' , 0 )
9587 @test C. U ≈ cholesky (Matrix (B)). U
96- @test C. U ≈ BlockDiagonal (T ([U, U]))
97- @test C. L ≈ BlockDiagonal (T ([U' , U' ]))
88+ @test C. U ≈ BlockDiagonal (V ([U, U]))
89+ @test C. L ≈ BlockDiagonal (V ([U' , U' ]))
9890 @test C. UL ≈ C. L
9991 @test C. uplo === ' L'
10092 @test C. info == 0
@@ -104,7 +96,7 @@ using Test
10496 X = [ 4 12 - 16
10597 12 37 - 43
10698 - 16 - 43 98 ]
107- B = BlockDiagonal (T ([X, X]))
99+ B = BlockDiagonal (V ([X, X]))
108100
109101 @testset " full=$full " for full in (true , false )
110102
0 commit comments