-
Notifications
You must be signed in to change notification settings - Fork 48
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
Correctness checks for classical ECCs #268
Comments
I acknowledge the distinction between the perspective of reviewing a pull request and executing its implementation. In the test files for the BCH, Reed-Solomon, Goppa, I have included the thorough tests similar compared to the first 2 options that can ease the difficulty when reviewing. Some of these are attached below. I recommend to please have a look at the test files especially. My frame of reference: I have tested their binary check matrices for almost of the instance of the codes for varying n, k, etc.t with thorough tests. As we are dealing with finite field, we check their degree, their gcd, their mod, their irreducibility of generator polynomial (if required), their designed distance of parity check matrices, their rank, the structure of their field matrices and how they are generated. We check how is each field element expressed as m-tuple as well. For example: Some Examples of some tests taken from each test files:
In some cases, I don't think running comparisons will work in some cases of codes when working with Finite Fields. For instance, in the case of the Goppa code, the main developer of Nemo told me that Nemo generates irreducible polynomial with a probability of 1/n. So, every time, we run the Goppa code, a distinct irreducible Goppa polynomial is generate. Since we construct the support list L from by checking that whether gx (Goppa Polynomial) is evaluated to != 0, every time, the representation of parity check matrix is different because the distinct irreducible polynomial. But properties and the method such as minimum distance are followed. I don't know any such databases or software at the moment. I would suggest to please review the in the following order: BCH, Reed-Solmon and Goppa. This is because the order of complexity of implementation increases in this order. After each review, please let me know your comments so that we can discuss further. |
sagemath is a precursor to OSCAR. It's a python based computer algebra system. When developing the Example in sage:
In addition, they also have hardcoded the binary For encoding and decoding, we can use the already built encoders and decoders. Maybe we can prepare a feature issue which is about exploring the encoders and decoders and integrating them in the package. sagemath has a lot of python based encoders and decoders. Performance wise, maybe benchmarks between sagemath and Nemo in terms of code generation could be helpful as well. Most of other pieces of software that may have codes functionality are proprietary. At the moment, I am not aware whether Maple, Mathematica, or Matlab has some of these codes, though I have seen Decoder Blocks for codes in Matlab. |
Also, sage/sagemath for coding theory: https://doc.sagemath.org/html/en/reference/coding/index.html |
Also,
|
The GAP system(second bullet) is actually documentation for GUAVA(GAP): https://github.com/gap-packages/guava. They don't have many tests on codes though and package seems unstable with no CI and less test coverage. |
@Fe-r-oz , I see you have contributed quite a few different classes of classical ECCs. E.g. in:
[2ᵐ + 1 - 3, k, 2ᵐ ⁺ ¹ - 3 - k]
shortenedMDS code #254These are quite valuable contributions, but it will take me some time to review them. My chief difficulty in reviewing them would be figuring out some selfconsistency checks. What I mean by this is that the following would NOT be a good way to review:
Instead, we need to figure out some self-correcting method. There are a few such self-correcting checks done for the quantum codes for instance. Checking that they have valid tableaux, checking ranks, verifying that encoding circuits work as expected, etc.
In order to merge all of these classical code contributions of yours, we need to figure out similar self-correctness checks. I do not have a lot of good ideas for that right now (hence this issue, so we can discuss), but a couple of options include:
Do you know of such databases or alternative pieces of software?
The text was updated successfully, but these errors were encountered: