|
| 1 | +@eval module $(gensym()) |
| 2 | +using BlockArrays: blocklengths |
| 3 | +using ITensors: ITensor, Index, QN, dag, inds, plev, random_itensor |
| 4 | +using ITensors.ITensorsNamedDimsArraysExt: to_nameddimsarray |
| 5 | +using NDTensors: tensor |
| 6 | +using NDTensors.BlockSparseArrays: BlockSparseArray, block_nstored |
| 7 | +using NDTensors.GradedAxes: isdual |
| 8 | +using NDTensors.LabelledNumbers: label |
| 9 | +using NDTensors.NamedDimsArrays: NamedDimsArray, unname |
| 10 | +using Test: @test, @testset |
| 11 | +@testset "to_nameddimsarray" begin |
| 12 | + i = Index([QN(0) => 2, QN(1) => 3]) |
| 13 | + a = random_itensor(i', dag(i)) |
| 14 | + b = to_nameddimsarray(a) |
| 15 | + @test b isa ITensor |
| 16 | + @test plev(inds(b)[1]) == 1 |
| 17 | + @test plev(inds(b)[2]) == 0 |
| 18 | + @test inds(b)[1] == i' |
| 19 | + @test inds(b)[2] == dag(i) |
| 20 | + nb = tensor(b) |
| 21 | + @test nb isa NamedDimsArray{Float64} |
| 22 | + bb = unname(nb) |
| 23 | + @test bb isa BlockSparseArray{Float64} |
| 24 | + @test !isdual(axes(bb, 1)) |
| 25 | + @test isdual(axes(bb, 2)) |
| 26 | + @test blocklengths(axes(bb, 1)) == [2, 3] |
| 27 | + @test blocklengths(axes(bb, 2)) == [2, 3] |
| 28 | + @test label.(blocklengths(axes(bb, 1))) == [QN(0), QN(1)] |
| 29 | + @test label.(blocklengths(axes(bb, 2))) == [QN(0), QN(-1)] |
| 30 | + @test block_nstored(bb) == 2 |
| 31 | + @test b' * b ≈ to_nameddimsarray(a' * a) |
| 32 | +end |
| 33 | +end |
0 commit comments