#19653: New decoders for Generalized Reed-Solomon codes
-------------------------------------+-------------------------------------
       Reporter:  dlucas             |        Owner:
           Type:  enhancement        |       Status:  needs_review
       Priority:  major              |    Milestone:  sage-7.1
      Component:  coding theory      |   Resolution:
       Keywords:                     |    Merged in:
        Authors:  David Lucas        |    Reviewers:
Report Upstream:  N/A                |  Work issues:
         Branch:                     |       Commit:
  u/dlucas/grs_decoders              |  d70d6aa219a0472d1e254a23b6e0427f5cc7e1b2
   Dependencies:  #18928, #19897     |     Stopgaps:
-------------------------------------+-------------------------------------

Comment (by jlavauzelle):

 Hi,

 Well, I don't know key equation decoding that much, so I didn't review all
 the ticket yet. But I can post my first comments so that you start
 modifying the code while I go further on key equation.

 coding_theory.srt

 * l.125: created --> create
 * l.146: to build the [12, 6] GRS code --> to build a ...
 * in the example which follows, you give a [6, 3] GRS code (instead of
 [12, 6]). As your example is quite big, I think you should put the [6, 3]
 everywhere.
 * l.253: it seems that your decoder decodes 2 errors, whereas the [6,3]
 GRS minimum distance is 4. It means the standard decoder you use is not a
 half minimum distance one, which is quite inefficient for such a
 structured code. Two possibilities: either you keep this standard decoder,
 or you change it to Gao decoder. If you choose to change, do not forget to
 modify the tutorial.
 * l.337: put quotes around `EvaluationVector` and `C`
 * l.352: match --> matches
 * l.375: "The default encoder for a code is always one with vector
 behaviour, so when we call..." To me, this sentence is strange. Maybe
 "always uses vectors" or "always has a standard vector space as message
 space".
 * l.380: whose length are --> is
 * l.390: remove the "then"
 * l.364, 442, 446, 550: why did you write "#random" ?
 * l.547: "over which has 1" sounds weird.
 * l.567: "For instance, we did not mention how Sage manages bounds on
 codes." Does it manage them ?
 * l.585: "to create you own codes" --> your




 decoders_catalog.py
 * l.16: broken link with `grs.GRSKeyEquationSyndromeDecoder
 <sage.coding.grs.GRSKeyEquationDecoder>`


 grs.py
 * l. 1083: I dislike the function naming: `precompute` is too general. I
 also think your documentation is not precise enough : there are many monic
 polynomials vanishing on the evaluation points; your function returns the
 only one whose zeroes are exactly the evaluation points.
 * l. 1107: `G = 1` --> `G = PolRing.one()`
 * l. 1113: Your documentation is not very clear:
     - "Returns the greatest common divisor of a and b." --> your function
 doesn't do that
     - "where d is the dimension of self.code() and  k its dimension." -->
 I think you meant the code length for d.
     - OUTPUT: a tuple of polynomials (r, s) where r is to the xgcd of a
 and b and s is the Bezout coefficient of a.
       ---> as it is written, it is not an *extended* gcd algorithm, as you
 don't perform the "backward step". It doesn't either return a gcd, but one
 of its multiples. And I think you should mention the Euclidean algorithm
 somewhere. Maybe something like: "the algorithm performs the classical
 Euclidean algorithm until a remainder has degree less than (n+k)/2, and
 return (r,s) such that in the last step, we have r = a*s + b*t".
 * l. 1280: Don't you need to check the `input_space` also (as in
 GRSGaoDecoder and GRSBerlekampWelchDecoder)?
 * l. 1383: if `e` is the number of erasures and `d` the minimum distance,
 then the decoding_radius is `(d-1-e)//2`.
 * l. 1372 and after: you can remove backslashes when you wrap a line
 * l.1470: `(code.base_field())(0)` --> `code.base_field().zero()`.
 Besides, your comment: `ValueError("Impossible to decode a GRS code which
 contains 0 amongst its evaluation points")` is a bit wrong. I would
 prefer: "This decoder can't be initialized with a GRS code whose
 evaluation points contains 0"
 * l. 1525 (partial xgcd): same comments as in the partial_xgcd of Gao
 decoder.


 Julien

--
Ticket URL: <http://trac.sagemath.org/ticket/19653#comment:17>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.

Reply via email to