-
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
[2ᵐ + 1 - 3, k, 2ᵐ ⁺ ¹ - 3 - k]
shortenedMDS code
#254
base: master
Are you sure you want to change the base?
Conversation
Classical Reed-Solomon codes are standardly defined in terms of generating their generator matrix, so added a function for generator matrix and also added a generator_matrix function in the Edit: |
For documentation, these resources for consultation : |
More specifically, Reed-Solomon codes: RS(255, 223) is the common instance that is used in many places |
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 a pretty impressive little group theory tool implemented here. My main concern, as discussed below, is future maintainability. I suspect you be interested in looking how this can be done more simply with Nemo.jl
Is this able to generate all RS codes or is there some limitation on the size? It seems 255 is hardcodded as the largest number of physical bits possible. If I understand correctly, an RS code is unique defined by three integers that have to obey k<n<q (encoded message size, physical message size, and the order of the group we use to generate the code). q has to also obey q = 2^p. Here q is fixed to 256 so only a particular set of RS codes is available, right? |
Nope, this is only one instance of the ReedSolomon codes namely RS(255, 233). This can be easily extended to include all RS codes though. Correction: |
I would like to refer a youtube lecture for consultation, That really helped me in understanding math and concept of ReedSolomon codes for consulation when adding papers. Is it okay to add it in the docstring along with papers ? Link: https://youtu.be/K26Ssr8H3ec?si=DOai-gnjveQMaq-p (Pedagogical lecture) |
…al, references, and all known test cases
Improvements:
|
Sorry for four pushes instead of one. |
Improvements:
|
It is impressive that the BCHs are also added now! Just a quick advice on structuring PRs like this to make it easier to review. Here for instances, BCH is something sufficiently separate from the original contribution. It is a good idea to split such things into two PRs that can depend on each other, something like:
This makes reviewing drastically easier as the reviewer needs to keep only one thing in their head. But the contributor needs to be careful to make sure that modifications they make to the first PR get carried over (they need to rebase the second one on top of the first one occasionally). No need to make any such changes here. Just a note for future reference. |
Dear Professor, Thank you for this advice and new information! I will keep this in mind for future reference. |
Benchmark ResultJudge resultBenchmark Report for /home/runner/work/QuantumClifford.jl/QuantumClifford.jlJob Properties
ResultsA ratio greater than
Benchmark Group ListHere's a list of all the benchmark groups executed by this job:
Julia versioninfoTarget
Baseline
Target resultBenchmark Report for /home/runner/work/QuantumClifford.jl/QuantumClifford.jlJob Properties
ResultsBelow is a table of this job's results, obtained by running the benchmarks.
Benchmark Group ListHere's a list of all the benchmark groups executed by this job:
Julia versioninfo
Baseline resultBenchmark Report for /home/runner/work/QuantumClifford.jl/QuantumClifford.jlJob Properties
ResultsBelow is a table of this job's results, obtained by running the benchmarks.
Benchmark Group ListHere's a list of all the benchmark groups executed by this job:
Julia versioninfo
Runtime information
Architecture: x86_64
Benchmark ResultJudge resultBenchmark Report for /home/runner/work/QuantumClifford.jl/QuantumClifford.jlJob Properties
ResultsA ratio greater than
Benchmark Group ListHere's a list of all the benchmark groups executed by this job:
Julia versioninfoTarget
Baseline
Target resultBenchmark Report for /home/runner/work/QuantumClifford.jl/QuantumClifford.jlJob Properties
ResultsBelow is a table of this job's results, obtained by running the benchmarks.
Benchmark Group ListHere's a list of all the benchmark groups executed by this job:
Julia versioninfo
Baseline resultBenchmark Report for /home/runner/work/QuantumClifford.jl/QuantumClifford.jlJob Properties
ResultsBelow is a table of this job's results, obtained by running the benchmarks.
Benchmark Group ListHere's a list of all the benchmark groups executed by this job:
Julia versioninfo
Runtime information
Architecture: x86_64
Benchmark ResultJudge resultBenchmark Report for /home/runner/work/QuantumClifford.jl/QuantumClifford.jlJob Properties
ResultsA ratio greater than
Benchmark Group ListHere's a list of all the benchmark groups executed by this job:
Julia versioninfoTarget
Baseline
Target resultBenchmark Report for /home/runner/work/QuantumClifford.jl/QuantumClifford.jlJob Properties
ResultsBelow is a table of this job's results, obtained by running the benchmarks.
Benchmark Group ListHere's a list of all the benchmark groups executed by this job:
Julia versioninfo
Baseline resultBenchmark Report for /home/runner/work/QuantumClifford.jl/QuantumClifford.jlJob Properties
ResultsBelow is a table of this job's resul...[Comment body truncated] |
Dear Prof, I request your attention to review this one, so that I can fully focus on more abstract convolutional. Also, if you don't mind, I want give these slides a mention in the docstring: they are so nice: https://web.ntpu.edu.tw/~yshan/BCH_code.pdf |
This PR is actually an implementation of ECC Zoo has some details about Extended Generalized Reed Solomon codes: https://errorcorrectionzoo.org/c/extended_reed_solomon) which are related to I will remove unnecessary references about ReedSolomon codes since we are not dealing with them at this time. The documentation is significantly improved to avoid any misunderstandings as well. |
Hi, @Krastanov, I took the time to conduct further reading and have curated this especially for you to provide a thorough overview! I asked myself this question that in order to implement PR on Reed Solomon codes (better to call it After some more digging, I have found the answers and also clear differences which are as follows: ExtendedReedSolomonMDSThis PR is implementing family of Augmented, Extended RS-MDS I am implementing this following parity check matrix in From Page 171 of Springer Book: Error Correction Coding and Encoding Generalized ReedSolomonOn the other hand, Reed Solomon codes have the following Parity Check Matrix. This represent Note: It is not the Reed Solomon codes per se but Generalized Reed Solomon codes that are related to the BCH codes. BCH codes are subfield subcodes of GRS codes according to ECC Zoo. From Page 177 of Huffman Book: Fundamentals of Error Correcting Codes Parity check Matrix of BCH codes is given below: This H is is similar to the the above Generalized Reed Solomon H. Hopefully, this explain the differences! Best, |
For the sake of brevity, better name is Ultimately, the authors construct the family of Then they massively expanding each row in a I have also started exploring regular Reed Solomon codes (in later PR), they are non-binary so we don't use GF(2) base field or GF(p ᵐ) where p is not 2. In this regard, a special subcase of q-ary BCH (non-binary BCH) is non-binary ReedSolomon code. Macwillians book shows that we use a non-binary base field, say GF(4), GF(5) and then end up with a GF(2) matrix, but it require further consultation with the book. I also started discussing this Macwillians method with Nemo devs as well. |
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.
I have not reviewed this in detail at all. Here are some superficial stylistic comments until I find the time to get back to this.
[2ᵐ + 1 - 3, k, 2ᵐ ⁺ ¹ - 3 - k]
shortenedMDS code
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.
Same frustrating situation like with the other PR, due to the recent rework of the test suite: this needs a rebase. Apologies for the inconvenience :(
TODO: convert Generator Matrix for Reed Muller codes to Parity check Matrix
Add proper references
Edit:
Maybe the todo task is not required since in the literature, RS codes are defined in by generating their generator matrix.
Why RS codes?
Reed Solomon codes are important subroutines for advanced Quantum codes, this subroutine is going to be helpful when defining advanced QECCs. This PR is based to address that goal.