@@ -7,20 +7,12 @@ using Test
7
7
@testset " linalg.jl" begin
8
8
rng = MersenneTwister (123456 )
9
9
N1, N2, N3 = 3 , 4 , 5
10
- N = N1 + N2 + N3
11
10
blocks1 = [rand (rng, N1, N1), rand (rng, N2, N2), rand (rng, N3, N3)]
12
11
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))
24
16
25
17
@testset " mul!" begin
26
18
c = similar (b1)
@@ -60,7 +52,7 @@ using Test
60
52
61
53
@testset " eigvals on LinearAlgebra types" begin
62
54
# `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 ] ))
64
56
@test eigvals (b_herm) ≈ eigvals (Matrix (b_herm))
65
57
@test eigvals (b_herm, 1.0 , 2.0 ) ≈ eigvals (Hermitian (Matrix (b_herm)), 1.0 , 2.0 )
66
58
end
@@ -80,21 +72,21 @@ using Test
80
72
0.0 1.0 5.0
81
73
0.0 0.0 3.0 ]
82
74
83
- B = BlockDiagonal (T ([X, X]))
75
+ B = BlockDiagonal (V ([X, X]))
84
76
C = cholesky (B)
85
77
@test C isa Cholesky{Float64, <: BlockDiagonal{Float64} }
86
78
@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' ]))
89
81
@test C. UL ≈ C. U
90
82
@test C. uplo === ' U'
91
83
@test C. info == 0
92
84
93
85
M = BlockDiagonal (map (Matrix, blocks (C. L)))
94
86
C = Cholesky (M, ' L' , 0 )
95
87
@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' ]))
98
90
@test C. UL ≈ C. L
99
91
@test C. uplo === ' L'
100
92
@test C. info == 0
@@ -104,7 +96,7 @@ using Test
104
96
X = [ 4 12 - 16
105
97
12 37 - 43
106
98
- 16 - 43 98 ]
107
- B = BlockDiagonal (T ([X, X]))
99
+ B = BlockDiagonal (V ([X, X]))
108
100
109
101
@testset " full=$full " for full in (true , false )
110
102
0 commit comments