Two issues about the coding theory method "weight_enumerator"

69 views
Skip to first unread message

B. L.

unread,
Jul 13, 2017, 6:16:00 AM7/13/17
to sage-devel
Dear Sage-Developers,

I'd like to report two issues that I came across when working with the coding theory classes of SAGE.
  1. The Sage Reference Manual: Coding Theory, Release 7.6 [1] explains on p. 31:
    weight_enumerator [...] This is the bivariate, homogeneous polynomial in 𝑥 and 𝑦 whose coefficient to x^iy^{n-i} is the number of codewords of 𝑠𝑒𝑙𝑓 of Hamming weight 𝑖. Here, 𝑛 is the length of 𝑠𝑒𝑙𝑓.
    Actually, Sage returns another polynomial, namely the polynomial in 𝑥 and 𝑦 whose coefficient to x^{n-i}y^i is the number of codewords of 𝑠𝑒𝑙𝑓 of Hamming weight 𝑖. (So the roles of x and y are interchanged).
    This can be directly with C.weight_enumerator?? in the example below [2].

    I suggest to either change the description in the reference or to alter the code in Sage.

  2. The function weight_enumerator(bivariate=False) returns the evaluation of the the above polynomial for y=1. Should't it be (in the current version) the evaluation with x=1? In other words: Wouldn't one expect a polynomial in x (or y) whose coefficient to x^i (or y^i) is the number of codewords of 𝑠𝑒𝑙𝑓 of Hamming weight 𝑖?
    The example below [2] illustrates my point: The code has four codewords, one of weight 0, two of weight 3, one of weiht 4. Sage gives x^5 + 2*x^2 + x as the univariate weight enumerator. I would have expected either 1 + 2*x^3 + x^4 or 1 + 2*y^3 + y^4.

    If you agree, I suggest to alter the code accordingly.
Kind regards
Barbara
PS: I tested the code with Sage version 7.6 on an iMac.


[1] http://doc.sagemath.org/pdf/en/reference/coding/coding.pdf

[2] Sage code for  the SageMathCell

C= LinearCode(Matrix(GF(2),2,5, [[1,1,0,1,0], [0,0,1,1,1]]))
print C.list()
print C.spectrum()
print C.weight_enumerator()
print C.weight_enumerator(bivariate=False)
C.weight_enumerator??

http://sagecell.sagemath.org/?z=eJxztlXwycxLTSxyzk9J1fBNLCnKrNBwd9Mw0tQx0jHVUYiONtQx1DEA4VggzwDMBMLYWE1NXq6Cosy8EgVnvZzM4hINJH5xQWpySVFpLrJYeWpmekZJfGpeaW5qUWJJfhF-yaTMssSizMSSVFu3xJziVKBaLKrs7QGIgD2K&lang=sage

David Joyner

unread,
Jul 13, 2017, 6:43:20 AM7/13/17
to sage-devel, sage-codi...@googlegroups.com
On Thu, Jul 13, 2017 at 5:59 AM, 'B. L.' via sage-devel
<sage-...@googlegroups.com> wrote:
> Dear Sage-Developers,
>
> I'd like to report two issues that I came across when working with the
> coding theory classes of SAGE.
>
> The Sage Reference Manual: Coding Theory, Release 7.6 [1] explains on p. 31:
> weight_enumerator [...] This is the bivariate, homogeneous polynomial in 𝑥
> and 𝑦 whose coefficient to x^iy^{n-i} is the number of codewords of
> 𝑠𝑒𝑙𝑓 of Hamming weight 𝑖. Here, 𝑛 is the length of 𝑠𝑒𝑙𝑓.
> Actually, Sage returns another polynomial, namely the polynomial in 𝑥 and
> 𝑦 whose coefficient to x^{n-i}y^i is the number of codewords of 𝑠𝑒𝑙𝑓 of
> Hamming weight 𝑖. (So the roles of x and y are interchanged).
> This can be directly with C.weight_enumerator?? in the example below [2].
>
> I suggest to either change the description in the reference or to alter the
> code in Sage.
>

I'd propose just switching the x,y in the code:

