On Wed, Sep 24, 2008 at 3:27 AM, mabshoff <[EMAIL PROTECTED]> wrote:
>
> On Sep 24, 12:16 am, cesarnda <[EMAIL PROTECTED]> wrote:
>
> Hi,
>
>> I have coded a program in cython called "elements_in_linear_span" that
>> generates a set of codewords from a matrix (a matrix space must be
>> defined) over a ring of intergers. This function almost does what
>> Magma does with:
>>
>> > R:=RingOfIntegers(9);
>> > code := LinearCode(sub<RSpace(R,5)|[5, 0, 0, 0, 4],[4, 5, 0, 0, 0],[0, 4, 
>> > 5, 0, 0],[0, 0, 4, 5, 0], [0, 0, 0, 4, 5]>);
>>
>> The differences are that my program does not get the matrix in echelon
>> form and it does not get the minimum distance of the code (which I
>> think I might have an example where Magma does not compute it right).
>>
>> The great advantage of this program is that it does something that
>> Sage does not do yet and it does it almost as fast as Magma (less than
>> one second, 0.89 sec the longest yet, meanwhile Magma does it in
>> almost 0 seconds).
>
> I assume this is a typo?
>
>> David Joyner have checked the results of this program compared to
>> Magma's and the construction is almost similar:
>>
>> sage: MS = MatrixSpace(IntegerModRing(9), 5,5)
>> sage: G = MS([[5, 0, 0, 0, 4],[4, 5, 0, 0, 0],[0, 4, 5, 0, 0],[0, 0,
>> 4, 5, 0], [0, 0, 0, 4, 5]])
>> sage: elements_in_linear_span(G)
>>
>> So this function might be a good addition for a list method for the
>> elements of a free module over ZZ/nZZ.
>>
>> What do you think?
>
> Great. Are you willing to contribute the code under GPL V2+ (or a
> compatible license) to the Sage library? There are likely some things
> to be cleaned up, doctests and potentailly documentation added and so
> on. Maybe David can give us his point of view on that code since he
> has seen it.


It is Cython and not in "Sage's format" (as it is a stand-alone program
at the moment). I wonder if someone can suggest where to add it.
For example, it would be great if his code could be used to compute
the list of a submodule as follows:


sage: R = IntegerModRing(8)
sage: V = FreeModule(R,10)
sage: b1 = V([1,2,3,2,3,4,5,6,7,-1])
sage: b2 = V([1,0,3,1,3,4,1,6,1,-1])
sage: W = V.submodule([b1,b2])         # hypothetical
sage: W.list()                                       # hypothetical


However, AFAIK there is no submodule or span of a free module
over a finite ring (which is not a field).  So the line above that also
is hypothetical. It seems to me that the submodule method
would have to be written first and this might involve the creation of
a new class. I have not poked around the free module code though
and really someone familiar with that (and also familiar with
Cython) should comment.

Maybe the best place to do this would be at a SageDays?


>
> Cheers,
>
> Michael
> >
>

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to