Skip to content

Commit

Permalink
Lifted Product construction of bivariate bicycle using LPCode
Browse files Browse the repository at this point in the history
  • Loading branch information
Fe-r-oz committed Oct 3, 2024
1 parent 4e06c01 commit 656d5e8
Show file tree
Hide file tree
Showing 4 changed files with 40 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 @@ -9,6 +9,7 @@ Hecke = "3e1990a7-5d81-5526-99ce-9ba3ff248f21"
LDPCDecoders = "3c486d74-64b9-4c60-8b1a-13a564e77efb"
Nemo = "2edaba10-b0f1-5616-af89-8c11ac63239a"
Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80"
Oscar = "f1435218-dba5-11e9-1e4d-f1a5fab5fc13"
PyQDecoders = "17f5de1a-9b79-4409-a58d-4d45812840f7"
Quantikz = "b0d11df0-eea3-4d79-b4a5-421488cbf74b"
QuantumClifford = "0525e862-1e90-11e9-3e4d-1b39d7109de1"
Expand Down
11 changes: 11 additions & 0 deletions docs/src/references.bib
Original file line number Diff line number Diff line change
Expand Up @@ -487,3 +487,14 @@ @article{anderson2014fault
year={2014},
publisher={APS}
}

@article{bravyi2024high,
title={High-threshold and low-overhead fault-tolerant quantum memory},
author={Bravyi, Sergey and Cross, Andrew W and Gambetta, Jay M and Maslov, Dmitri and Rall, Patrick and Yoder, Theodore J},
journal={Nature},
volume={627},
number={8005},
pages={778--782},
year={2024},
publisher={Nature Publishing Group UK London}
}
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)
- [bravyi2024high](@cite)

For classical code construction routines:
- [muller1954application](@cite)
Expand Down
27 changes: 27 additions & 0 deletions ext/QuantumCliffordHeckeExt/lifted_product.jl
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,33 @@ 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
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`.
A [[756, 16, ≤ 34]] code from Table 3 of [bravyi2024high](@cite).
```jldoctest
julia> import Hecke: group_algebra, GF, abelian_group, gens; import Oscar: PcGroup;
julia> l=21; m=18;
julia> GA = group_algebra(GF(2), abelian_group(PcGroup, [l, m]));
julia> x = gens(GA)[1];
julia> y = gens(GA)[2];
julia> A = reshape([x^3 + y^10 + y^17], (1, 1));
julia> B = reshape([y^5 + x^3 + x^19], (1, 1));
julia> c1 = LPCode(A, B);
julia> code_n(c1), code_k(c1)
(756, 16)
```
## 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 656d5e8

Please sign in to comment.