Skip to content

Commit

Permalink
make the doctest actually use the function that it is documenting (an…
Browse files Browse the repository at this point in the history
…d simplify the code a bit)
  • Loading branch information
Krastanov authored Nov 5, 2024
1 parent b4f0977 commit d5594aa
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 41 deletions.
14 changes: 6 additions & 8 deletions ext/QuantumCliffordHeckeExt/lifted_product.jl
Original file line number Diff line number Diff line change
Expand Up @@ -153,8 +153,8 @@ code_s(c::LPCode) = size(c.repr(zero(c.GA)), 1) * (size(c.A, 1) * size(c.B, 1) +
Two-block group algebra (2GBA) codes, which are a special case of lifted product codes
from two group algebra elements `a` and `b`, used as `1x1` base matrices.
[[56, 28, 2]] 2BGA code from Table 2 of [lin2024quantum](@cite) with direct product
of `C₄ x C₂`.
Here is an example of a [[56, 28, 2]] 2BGA code from Table 2 of [lin2024quantum](@cite)
with direct product of `C₄ x C₂`.
```jldoctest
julia> import Hecke: group_algebra, GF, abelian_group, gens;
Expand All @@ -165,11 +165,11 @@ julia> x = gens(GA)[1];
julia> s = gens(GA)[2];
julia> A = reshape([1 + x^7], (1, 1));
julia> A = 1 + x^7
julia> B = reshape([1 + x^7 + s + x^8 + s*x^7 + x], (1, 1));
julia> B = 1 + x^7 + s + x^8 + s*x^7 + x
julia> c = LPCode(A,B);
julia> c = two_block_group_algebra_codes(A,B);
julia> code_n(c), code_k(c)
(56, 28)
Expand All @@ -178,9 +178,7 @@ julia> code_n(c), code_k(c)
See also: [`LPCode`](@ref), [`generalized_bicycle_codes`](@ref), [`bicycle_codes`](@ref)
"""
function two_block_group_algebra_codes(a::GroupAlgebraElem, b::GroupAlgebraElem)
A = reshape([a], (1, 1))
B = reshape([b], (1, 1))
LPCode(A, B)
LPCode([a;;], [b;;])
end

"""
Expand Down
66 changes: 33 additions & 33 deletions test/test_ecc_2bga.jl
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,25 @@
using Hecke: group_algebra, GF, abelian_group, gens
using QuantumClifford.ECC: LPCode, code_k, code_n

@testset "Reproduce Table 2 lin2024quantum" begin
@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
# 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 = reshape([1 + x], (1, 1))
B = reshape([1 + x + s + x^2 + s*x + s*x^3], (1, 1))
A = [1 + x;;]
B = [1 + x + s + x^2 + s*x + s*x^3;;]
c = LPCode(A,B)
# [[16, 2, 4]] 2BGA code
@test code_n(c) == 16 && code_k(c) == 2
A = reshape([1 + x], (1, 1))
B = reshape([1 + x + s + x^2 + s*x + x^3], (1, 1))
A = [1 + x;;]
B = [1 + x + s + x^2 + s*x + x^3;;]
c = LPCode(A,B)
# [[16, 4, 4]] 2BGA code
@test code_n(c) == 16 && code_k(c) == 4
A = reshape([1 + s], (1, 1))
B = reshape([1 + x + s + x^2 + s*x + x^2], (1, 1))
A = [1 + s;;]
B = [1 + x + s + x^2 + s*x + x^2;;]
c = LPCode(A,B)
# [[16, 8, 2]] 2BGA code
@test code_n(c) == 16 && code_k(c) == 8
Expand All @@ -30,13 +30,13 @@
GA = group_algebra(GF(2), abelian_group([6,2]))
x = gens(GA)[1]
s = gens(GA)[2]
A = reshape([1 + x], (1, 1))
B = reshape([1 + x^3 + s + x^4 + x^2 + s*x], (1, 1))
A = [1 + x;;]
B = [1 + x^3 + s + x^4 + x^2 + s*x;;]
c = LPCode(A,B)
# [[24, 4, 5]] 2BGA code
@test code_n(c) == 24 && code_k(c) == 4
A = reshape([1 + x^3], (1, 1))
B = reshape([1 + x^3 + s + x^4 + s*x^3 + x], (1, 1))
A = [1 + x^3;;]
B = [1 + x^3 + s + x^4 + s*x^3 + x;;]
c = LPCode(A,B)
# [[24, 12, 2]] 2BGA code
@test code_n(c) == 24 && code_k(c) == 12
Expand All @@ -45,13 +45,13 @@
GA = group_algebra(GF(2), abelian_group([8,2]))
x = gens(GA)[1]
s = gens(GA)[2]
A = reshape([1 + x^6], (1, 1))
B = reshape([1 + s*x^7 + s*x^4 + x^6 + s*x^5 + s*x^2], (1, 1))
A = [1 + x^6;;]
B = [1 + s*x^7 + s*x^4 + x^6 + s*x^5 + s*x^2;;]
c = LPCode(A,B)
# [[32, 8, 4]] 2BGA code
@test code_n(c) == 32 && code_k(c) == 8
A = reshape([1 + s*x^4], (1, 1))
B = reshape([1 + s*x^7 + s*x^4 + x^6 + x^3 + s*x^2], (1, 1))
A = [1 + s*x^4;;]
B = [1 + s*x^7 + s*x^4 + x^6 + x^3 + s*x^2;;]
c = LPCode(A,B)
# [[32, 16, 2]] 2BGA code
@test code_n(c) == 32 && code_k(c) == 16
Expand All @@ -60,18 +60,18 @@
GA = group_algebra(GF(2), abelian_group([10,2]))
x = gens(GA)[1]
s = gens(GA)[2]
A = reshape([1 + x], (1, 1))
B = reshape([1 + x^5 + x^6 + s*x^6 + x^7 + s*x^3], (1, 1))
A = [1 + x;;]
B = [1 + x^5 + x^6 + s*x^6 + x^7 + s*x^3;;]
c = LPCode(A,B)
# [[40, 4, 8]] 2BGA code
@test code_n(c) == 40 && code_k(c) == 4
A = reshape([1 + x^6], (1, 1))
B = reshape([1 + x^5 + s + x^6 + x + s*x^2], (1, 1))
A = [1 + x^6;;]
B = [1 + x^5 + s + x^6 + x + s*x^2;;]
c = LPCode(A,B)
# [[40, 8, 5]] 2BGA code
@test code_n(c) == 40 && code_k(c) == 8
A = reshape([1 + x^5], (1, 1))
B = reshape([1 + x^5 + s + x^6 + s*x^5 + x], (1, 1))
A = [1 + x^5;;]
B = [1 + x^5 + s + x^6 + s*x^5 + x;;]
c = LPCode(A,B)
# [[40, 20, 2]] 2BGA code
@test code_n(c) == 40 && code_k(c) == 20
Expand All @@ -80,23 +80,23 @@
GA = group_algebra(GF(2), abelian_group([12,2]))
x = gens(GA)[1]
s = gens(GA)[2]
A = reshape([1 + s*x^10], (1, 1))
B = reshape([1 + x^3 + s*x^6 + x^4 + x^7 + x^8], (1, 1))
A = [1 + s*x^10;;]
B = [1 + x^3 + s*x^6 + x^4 + x^7 + x^8;;]
c = LPCode(A,B)
# [[48, 8, 6]] 2BGA code
@test code_n(c) == 48 && code_k(c) == 8
A = reshape([1 + x^3], (1, 1))
B = reshape([1 + x^3 + s*x^6 + x^4 + s*x^9 + x^7], (1, 1))
A = [1 + x^3;;]
B = [1 + x^3 + s*x^6 + x^4 + s*x^9 + x^7;;]
c = LPCode(A,B)
# [[48, 12, 4]] 2BGA code
@test code_n(c) == 48 && code_k(c) == 12
A = reshape([1 + x^4], (1, 1))
B = reshape([1 + x^3 + s*x^6 + x^4 + x^7 + s*x^10], (1, 1))
A = [1 + x^4;;]
B = [1 + x^3 + s*x^6 + x^4 + x^7 + s*x^10;;]
c = LPCode(A,B)
# [[48, 16, 3]] 2BGA code
@test code_n(c) == 48 && code_k(c) == 16
A = reshape([1 + s*x^6], (1, 1))
B = reshape([1 + x^3 + s*x^6 + x^4 + s*x^9 + s*x^10], (1, 1))
A = [1 + s*x^6;;]
B = [1 + x^3 + s*x^6 + x^4 + s*x^9 + s*x^10;;]
c = LPCode(A,B)
# [[48, 24, 2]] 2BGA code
@test code_n(c) == 48 && code_k(c) == 24
Expand All @@ -105,13 +105,13 @@
GA = group_algebra(GF(2), abelian_group([14,2]))
x = gens(GA)[1]
s = gens(GA)[2]
A = reshape([1 + x^8], (1, 1))
B = reshape([1 + x^7 + s + x^8 + x^9 + s*x^4], (1, 1))
A = [1 + x^8;;]
B = [1 + x^7 + s + x^8 + x^9 + s*x^4;;]
c = LPCode(A,B)
# [[56, 8, 7]] 2BGA code
@test code_n(c) == 56 && code_k(c) == 8
A = reshape([1 + x^7], (1, 1))
B = reshape([1 + x^7 + s + x^8 + s*x^7 + x], (1, 1))
A = [1 + x^7;;]
B = [1 + x^7 + s + x^8 + s*x^7 + x;;]
c = LPCode(A,B)
# [[56, 28, 2]] 2BGA code
@test code_n(c) == 56 && code_k(c) == 28
Expand Down

0 comments on commit d5594aa

Please sign in to comment.