Skip to content

Commit

Permalink
todo: simplify tests for 2BGA codes (#421)
Browse files Browse the repository at this point in the history
  • Loading branch information
Fe-r-oz authored Nov 5, 2024
1 parent c3aa055 commit 45e9f4d
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 65 deletions.
4 changes: 1 addition & 3 deletions ext/QuantumCliffordHeckeExt/lifted_product.jl
Original file line number Diff line number Diff line change
Expand Up @@ -165,9 +165,7 @@ julia> import Hecke: group_algebra, GF, abelian_group, gens
julia> GA = group_algebra(GF(2), abelian_group([14,2]));
julia> x = gens(GA)[1];
julia> s = gens(GA)[2];
julia> x, s = gens(GA);
julia> A = 1 + x^7
Expand Down
118 changes: 56 additions & 62 deletions test/test_ecc_2bga.jl
Original file line number Diff line number Diff line change
@@ -1,118 +1,112 @@
@testitem "ECC 2BGA" begin
using Hecke
using Hecke: group_algebra, GF, abelian_group, gens
using QuantumClifford.ECC: LPCode, code_k, code_n
using QuantumClifford.ECC: two_block_group_algebra_codes, code_k, code_n

@testset "Reproduce Table 2 lin2024quantum" begin # TODO these tests should probably just use the `two_block_group_algebra_codes` function as that would make them much shorter and simpler
@testset "Reproduce Table 2 lin2024quantum" begin
# codes taken from Table 2 of [lin2024quantum](@cite)

# m = 4
GA = group_algebra(GF(2), abelian_group([4,2]))
x = gens(GA)[1]
s = gens(GA)[2]
A = [1 + x;;]
B = [1 + x + s + x^2 + s*x + s*x^3;;]
c = LPCode(A,B)
x, s = gens(GA)
A = 1 + x
B = 1 + x + s + x^2 + s*x + s*x^3
c = two_block_group_algebra_codes(A,B)
# [[16, 2, 4]] 2BGA code
@test code_n(c) == 16 && code_k(c) == 2
A = [1 + x;;]
B = [1 + x + s + x^2 + s*x + x^3;;]
c = LPCode(A,B)
A = 1 + x
B = 1 + x + s + x^2 + s*x + x^3
c = two_block_group_algebra_codes(A,B)
# [[16, 4, 4]] 2BGA code
@test code_n(c) == 16 && code_k(c) == 4
A = [1 + s;;]
B = [1 + x + s + x^2 + s*x + x^2;;]
c = LPCode(A,B)
A = 1 + s
B = 1 + x + s + x^2 + s*x + x^2
c = two_block_group_algebra_codes(A,B)
# [[16, 8, 2]] 2BGA code
@test code_n(c) == 16 && code_k(c) == 8

# m = 6
GA = group_algebra(GF(2), abelian_group([6,2]))
x = gens(GA)[1]
s = gens(GA)[2]
A = [1 + x;;]
B = [1 + x^3 + s + x^4 + x^2 + s*x;;]
c = LPCode(A,B)
x, s = gens(GA)
A = 1 + x
B = 1 + x^3 + s + x^4 + x^2 + s*x
c = two_block_group_algebra_codes(A,B)
# [[24, 4, 5]] 2BGA code
@test code_n(c) == 24 && code_k(c) == 4
A = [1 + x^3;;]
B = [1 + x^3 + s + x^4 + s*x^3 + x;;]
c = LPCode(A,B)
A = 1 + x^3
B = 1 + x^3 + s + x^4 + s*x^3 + x
c = two_block_group_algebra_codes(A,B)
# [[24, 12, 2]] 2BGA code
@test code_n(c) == 24 && code_k(c) == 12

# m = 8
GA = group_algebra(GF(2), abelian_group([8,2]))
x = gens(GA)[1]
s = gens(GA)[2]
A = [1 + x^6;;]
B = [1 + s*x^7 + s*x^4 + x^6 + s*x^5 + s*x^2;;]
c = LPCode(A,B)
x, s = gens(GA)
A = 1 + x^6
B = 1 + s*x^7 + s*x^4 + x^6 + s*x^5 + s*x^2
c = two_block_group_algebra_codes(A,B)
# [[32, 8, 4]] 2BGA code
@test code_n(c) == 32 && code_k(c) == 8
A = [1 + s*x^4;;]
B = [1 + s*x^7 + s*x^4 + x^6 + x^3 + s*x^2;;]
c = LPCode(A,B)
A = 1 + s*x^4
B = 1 + s*x^7 + s*x^4 + x^6 + x^3 + s*x^2
c = two_block_group_algebra_codes(A,B)
# [[32, 16, 2]] 2BGA code
@test code_n(c) == 32 && code_k(c) == 16

# m = 10
GA = group_algebra(GF(2), abelian_group([10,2]))
x = gens(GA)[1]
s = gens(GA)[2]
A = [1 + x;;]
B = [1 + x^5 + x^6 + s*x^6 + x^7 + s*x^3;;]
c = LPCode(A,B)
x, s = gens(GA)
A = 1 + x
B = 1 + x^5 + x^6 + s*x^6 + x^7 + s*x^3
c = two_block_group_algebra_codes(A,B)
# [[40, 4, 8]] 2BGA code
@test code_n(c) == 40 && code_k(c) == 4
A = [1 + x^6;;]
B = [1 + x^5 + s + x^6 + x + s*x^2;;]
c = LPCode(A,B)
A = 1 + x^6
B = 1 + x^5 + s + x^6 + x + s*x^2
c = two_block_group_algebra_codes(A,B)
# [[40, 8, 5]] 2BGA code
@test code_n(c) == 40 && code_k(c) == 8
A = [1 + x^5;;]
B = [1 + x^5 + s + x^6 + s*x^5 + x;;]
c = LPCode(A,B)
A = 1 + x^5
B = 1 + x^5 + s + x^6 + s*x^5 + x
c = two_block_group_algebra_codes(A,B)
# [[40, 20, 2]] 2BGA code
@test code_n(c) == 40 && code_k(c) == 20

# m = 12
GA = group_algebra(GF(2), abelian_group([12,2]))
x = gens(GA)[1]
s = gens(GA)[2]
A = [1 + s*x^10;;]
B = [1 + x^3 + s*x^6 + x^4 + x^7 + x^8;;]
c = LPCode(A,B)
x, s = gens(GA)
A = 1 + s*x^10
B = 1 + x^3 + s*x^6 + x^4 + x^7 + x^8
c = two_block_group_algebra_codes(A,B)
# [[48, 8, 6]] 2BGA code
@test code_n(c) == 48 && code_k(c) == 8
A = [1 + x^3;;]
B = [1 + x^3 + s*x^6 + x^4 + s*x^9 + x^7;;]
c = LPCode(A,B)
A = 1 + x^3
B = 1 + x^3 + s*x^6 + x^4 + s*x^9 + x^7
c = two_block_group_algebra_codes(A,B)
# [[48, 12, 4]] 2BGA code
@test code_n(c) == 48 && code_k(c) == 12
A = [1 + x^4;;]
B = [1 + x^3 + s*x^6 + x^4 + x^7 + s*x^10;;]
c = LPCode(A,B)
A = 1 + x^4
B = 1 + x^3 + s*x^6 + x^4 + x^7 + s*x^10
c = two_block_group_algebra_codes(A,B)
# [[48, 16, 3]] 2BGA code
@test code_n(c) == 48 && code_k(c) == 16
A = [1 + s*x^6;;]
B = [1 + x^3 + s*x^6 + x^4 + s*x^9 + s*x^10;;]
c = LPCode(A,B)
A = 1 + s*x^6
B = 1 + x^3 + s*x^6 + x^4 + s*x^9 + s*x^10
c = two_block_group_algebra_codes(A,B)
# [[48, 24, 2]] 2BGA code
@test code_n(c) == 48 && code_k(c) == 24

# m = 14
GA = group_algebra(GF(2), abelian_group([14,2]))
x = gens(GA)[1]
s = gens(GA)[2]
A = [1 + x^8;;]
B = [1 + x^7 + s + x^8 + x^9 + s*x^4;;]
c = LPCode(A,B)
x, s = gens(GA)
A = 1 + x^8
B = 1 + x^7 + s + x^8 + x^9 + s*x^4
c = two_block_group_algebra_codes(A,B)
# [[56, 8, 7]] 2BGA code
@test code_n(c) == 56 && code_k(c) == 8
A = [1 + x^7;;]
B = [1 + x^7 + s + x^8 + s*x^7 + x;;]
c = LPCode(A,B)
A = 1 + x^7
B = 1 + x^7 + s + x^8 + s*x^7 + x
c = two_block_group_algebra_codes(A,B)
# [[56, 28, 2]] 2BGA code
@test code_n(c) == 56 && code_k(c) == 28
end
Expand Down

0 comments on commit 45e9f4d

Please sign in to comment.