-
Notifications
You must be signed in to change notification settings - Fork 47
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
Conversation
I think the PR is ready for review. Thank you! |
Codecov ReportAll modified and coverable lines are covered by tests ✅
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. |
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. |
There was a problem hiding this 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)
# 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) | ||
``` |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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
Thank you for your suggestions! Incorporated all of your comments and added coprimeBB codes in This PR is ready for review, Thank you! |
This PR aims to introduce an easy construction method for coprime bivaraite bicycle codes using lifted product
LPCode
, and OscarSubPcGroup
. The code_n and code_k parameters match exactly from the Table 2, Section 5 of Coprime Bivariate Bicycle Codes and their Properties.