@@ -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