Skip to content

Commit

Permalink
Pardon for delay - Reproduce Tables from papers as well
Browse files Browse the repository at this point in the history
  • Loading branch information
Fe-r-oz committed Oct 17, 2024
1 parent ff55563 commit 6533def
Show file tree
Hide file tree
Showing 2 changed files with 195 additions and 4 deletions.
8 changes: 4 additions & 4 deletions ext/QuantumCliffordHeckeExt/lifted_product.jl
Original file line number Diff line number Diff line change
Expand Up @@ -72,10 +72,10 @@ julia> code_n(c2), code_k(c2)
# Examples
Bivariate Bicycle codes belong to a wider class of generalized bicycle (GB) codes,
which are further generalized into of two block group algebra (2GBA) codes. They
can be viewed as a special case of Lifted Product construction based on abelian
group `ℤₗ x ℤₘ` where `ℤⱼ` cyclic group of order `j`.
Bivariate Bicycle codes belong to a wider class of generalized bicycle (GB) codes, which
are further generalized into of two block group algebra (2BGA) codes. They can be viewed
as a special case of Lifted Product construction based on abelian group `ℤₗ x ℤₘ` where `ℤⱼ`
cyclic group of order `j`.
A [[756, 16, ≤ 34]] code from Table 3 of [bravyi2024high](@cite).
Expand Down
191 changes: 191 additions & 0 deletions test/test_ecc_bivaraite_bicycle_lp.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,191 @@
@testitem "ECC Bivaraite Bicycle LP" begin
using Hecke
using Hecke: group_algebra, GF, abelian_group, gens
using QuantumClifford.ECC: LPCode, code_k, code_n

@testset "Reproduce Table 3 bravyi2024high" begin
# [[72, 12, 6]]
l=6; m=6
GA = group_algebra(GF(2), abelian_group([l, m]))
x = gens(GA)[1]
y = gens(GA)[2]
A = reshape([x^3 + y + y^2], (1, 1))
B = reshape([y^3 + x + x^2], (1, 1))
c = LPCode(A, B)
@test code_n(c) == 72 && code_k(c) == 12

# [[90, 8, 10]]
l=15; m=3
GA = group_algebra(GF(2), abelian_group([l, m]))
x = gens(GA)[1]
y = gens(GA)[2]
A = reshape([x^9 + y + y^2], (1, 1))
B = reshape([1 + x^2 + x^7], (1, 1))
c = LPCode(A, B)
@test code_n(c) == 90 && code_k(c) == 8

# [[108, 8, 10]]
l=9; m=6
GA = group_algebra(GF(2), abelian_group([l, m]))
x = gens(GA)[1]
y = gens(GA)[2]
A = reshape([x^3 + y + y^2], (1, 1))
B = reshape([y^3 + x + x^2], (1, 1))
c = LPCode(A, B)
@test code_n(c) == 108 && code_k(c) == 8

# [[144, 12, 12]]
l=12; m=6
GA = group_algebra(GF(2), abelian_group([l, m]))
x = gens(GA)[1]
y = gens(GA)[2]
A = reshape([x^3 + y + y^2], (1, 1))
B = reshape([y^3 + x + x^2], (1, 1))
c = LPCode(A, B)
@test code_n(c) == 144 && code_k(c) == 12

# [[288, 12, 12]]
l=12; m=12
GA = group_algebra(GF(2), abelian_group([l, m]))
x = gens(GA)[1]
y = gens(GA)[2]
A = reshape([x^3 + y^2 + y^7], (1, 1))
B = reshape([y^3 + x + x^2], (1, 1))
c = LPCode(A, B)
@test code_n(c) == 288 && code_k(c) == 12

# [[360, 12, ≤ 24]]
l=30; m=6
GA = group_algebra(GF(2), abelian_group([l, m]))
x = gens(GA)[1]
y = gens(GA)[2]
A = reshape([x^9 + y + y^2], (1, 1))
B = reshape([y^3 + x^25 + x^26], (1, 1))
c = LPCode(A, B)
@test code_n(c) == 360 && code_k(c) == 12

# [[756, 16, ≤ 34]]
l=21; m=18
GA = group_algebra(GF(2), abelian_group([l, m]))
x = gens(GA)[1]
y = gens(GA)[2]
A = reshape([x^3 + y^10 + y^17], (1, 1))
B = reshape([y^5 + x^3 + x^19], (1, 1))
c = LPCode(A, B)
@test code_n(c) == 756 && code_k(c) == 16
end

