@@ -2,30 +2,49 @@ using LinearAlgebra: mul!
22using Test: @test , @testset , @test_broken
33
44using BlockSparseArrays: BlockSparseArray
5- using FusionTensors:
6- FusionMatrix, FusionTensor, FusionTensorAxes, domain_axes, codomain_axes
7- using GradedArrays: U1, dual, gradedrange
5+ using FusionTensors: FusionTensor, FusionTensorAxes, domain_axes, codomain_axes
6+ using GradedArrays: SU2, U1, dual, gradedrange
87using TensorAlgebra: contract, matricize, permmortar, tuplemortar, unmatricize, unmatricize!
98
109include (" setup.jl" )
1110
12- @testset " matricize" begin
11+ @testset " abelian matricize" begin
1312 g1 = gradedrange ([U1 (0 ) => 1 , U1 (1 ) => 2 , U1 (2 ) => 3 ])
1413 g2 = gradedrange ([U1 (0 ) => 2 , U1 (1 ) => 2 , U1 (3 ) => 1 ])
1514 g3 = gradedrange ([U1 (- 1 ) => 1 , U1 (0 ) => 2 , U1 (1 ) => 1 ])
1615 g4 = gradedrange ([U1 (- 1 ) => 1 , U1 (0 ) => 1 , U1 (1 ) => 1 ])
1716
1817 ft1 = randn (FusionTensorAxes ((g1, g2), (dual (g3), dual (g4))))
1918 m = matricize (ft1, (1 , 2 ), (3 , 4 ))
20- @test m isa FusionMatrix
2119 ft2 = unmatricize (m, axes (ft1))
2220 @test ft1 ≈ ft2
2321
2422 biperm = permmortar (((3 ,), (1 , 2 , 4 )))
2523 m2 = matricize (ft1, biperm)
26- ft_dest = FusionTensor {eltype (ft1)} (undef , axes (ft1)[biperm])
24+ ft_dest = similar (ft1, axes (ft1)[biperm])
2725 unmatricize! (ft_dest, m2, permmortar (((1 ,), (2 , 3 , 4 ))))
2826 @test ft_dest ≈ permutedims (ft1, biperm)
27+
28+ ft2 = similar (ft1)
29+ unmatricize! (ft2, m2, biperm)
30+ @test ft1 ≈ ft2
31+ end
32+
33+ @testset " non-abelian matricize" begin
34+ g1 = gradedrange ([SU2 (0 ) => 1 , SU2 (1 // 2 ) => 2 , SU2 (1 ) => 3 ])
35+ g2 = gradedrange ([SU2 (0 ) => 2 , SU2 (1 // 2 ) => 2 , SU2 (3 // 2 ) => 1 ])
36+ g3 = gradedrange ([SU2 (1 // 2 ) => 1 , SU2 (1 ) => 2 , SU2 (2 ) => 1 ])
37+ g4 = gradedrange ([SU2 (0 ) => 1 , SU2 (1 ) => 1 , SU2 (3 // 2 ) => 1 ])
38+
39+ ft1 = randn (FusionTensorAxes ((g1, g2), (dual (g3), dual (g4))))
40+ m = matricize (ft1, (1 , 2 ), (3 , 4 ))
41+ ft2 = unmatricize (m, axes (ft1))
42+ @test ft1 ≈ ft2
43+
44+ biperm = permmortar (((3 ,), (1 , 2 , 4 )))
45+ m2 = matricize (ft1, biperm)
46+ ft_dest = similar (ft1, axes (ft1)[biperm])
47+ unmatricize! (ft_dest, m2, permmortar (((1 ,), (2 , 3 , 4 ))))
2948 @test ft_dest ≈ permutedims (ft1, biperm)
3049
3150 ft2 = similar (ft1)
0 commit comments