Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Coprime Bivariate Bicycle code via Hecke's Group Algebra #378

Merged
merged 9 commits into from
Nov 5, 2024

Conversation

Fe-r-oz
Copy link
Contributor

@Fe-r-oz Fe-r-oz commented Oct 4, 2024

This PR aims to introduce an easy construction method for coprime bivaraite bicycle codes using lifted product LPCode, and Oscar SubPcGroup. The code_n and code_k parameters match exactly from the Table 2, Section 5 of Coprime Bivariate Bicycle Codes and their Properties.

  • The code is properly formatted and commented.
  • Substantial new functionality is documented within the docs.
  • All new functionality is tested.
  • All of the automated tests on github pass.

@Fe-r-oz Fe-r-oz changed the title Lifted Product construction of CoPrime Bivariate Bicycle codes CoPrime Bivariate Bicycle codes using Lifted Product construction Oct 4, 2024
@Fe-r-oz
Copy link
Contributor Author

Fe-r-oz commented Oct 4, 2024

I think the PR is ready for review. Thank you!

@Fe-r-oz Fe-r-oz changed the title CoPrime Bivariate Bicycle codes using Lifted Product construction CoPrime Bivariate Bicycle codes using Lifted Product construction and Oscar's Product of Groups Oct 5, 2024
@Fe-r-oz Fe-r-oz changed the title CoPrime Bivariate Bicycle codes using Lifted Product construction and Oscar's Product of Groups CoPrime Bivariate Bicycle codes using Lifted Product construction via Hecke's Group Algebra Oct 10, 2024
Copy link

codecov bot commented Oct 10, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 82.96%. Comparing base (138e008) to head (640a198).
Report is 3 commits behind head on master.

Additional details and impacted files
@@           Coverage Diff           @@
##           master     #378   +/-   ##
=======================================
  Coverage   82.96%   82.96%           
=======================================
  Files          71       71           
  Lines        4560     4560           
=======================================
  Hits         3783     3783           
  Misses        777      777           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@Fe-r-oz
Copy link
Contributor Author

Fe-r-oz commented Oct 18, 2024

Since #394 is fixed, I can now add the tests that reproduce all the results from Table 2 for these codes. I waited because otherwise, it would have caused CI failures.

@Fe-r-oz Fe-r-oz changed the title CoPrime Bivariate Bicycle codes using Lifted Product construction via Hecke's Group Algebra CoPrime Bivariate Bicycle code via Hecke's Group Algebra Oct 18, 2024
@Fe-r-oz Fe-r-oz changed the title CoPrime Bivariate Bicycle code via Hecke's Group Algebra Coprime Bivariate Bicycle code via Hecke's Group Algebra Oct 18, 2024
Copy link
Member

@Krastanov Krastanov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is wonderful, thank you! I think it would make sense to put the docstring in a different location though (see comments below)

Comment on lines 74 to 100
# 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 generator `𝜋 = 𝑥𝑦`. They can be viewed as a special case of Lifted Product construction
based on abelian group `ℤₗ x ℤₘ` where `ℤⱼ` cyclic group of order `j`.

[108, 12, 6]] coprime-bivariate bicycle (BB) code from Table 2 of [wang2024coprime](@cite).

```jldoctest
julia> import Hecke: group_algebra, GF, abelian_group, gens;

julia> l=2; m=27;

julia> GA = group_algebra(GF(2), abelian_group([l*m]));

julia> 𝜋 = gens(GA)[1];

julia> A = reshape([𝜋^2 + 𝜋^5 + 𝜋^44], (1,1));

julia> B = reshape([𝜋^8 + 𝜋^14 + 𝜋^47], (1,1));

julia> c = LPCode(A, B);

julia> code_n(c), code_k(c)
(108, 12)
```
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems like an example of a two_block_group_algebra_codes so it should probably go in its docstring, not here, next to the other example you have already given (that I merged earlier today, so presumably this also needs a merge with master to avoid a merge conflict).

@@ -0,0 +1,59 @@
@testitem "ECC coprime Bivaraite Bicycle" begin
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

very useful set of tests! It should probably directly use two_block_group_algebra_code instead of the more round-about construction with LPCode

@Fe-r-oz
Copy link
Contributor Author

Fe-r-oz commented Nov 5, 2024

Thank you for your suggestions! Incorporated all of your comments and added coprimeBB codes in test_ecc_base to test their properties as well!

This PR is ready for review, Thank you!

@Krastanov Krastanov merged commit be34f16 into QuantumSavory:master Nov 5, 2024
13 of 16 checks passed
@Fe-r-oz Fe-r-oz deleted the coprime branch November 5, 2024 14:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants