@@ -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)
@@ -148,7 +140,7 @@ using Test
148
140
149
141
@testset " eigvals on LinearAlgebra types" begin
150
142
# `eigvals` has different methods for different types, e.g. Hermitian
151
- b_herm = BlockDiagonal (T ( Hermitian (rand (rng, 3 , 3 ) + I) for _ in 1 : 3 ))
143
+ b_herm = BlockDiagonal (V ([ Hermitian (rand (rng, 3 , 3 ) + I) for _ in 1 : 3 ] ))
152
144
@test eigvals (b_herm) ≈ eigvals (Matrix (b_herm))
153
145
@test eigvals (b_herm, 1.0 , 2.0 ) ≈ eigvals (Hermitian (Matrix (b_herm)), 1.0 , 2.0 )
154
146
end
@@ -168,21 +160,21 @@ using Test
168
160
0.0 1.0 5.0
169
161
0.0 0.0 3.0 ]
170
162
171
- B = BlockDiagonal (T ([X, X]))
163
+ B = BlockDiagonal (V ([X, X]))
172
164
C = cholesky (B)
173
165
@test C isa Cholesky{Float64, <: BlockDiagonal{Float64} }
174
166
@test C. U ≈ cholesky (Matrix (B)). U
175
- @test C. U ≈ BlockDiagonal (T ([U, U]))
176
- @test C. L ≈ BlockDiagonal (T ([U' , U' ]))
167
+ @test C. U ≈ BlockDiagonal (V ([U, U]))
168
+ @test C. L ≈ BlockDiagonal (V ([U' , U' ]))
177
169
@test C. UL ≈ C. U
178
170
@test C. uplo === ' U'
179
171
@test C. info == 0
180
172
181
173
M = BlockDiagonal (map (Matrix, blocks (C. L)))
182
174
C = Cholesky (M, ' L' , 0 )
183
175
@test C. U ≈ cholesky (Matrix (B)). U
184
- @test C. U ≈ BlockDiagonal (T ([U, U]))
185
- @test C. L ≈ BlockDiagonal (T ([U' , U' ]))
176
+ @test C. U ≈ BlockDiagonal (V ([U, U]))
177
+ @test C. L ≈ BlockDiagonal (V ([U' , U' ]))
186
178
@test C. UL ≈ C. L
187
179
@test C. uplo === ' L'
188
180
@test C. info == 0
@@ -192,7 +184,7 @@ using Test
192
184
X = [ 4 12 - 16
193
185
12 37 - 43
194
186
- 16 - 43 98 ]
195
- B = BlockDiagonal (T ([X, X]))
187
+ B = BlockDiagonal (V ([X, X]))
196
188
197
189
@testset " full=$full " for full in (true , false )
198
190
0 commit comments