@@ -73,27 +73,26 @@ herm(a) = parent(hermitianpart(a))
7373 @test arguments (v, 2 ) isa DeltaMatrix{elt}
7474 end
7575
76- # # TODO : Broken, need to fix truncation.
77- # # for f in (eig_trunc, eigh_trunc)
78- # # a = δ(3, 3) ⊗ parent(hermitianpart(randn(3, 3)))
79- # # d, v = f(a; trunc=(; maxrank=7))
80- # # @test a * v ≈ v * d
81- # # @test arguments(d, 1) isa DeltaMatrix
82- # # @test arguments(v, 1) isa DeltaMatrix
83- # # @test size(d) == (6, 6)
84- # # @test size(v) == (9, 6)
76+ for f in (eig_trunc, eigh_trunc)
77+ a = δ (3 , 3 ) ⊗ parent (hermitianpart (randn (3 , 3 )))
78+ d, v = f (a; trunc= (; maxrank= 7 ))
79+ @test a * v ≈ v * d
80+ @test arguments (d, 1 ) isa DeltaMatrix
81+ @test arguments (v, 1 ) isa DeltaMatrix
82+ @test size (d) == (6 , 6 )
83+ @test size (v) == (9 , 6 )
8584
86- # # a = parent(hermitianpart(randn(3, 3))) ⊗ δ(3, 3)
87- # # d, v = f(a; trunc=(; maxrank=7))
88- # # @test a * v ≈ v * d
89- # # @test arguments(d, 2) isa DeltaMatrix
90- # # @test arguments(v, 2) isa DeltaMatrix
91- # # @test size(d) == (6, 6)
92- # # @test size(v) == (9, 6)
85+ a = parent (hermitianpart (randn (3 , 3 ))) ⊗ δ (3 , 3 )
86+ d, v = f (a; trunc= (; maxrank= 7 ))
87+ @test a * v ≈ v * d
88+ @test arguments (d, 2 ) isa DeltaMatrix
89+ @test arguments (v, 2 ) isa DeltaMatrix
90+ @test size (d) == (6 , 6 )
91+ @test size (v) == (9 , 6 )
9392
94- # # a = δ(3, 3) ⊗ δ(3, 3)
95- # # @test_throws ArgumentError f(a)
96- # # end
93+ a = δ (3 , 3 ) ⊗ δ (3 , 3 )
94+ @test_throws ArgumentError f (a)
95+ end
9796
9897 for f in (eig_vals, eigh_vals)
9998 a = δ (3 , 3 ) ⊗ parent (hermitianpart (randn (3 , 3 )))
@@ -183,46 +182,44 @@ herm(a) = parent(hermitianpart(a))
183182 end
184183 end
185184
186- # # TODO : Need to implement truncation.
187- # # # svd_trunc
188- # # for elt in (Float32, ComplexF32)
189- # # a = δ(elt, 3, 3) ⊗ randn(elt, 3, 3)
190- # # # TODO : Type inference is broken for `svd_trunc`,
191- # # # look into fixing it.
192- # # # u, s, v = @constinferred svd_trunc(a; trunc=(; maxrank=7))
193- # # u, s, v = svd_trunc(a; trunc=(; maxrank=7))
194- # # @test eltype(u) === elt
195- # # @test eltype(s) === real(elt)
196- # # @test eltype(v) === elt
197- # # u′, s′, v′ = svd_trunc(Matrix(a); trunc=(; maxrank=6))
198- # # @test Matrix(u * s * v) ≈ u′ * s′ * v′
199- # # @test arguments(u, 1) isa DeltaMatrix{elt}
200- # # @test arguments(s, 1) isa DeltaMatrix{real(elt)}
201- # # @test arguments(v, 1) isa DeltaMatrix{elt}
202- # # @test size(u) == (9, 6)
203- # # @test size(s) == (6, 6)
204- # # @test size(v) == (6, 9)
205- # # end
185+ # svd_trunc
186+ for elt in (Float32, ComplexF32)
187+ a = δ (elt, 3 , 3 ) ⊗ randn (elt, 3 , 3 )
188+ # TODO : Type inference is broken for `svd_trunc`,
189+ # look into fixing it.
190+ # u, s, v = @constinferred svd_trunc(a; trunc=(; maxrank=7))
191+ u, s, v = svd_trunc (a; trunc= (; maxrank= 7 ))
192+ @test eltype (u) === elt
193+ @test eltype (s) === real (elt)
194+ @test eltype (v) === elt
195+ u′, s′, v′ = svd_trunc (Matrix (a); trunc= (; maxrank= 6 ))
196+ @test Matrix (u * s * v) ≈ u′ * s′ * v′
197+ @test arguments (u, 1 ) isa DeltaMatrix{elt}
198+ @test arguments (s, 1 ) isa DeltaMatrix{real (elt)}
199+ @test arguments (v, 1 ) isa DeltaMatrix{elt}
200+ @test size (u) == (9 , 6 )
201+ @test size (s) == (6 , 6 )
202+ @test size (v) == (6 , 9 )
203+ end
206204
207- # # TODO : Need to implement truncation.
208- # # for elt in (Float32, ComplexF32)
209- # # a = randn(elt, 3, 3) ⊗ δ(elt, 3, 3)
210- # # # TODO : Type inference is broken for `svd_trunc`,
211- # # # look into fixing it.
212- # # # u, s, v = @constinferred svd_trunc(a; trunc=(; maxrank=7))
213- # # u, s, v = svd_trunc(a; trunc=(; maxrank=7))
214- # # @test eltype(u) === elt
215- # # @test eltype(s) === real(elt)
216- # # @test eltype(v) === elt
217- # # u′, s′, v′ = svd_trunc(Matrix(a); trunc=(; maxrank=6))
218- # # @test Matrix(u * s * v) ≈ u′ * s′ * v′
219- # # @test arguments(u, 2) isa DeltaMatrix{elt}
220- # # @test arguments(s, 2) isa DeltaMatrix{real(elt)}
221- # # @test arguments(v, 2) isa DeltaMatrix{elt}
222- # # @test size(u) == (9, 6)
223- # # @test size(s) == (6, 6)
224- # # @test size(v) == (6, 9)
225- # # end
205+ for elt in (Float32, ComplexF32)
206+ a = randn (elt, 3 , 3 ) ⊗ δ (elt, 3 , 3 )
207+ # TODO : Type inference is broken for `svd_trunc`,
208+ # look into fixing it.
209+ # u, s, v = @constinferred svd_trunc(a; trunc=(; maxrank=7))
210+ u, s, v = svd_trunc (a; trunc= (; maxrank= 7 ))
211+ @test eltype (u) === elt
212+ @test eltype (s) === real (elt)
213+ @test eltype (v) === elt
214+ u′, s′, v′ = svd_trunc (Matrix (a); trunc= (; maxrank= 6 ))
215+ @test Matrix (u * s * v) ≈ u′ * s′ * v′
216+ @test arguments (u, 2 ) isa DeltaMatrix{elt}
217+ @test arguments (s, 2 ) isa DeltaMatrix{real (elt)}
218+ @test arguments (v, 2 ) isa DeltaMatrix{elt}
219+ @test size (u) == (9 , 6 )
220+ @test size (s) == (6 , 6 )
221+ @test size (v) == (6 , 9 )
222+ end
226223
227224 a = δ (3 , 3 ) ⊗ δ (3 , 3 )
228225 @test_broken svd_trunc (a)
0 commit comments