1
1
using Test
2
2
using BlockSparseArrays
3
3
using BlockSparseArrays:
4
- BlockSparseArray, svd, tsvd, notrunc, truncbelow, truncdim, BlockDiagonal
4
+ BlockSparseArray, svd, notrunc, truncbelow, truncdim, BlockDiagonal
5
5
using BlockArrays
6
6
using LinearAlgebra: LinearAlgebra, Diagonal, svdvals
7
7
@@ -21,21 +21,6 @@ eltypes = (Float32, Float64, ComplexF64)
21
21
a = rand (m, n)
22
22
usv = @inferred svd (a)
23
23
test_svd (a, usv)
24
-
25
- # TODO : type unstable?
26
- usv2 = tsvd (a)
27
- test_svd (a, usv2)
28
-
29
- usv3 = tsvd (a; trunc= truncdim (2 ))
30
- @test length (usv3. S) == 2
31
- @test usv3. U' * usv3. U ≈ LinearAlgebra. I
32
- @test usv3. Vt * usv3. V ≈ LinearAlgebra. I
33
-
34
- s = usv3. S[end ]
35
- usv4 = tsvd (a; trunc= truncbelow (s))
36
- @test length (usv4. S) == 2
37
- @test usv4. U' * usv4. U ≈ LinearAlgebra. I
38
- @test usv4. Vt * usv4. V ≈ LinearAlgebra. I
39
24
end
40
25
41
26
# block matrix
@@ -48,29 +33,6 @@ blockszs = (([2, 2], [2, 2]), ([2, 2], [2, 3]), ([2, 2, 1], [2, 3]), ([2, 3], [2
48
33
@test usv. U isa BlockedMatrix
49
34
@test usv. Vt isa BlockedMatrix
50
35
@test usv. S isa BlockedVector
51
-
52
- usv2 = tsvd (a)
53
- test_svd (a, usv2)
54
- @test usv. U isa BlockedMatrix
55
- @test usv. Vt isa BlockedMatrix
56
- @test usv. S isa BlockedVector
57
-
58
- usv3 = tsvd (a; trunc= truncdim (2 ))
59
- @test length (usv3. S) == 2
60
- @test usv3. U' * usv3. U ≈ LinearAlgebra. I
61
- @test usv3. Vt * usv3. V ≈ LinearAlgebra. I
62
- @test usv. U isa BlockedMatrix
63
- @test usv. Vt isa BlockedMatrix
64
- @test usv. S isa BlockedVector
65
-
66
- s = usv3. S[end ]
67
- usv4 = tsvd (a; trunc= truncbelow (s))
68
- @test length (usv4. S) == 2
69
- @test usv4. U' * usv4. U ≈ LinearAlgebra. I
70
- @test usv4. Vt * usv4. V ≈ LinearAlgebra. I
71
- @test usv. U isa BlockedMatrix
72
- @test usv. Vt isa BlockedMatrix
73
- @test usv. S isa BlockedVector
74
36
end
75
37
76
38
# Block-Diagonal matrices
84
46
@test usv. U isa BlockDiagonal
85
47
@test usv. Vt isa BlockDiagonal
86
48
@test usv. S isa BlockVector
87
-
88
- usv2 = tsvd (a)
89
- test_svd (a, usv2)
90
- @test usv. U isa BlockDiagonal
91
- @test usv. Vt isa BlockDiagonal
92
- @test usv. S isa BlockVector
93
-
94
- # TODO : need to find a slicing fix to make this work
95
- # usv3 = tsvd(a; trunc=truncdim(2))
96
- # @test length(usv3.S) == 2
97
- # @test usv3.U' * usv3.U ≈ LinearAlgebra.I
98
- # @test usv3.Vt * usv3.V ≈ LinearAlgebra.I
99
- # @test usv.U isa BlockDiagonal
100
- # @test usv.Vt isa BlockDiagonal
101
- # @test usv.S isa BlockVector
102
-
103
- # @show s = usv3.S[end]
104
- # usv4 = tsvd(a; trunc=truncbelow(s))
105
- # @test length(usv4.S) == 2
106
- # @test usv4.U' * usv4.U ≈ LinearAlgebra.I
107
- # @test usv4.Vt * usv4.V ≈ LinearAlgebra.I
108
- # @test usv.U isa BlockDiagonal
109
- # @test usv.Vt isa BlockDiagonal
110
- # @test usv.S isa BlockVector
111
49
end
112
50
113
51
a = mortar ([rand (2 , 2 ) for i in 1 : 2 , j in 1 : 3 ])
@@ -133,32 +71,13 @@ test_svd(a, usv)
133
71
# errors because `blocks(a)[CartesianIndex.(...)]` is not implemented
134
72
usv = svd (a)
135
73
# TODO : `BlockDiagonal * Adjoint` errors
136
- # test_svd(a, usv)
74
+ test_svd (a, usv)
137
75
@test usv. U isa BlockDiagonal
138
76
@test usv. Vt isa BlockDiagonal
139
77
@test usv. S isa BlockVector
140
78
141
- # usv2 = tsvd(a)
142
79
test_svd (a, usv2)
143
80
@test usv. U isa BlockDiagonal
144
81
@test usv. Vt isa BlockDiagonal
145
82
@test usv. S isa BlockVector
146
-
147
- # TODO : need to find a slicing fix to make this work
148
- # usv3 = tsvd(a; trunc=truncdim(2))
149
- # @test length(usv3.S) == 2
150
- # @test usv3.U' * usv3.U ≈ LinearAlgebra.I
151
- # @test usv3.Vt * usv3.V ≈ LinearAlgebra.I
152
- # @test usv.U isa BlockDiagonal
153
- # @test usv.Vt isa BlockDiagonal
154
- # @test usv.S isa BlockVector
155
-
156
- # @show s = usv3.S[end]
157
- # usv4 = tsvd(a; trunc=truncbelow(s))
158
- # @test length(usv4.S) == 2
159
- # @test usv4.U' * usv4.U ≈ LinearAlgebra.I
160
- # @test usv4.Vt * usv4.V ≈ LinearAlgebra.I
161
- # @test usv.U isa BlockDiagonal
162
- # @test usv.Vt isa BlockDiagonal
163
- # @test usv.S isa BlockVector
164
83
end
0 commit comments