(1) On line 3503 of linear_code.py, change "return
sum(spec[i]*x**(n-i)*y**i for i in range(n+1))" to "return
sum(spec[i]*x**(i)*y**(n-i) for i in range(n+1))"

(2) On line 3507, change "return sum(spec[i]*x**(n-i) for i in
range(n+1))" to "return sum(spec[i]*x**(i) for i in range(n+1))"

(3) Some of the examples may change accordingly.

This mistake could be my fault, since I wrote the original version
(long long ago). Unfortunately, I lack the git skills to submit a
patch.


> The function weight_enumerator(bivariate=False) returns the evaluation of
> the the above polynomial for y=1. Should't it be (in the current version)
> the evaluation with x=1? In other words: Wouldn't one expect a polynomial in
> x (or y) whose coefficient to x^i (or y^i) is the number of codewords of
> 𝑠𝑒𝑙𝑓 of Hamming weight 𝑖?
> The example below [2] illustrates my point: The code has four codewords, one
> of weight 0, two of weight 3, one of weiht 4. Sage gives x^5 + 2*x^2 + x as
> the univariate weight enumerator. I would have expected either 1 + 2*x^3 +
> x^4 or 1 + 2*y^3 + y^4.
>
> If you agree, I suggest to alter the code accordingly.
>
> Kind regards
> Barbara
> PS: I tested the code with Sage version 7.6 on an iMac.
>
>
> [1] http://doc.sagemath.org/pdf/en/reference/coding/coding.pdf
>
> [2] Sage code for the SageMathCell
>
> C= LinearCode(Matrix(GF(2),2,5, [[1,1,0,1,0], [0,0,1,1,1]]))
> print C.list()
> print C.spectrum()
> print C.weight_enumerator()
> print C.weight_enumerator(bivariate=False)
> C.weight_enumerator??
>
> http://sagecell.sagemath.org/?z=eJxztlXwycxLTSxyzk9J1fBNLCnKrNBwd9Mw0tQx0jHVUYiONtQx1DEA4VggzwDMBMLYWE1NXq6Cosy8EgVnvZzM4hINJH5xQWpySVFpLrJYeWpmekZJfGpeaW5qUWJJfhF-yaTMssSizMSSVFu3xJziVKBaLKrs7QGIgD2K&lang=sage
>
> --
> You received this message because you are subscribed to the Google Groups
> "sage-devel" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to sage-devel+...@googlegroups.com.
> To post to this group, send email to sage-...@googlegroups.com.
> Visit this group at https://groups.google.com/group/sage-devel.
> For more options, visit https://groups.google.com/d/optout.

Dima Pasechnik

unread,
Jul 14, 2017, 3:39:02 AM7/14/17
to sage-coding-theory, sage-...@googlegroups.com
A patch can be produced by

git diff > stuff.patch

It would be great if you opened a ticket and posted this diff as an attachment...
 
 

Johan S. H. Rosenkilde

unread,
Jul 14, 2017, 5:35:45 AM7/14/17
to sage-...@googlegroups.com, sage-coding-theory
Thanks a lot for reporting! We *really* appreciate any feedback from
using Sage in classes: on bugs, designs and feature requests.

This bug is now #23433. I'll push a patch momentarily.

Best,
Johan Rosenkilde
>> > email to sage-devel+...@googlegroups.com.

David Joyner

unread,
Jul 14, 2017, 5:39:29 AM7/14/17
to sage-devel, sage-coding-theory
On Fri, Jul 14, 2017 at 5:35 AM, Johan S. H. Rosenkilde
<mail...@atuin.dk> wrote:
> Thanks a lot for reporting! We *really* appreciate any feedback from
> using Sage in classes: on bugs, designs and feature requests.
>
> This bug is now #23433. I'll push a patch momentarily.
>

Thank you, Johan!

> Best,
> Johan Rosenkilde
>
>

...

>>>
>>> This mistake could be my fault, since I wrote the original version
>>> (long long ago). Unfortunately, I lack the git skills to submit a
>>> patch.
>>>

...

B. L.

unread,
Jul 17, 2017, 11:07:53 AM7/17/17
to sage-devel
Thank you for replying and submitting a ticket so promptly!
Barbara
Reply all
Reply to author
Forward
0 new messages