Skip to content

Commit 7b0c5e2

Browse files
committed
Update test_blockdiagonal.jl
- Stop using `Symmtric` in test. Instead use dense matrices. - Adding tests for matrix functions.
1 parent 18ff0bf commit 7b0c5e2

File tree

1 file changed

+25
-2
lines changed

1 file changed

+25
-2
lines changed

test/test_blockdiagonal.jl

+25-2
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ using BlockDiagonalMatrices
22
using LinearAlgebra
33
using SparseArrays
44
using StaticArrays
5+
using Test
56

67
function get_random_sized_psdm(n)
78
b1 = rand(n,n);
89
Q = qr(b1).Q
910
B1 = Q*Diagonal((rand(n) .+ 0.5 ))*Q'
10-
B1 = Symmetric(B1)
11-
return B1
11+
return (B1 + B1')/2
1212
end
1313

1414
#### Testing equal block sizes
@@ -39,6 +39,18 @@ SB = sparse(B)
3939
@test B[1,1] == SB[1,1]
4040
@test B[end,end] == SB[end,end]
4141

42+
B_dense = Matrix(B)
43+
b1 = size(B.blocks[1],1)
44+
bn = size(B.blocks[end],1) - 1
45+
for func in (:log, :sqrt, :sin, :tan, :cos, :sinh, :tanh)
46+
@eval begin
47+
func_dense = ($func)(B_dense)
48+
func_block = ($func)(B)
49+
@test func_dense[1:b1,1:b1] func_block.blocks[1]
50+
@test func_dense[end-bn:end,end-bn:end] func_block.blocks[end]
51+
end
52+
end
53+
4254

4355
# Make 3x3 blocks - But with StaticArrays for speedup
4456
C = BlockDiagonal([SMatrix{3,3,eltype(block)}(block) for block in B.blocks])
@@ -75,6 +87,17 @@ Xr = randn(size(Br,1),3)
7587
@test A*Xr Br*Xr
7688
@test A\Xr Br\Xr
7789

90+
A_dense = Matrix(Br)
91+
r1 = size(Br.blocks[1],1)
92+
rn = size(Br.blocks[end],1) - 1
93+
for func in (:log, :sqrt, :sin, :tan, :cos, :sinh, :tanh)
94+
@eval begin
95+
func_dense = ($func)(A_dense)
96+
func_block = ($func)(Br)
97+
@test func_dense[1:r1,1:r1] func_block.blocks[1]
98+
@test func_dense[end-rn:end,end-rn:end] func_block.blocks[end]
99+
end
100+
end
78101

79102
# Testing logs, determinants, and variants
80103
@test logdet(A) logdet(Br)

0 commit comments

Comments
 (0)