@testset "Reproduce Table 1 berthusen2024toward" begin
# [[72, 8, 6]]
l=12; m=3
GA = group_algebra(GF(2), abelian_group([l, m]))
x = gens(GA)[1]
y = gens(GA)[2]
A = reshape([x^9 + y + y^2], (1, 1))
B = reshape([1 + x + x^11], (1, 1))
c = LPCode(A, B)
@test code_n(c) == 72 && code_k(c) == 8

# [[90, 8, 6]]
l=9; m=5
GA = group_algebra(GF(2), abelian_group([l, m]))
x = gens(GA)[1]
y = gens(GA)[2]
A = reshape([x^8 + y^4 + y], (1, 1))
B = reshape([y^5 + x^8 + x^7], (1, 1))
c = LPCode(A, B)
@test code_n(c) == 90 && code_k(c) == 8

# [[120, 8, 8]]
l=12; m=5
GA = group_algebra(GF(2), abelian_group([l, m]))
x = gens(GA)[1]
y = gens(GA)[2]
A = reshape([x^10 + y^4 + y], (1, 1))
B = reshape([1 + x + x^2], (1, 1))
c = LPCode(A, B)
@test code_n(c) == 120 && code_k(c) == 8

# [[150, 8, 8]]
l=15; m=5
GA = group_algebra(GF(2), abelian_group([l, m]))
x = gens(GA)[1]
y = gens(GA)[2]
A = reshape([x^5 + y^2 + y^3], (1, 1))
B = reshape([y^2 + x^7 + x^6], (1, 1))
c = LPCode(A, B)
@test code_n(c) == 150 && code_k(c) == 8

# [[196, 12, 8]]
l=14; m=7
GA = group_algebra(GF(2), abelian_group([l, m]))
x = gens(GA)[1]
y = gens(GA)[2]
A = reshape([x^6 + y^5 + y^6], (1, 1))
B = reshape([1 + x^4 + x^13], (1, 1))
c = LPCode(A, B)
@test code_n(c) == 196 && code_k(c) == 12
end

@testset "Reproduce Table 1 wang2024coprime" begin
# [[54, 8, 6]]
l=3; m=9
GA = group_algebra(GF(2), abelian_group([l, m]))
x = gens(GA)[1]
y = gens(GA)[2]
A = reshape([1 + y^2 + y^4], (1, 1))
B = reshape([y^3 + x + x^2], (1, 1))
c = LPCode(A, B)
@test code_n(c) == 54 && code_k(c) == 8

# [[98, 6, 12]]
l=7; m=7
GA = group_algebra(GF(2), abelian_group([l, m]))
x = gens(GA)[1]
y = gens(GA)[2]
A = reshape([x^3 + y^5 + y^6], (1, 1))
B = reshape([y^2 + x^3 + x^5], (1, 1))
c = LPCode(A, B)
@test code_n(c) == 98 && code_k(c) == 6

# [[126, 8, 10]]
l=3; m=21
GA = group_algebra(GF(2), abelian_group([l, m]))
x = gens(GA)[1]
y = gens(GA)[2]
A = reshape([1 + y^2 + y^10], (1, 1))
B = reshape([y^3 + x + x^2], (1, 1))
c = LPCode(A, B)
@test code_n(c) == 126 && code_k(c) == 8

# [[150, 16, 8]]
l=5; m=15
GA = group_algebra(GF(2), abelian_group([l, m]))
x = gens(GA)[1]
y = gens(GA)[2]
A = reshape([1 + y^6 + y^8], (1, 1))
B = reshape([y^5 + x + x^4], (1, 1))
c = LPCode(A, B)
@test code_n(c) == 150 && code_k(c) == 16

# [[162, 8, 14]]
l=3; m=27
GA = group_algebra(GF(2), abelian_group([l, m]))
x = gens(GA)[1]
y = gens(GA)[2]
A = reshape([1 + y^10 + y^14], (1, 1))
B = reshape([y^12 + x + x^2], (1, 1))
c = LPCode(A, B)
@test code_n(c) == 162 && code_k(c) == 8

# [[180, 8, 16]]
l=6; m=15
GA = group_algebra(GF(2), abelian_group([l, m]))
x = gens(GA)[1]
y = gens(GA)[2]
A = reshape([x^3 + y + y^2], (1, 1))
B = reshape([y^6+ x^4 + x^5], (1, 1))
c = LPCode(A, B)
@test code_n(c) == 180 && code_k(c) == 8
end
end

0 comments on commit 6533def

Please sign in to comment.