#9562: Add M4RIE to Sage
---------------------------------------------------+------------------------
Reporter: malb | Owner:
Type: enhancement | Status:
needs_work
Priority: major | Milestone: sage-5.0
Component: packages | Keywords: m4ri
Work_issues: Fix some docs and fix "randomize()" | Upstream: N/A
Reviewer: Paul Zimmermann, Simon King | Author: Martin
Albrecht
Merged: | Dependencies: #11574
---------------------------------------------------+------------------------
Comment(by malb):
Replying to [comment:88 SimonKing]:
> 2. I found some issues with the "randomize" methods.
>
> i) The randomize method in sage/libs/ntl/ntl_mat_GF2E.pyx is not
documented (thus, also has no tests), and it lacks the usual optional
arguments `density` and `nonzero`.
Okay, I'll take a look. Note that {{{ntl_mat_GF2E}}} does not have the
same interface as normal matrices though. But it makes sense to make it
consistent where possible.
> ii) The doc of Matrix_mod2e_dense.randomize gives no use cases for the
optional arguments. Actually, the behaviour when passing the optional
arguments is clearly not what we want:
Okay, I'll take a look.
> 3. The doc of many methods needs some polishing.
>
> * It would be nice to have a reference to research articles. I had
never heard of Travolta tables before. Strassen-Winograd and Karatsuba may
be better known, but still, a reference could help.
There is no research article on Travolta tables yet since I made them up
for M4RIE. But for the other ones I can add references.
> * _matrix_times_matrix is not documented.
This is an internal method which is part of the standard matrix interface.
I'd say it is hence understood what it does.
> * `__init__`, `__cinit__` do not specify their arguments.
Okay.
> * `_lmul_`, `__neg__`, `__richcmp__`, `__invert__`, `__reduce__`,
`set_unsafe` and `get_unsafe` do not state what they do, and the method
names do not occur in the example (so, it should be marked as an indirect
doctest).
These are special methods where either Python or our Matrix classes define
what they do. I'd say it is hence understood what they do.
> * cdef'd methods such as rescale_row_c or add_multiple_of_row_c or
swap_rows_c and so on may not be as easily visible by the user than Python
methods. However, as a courtesy to developers who actually read the source
file, the arguments of those methods should be specified.
Okay.
> * "echelonize" should state what it does and what its optional
arguments are. If I am not mistaken, it changes the matrix inplace, and
that should be documented.
Okay.
> * When I read "Classical cubic matrix multiplication.", I first
understood that the matrix is cubic. But perhaps I'm a bit square here...
>
> So, that's "needs work" for now.
> Since there should be a vote on sage-devel anyway, we might also ask
whether it should be included in the docs. I am still not sure: On the one
hand, I think a reference manual should be thorough. On the other hand,
all "new" methods that are no cdef'd methods and do not start with an
underscore overwrite methods from super-classes that are documented
elsewhere.
I'd much rather add a note to the reference manual which lists which
library drives which base field?
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/9562#comment:95>
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 post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sage-trac?hl=en.