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