@@ -160,6 +160,7 @@ for V in spacelist
160160 @test LinearAlgebra.isdiag(D)
161161 @test LinearAlgebra.diag(D) == d
162162 end=#
163+ #=
163164 @timedtestset "Permutations: test via inner product invariance" begin
164165 W = V1 ⊗ V2 ⊗ V3 ⊗ V4 ⊗ V5
165166 t = CUDA.rand(ComplexF64, W)
@@ -323,7 +324,7 @@ for V in spacelist
323324 @test ad(t1' / t' ) ≈ ad(t1)' / ad(t)'
324325 end
325326 end
326- end
327+ end = #
327328 @timedtestset " Factorization" begin
328329 W = V1 ⊗ V2 ⊗ V3 ⊗ V4 ⊗ V5
329330 for T in (Float32, ComplexF64)
@@ -336,20 +337,14 @@ for V in spacelist
336337 TensorKit. Polar(), TensorKit. SVD(),
337338 )
338339 Q, R = @constinferred leftorth(t, ((3 , 4 , 2 ), (1 , 5 )); alg= alg)
339- QdQ = Q' * Q
340- @test QdQ ≈ one(QdQ)
340+ @test isisometry(Q)
341341 @test Q * R ≈ permute(t, ((3 , 4 , 2 ), (1 , 5 )))
342- if alg isa Polar
343- # @test isposdef(R) # not defined for CUDA
344- @test_broken domain(R) == codomain(R) == space(t, 1)' ⊗ space(t, 5 )'
345- end
346342 end
347343 @testset " leftnull with $alg " for alg in
348344 (TensorKit. QR(), TensorKit. SVD(),
349345 )
350346 N = @constinferred leftnull(t, ((3 , 4 , 2 ), (1 , 5 )); alg= alg)
351- NdN = N' * N
352- @test NdN ≈ one(NdN)
347+ @test isisometry(N)
353348 @test norm(N' * permute(t, ((3, 4, 2), (1, 5)))) <
354349 100 * eps(norm(t))
355350 end
@@ -360,29 +355,21 @@ for V in spacelist
360355 )
361356 # cusolver SVD requires m >= n for some reason
362357 L, Q = @constinferred rightorth(t, ((3, 4), (2, 1, 5)); alg=alg)
363- QQd = Q * Q'
364- @test QQd ≈ one(QQd)
358+ @test isisometry(Q; side=:right)
365359 @test L * Q ≈ permute(t, ((3, 4), (2, 1, 5)))
366- if alg isa Polar
367- # @test isposdef(L) # not defined for CUDA
368- @test_broken domain(L) == codomain(L) == space(t, 3) ⊗ space(t, 4)
369- end
370360 end
371361 @testset "rightnull with $alg" for alg in
372362 (TensorKit.LQ(), TensorKit.SVD(),
373363 )
374364 M = @constinferred rightnull(t, ((3, 4), (2, 1, 5)); alg=alg)
375- MMd = M * M'
376- @test MMd ≈ one(MMd)
365+ @test isisometry(M; side=:right)
377366 @test norm(permute(t, ((3, 4), (2, 1, 5))) * M' ) <
378367 100 * eps(norm(t))
379368 end
380369 @testset " tsvd with $alg " for alg in (TensorKit. SVD(),)
381370 U, S, V = @constinferred tsvd(t, ((3 , 4 , 2 ), (1 , 5 )); alg= alg)
382- UdU = U' * U
383- @test UdU ≈ one(UdU)
384- VVd = V * V'
385- @test VVd ≈ one(VVd)
371+ @test isisometry(U)
372+ @test isisometry(V; side= :right)
386373 t2 = permute(t, ((3 , 4 , 2 ), (1 , 5 )))
387374 US = U * S
388375 USV = US * V
0 commit comments