diff --git a/ext/QuantumCliffordHeckeExt/lifted_product.jl b/ext/QuantumCliffordHeckeExt/lifted_product.jl index 047dd2a7c..9d5fa0d0c 100644 --- a/ext/QuantumCliffordHeckeExt/lifted_product.jl +++ b/ext/QuantumCliffordHeckeExt/lifted_product.jl @@ -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 diff --git a/test/test_ecc_2bga.jl b/test/test_ecc_2bga.jl index e284abfab..9b3f0a609 100644 --- a/test/test_ecc_2bga.jl +++ b/test/test_ecc_2bga.jl @@ -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