Skip to content

Commit

Permalink
Lifted Product construction of CoPrime Bivariate Bicycle codes
Browse files Browse the repository at this point in the history
  • Loading branch information
Fe-r-oz committed Oct 4, 2024
1 parent 4e06c01 commit 82caa49
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 0 deletions.
1 change: 1 addition & 0 deletions docs/Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ Graphs = "86223c79-3864-5bf0-83f7-82e725a168b6"
Hecke = "3e1990a7-5d81-5526-99ce-9ba3ff248f21"
LDPCDecoders = "3c486d74-64b9-4c60-8b1a-13a564e77efb"
Nemo = "2edaba10-b0f1-5616-af89-8c11ac63239a"
Oscar = "f1435218-dba5-11e9-1e4d-f1a5fab5fc13"
Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80"
PyQDecoders = "17f5de1a-9b79-4409-a58d-4d45812840f7"
Quantikz = "b0d11df0-eea3-4d79-b4a5-421488cbf74b"
Expand Down
8 changes: 8 additions & 0 deletions docs/src/references.bib
Original file line number Diff line number Diff line change
Expand Up @@ -487,3 +487,11 @@ @article{anderson2014fault
year={2014},
publisher={APS}
}

@article{wang2024coprime,
title={Coprime Bivariate Bicycle Codes and their Properties},
author={Wang, Ming and Mueller, Frank},
journal={arXiv preprint arXiv:2408.10001},
year={2024}
}

1 change: 1 addition & 0 deletions docs/src/references.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ For quantum code construction routines:
- [steane1999quantum](@cite)
- [campbell2012magic](@cite)
- [anderson2014fault](@cite)
- [wang2024coprime](@cite)

For classical code construction routines:
- [muller1954application](@cite)
Expand Down
46 changes: 46 additions & 0 deletions ext/QuantumCliffordHeckeExt/lifted_product.jl
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,52 @@ julia> code_n(c2), code_k(c2)
- When the base matrices of the `LPCode` are 1×1 and their elements are sums of cyclic permutations, the code is called a generalized bicycle code [`generalized_bicycle_codes`](@ref).
- When the two matrices are adjoint to each other, the code is called a bicycle code [`bicycle_codes`](@ref).
# Examples
The coprime bivariate bicycle (BB) codes are defined by two polynomials `𝑎(𝑥,𝑦)` and `𝑏(𝑥,𝑦)`, where `𝑙` and `𝑚` are coprime, and can be expressed as univariate polynomials `𝑎(𝜋)` and `𝑏(𝜋)`, with `𝜋 = 𝑥𝑦`. They can be viewed as a special case of Lifted Product construction based on abelian group `ℤₗ x ℤₘ` where `ℤⱼ` cyclic group of order `j` with generator `𝜋`.
[108, 12, 6]] coprime-bivariate bicycle (BB) codes from Table 2 of [wang2024coprime](@cite).
```jldoctest
julia> import Hecke: group_algebra, GF, abelian_group, gens; import Oscar: SubPcGroup;
julia> l=2; m=27;
julia> GA = group_algebra(GF(2), abelian_group(SubPcGroup, [l*m]));
julia> π = gens(GA)[1];
julia> A = reshape([π^2 + π^5 + π^44], (1,1));
julia> B = reshape([π^8 + π^14 + π^47], (1,1));
julia> c1 = LPCode(A, B);
julia> code_n(c1), code_k(c1)
(108, 12)
```
[126, 12, 10]] coprime-bivariate bicycle (BB) codes from Table 2 of [wang2024coprime](@cite).
```jldoctest
julia> import Hecke: group_algebra, GF, abelian_group, gens; import Oscar: SubPcGroup;
julia> l=7; m=9;
julia> GA = group_algebra(GF(2), abelian_group(SubPcGroup, [l*m]));
julia> π = gens(GA)[1];
julia> A = reshape([1 + π + π^58], (1,1));
julia> B = reshape([π^3 + π^16 + π^44], (1,1));
julia> c1 = LPCode(A, B);
julia> code_n(c1), code_k(c1)
(126, 12)
```
## The representation function
We use the default representation function `Hecke.representation_matrix` to convert a `GF(2)`-group algebra element to a binary matrix.
Expand Down

0 comments on commit 82caa49

Please sign in to comment.