On Thu, Jul 13, 2017 at 5:59 AM, 'B. L.' via sage-devel <sage-devel@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+unsubscr...@googlegroups.com. > To post to this group, send email to sage-devel@googlegroups.com. > Visit this group at https://groups.google.com/group/sage-devel. > For more options, visit https://groups.google.com/d/optout. -- 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+unsubscr...@googlegroups.com. To post to this group, send email to sage-devel@googlegroups.com. Visit this group at https://groups.google.com/group/sage-devel. For more options, visit https://groups.google.com/d/optout.