#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
---------------------------------------------------+------------------------
Changes (by SimonKing):
* status: needs_review => needs_work
Comment:
__Questions / To do__
* The hg repository of the spkg needs being updated. Even though the last
log entry is of today (August 22), the status report is
{{{
$ hg status
? config.log
? m4rie/.hgignore
? m4rie/.hgtags
? m4rie/AUTHORS
? m4rie/COPYING
? m4rie/ChangeLog
? m4rie/INSTALL
? m4rie/Makefile.am
? m4rie/Makefile.in
? m4rie/NEWS
? m4rie/README
? m4rie/aclocal.m4
? m4rie/bench/Makefile.am
? m4rie/bench/Makefile.in
? m4rie/bench/bench_elimination.cc
? m4rie/bench/bench_multiplication.cc
? m4rie/bench/bench_smallops.cc
? m4rie/bench/benchmarking.cc
? m4rie/bench/benchmarking.h
? m4rie/bench/cpucycles-20060326/alpha.c
? m4rie/bench/cpucycles-20060326/alpha.h
? m4rie/bench/cpucycles-20060326/amd64cpuinfo.c
? m4rie/bench/cpucycles-20060326/amd64cpuinfo.h
? m4rie/bench/cpucycles-20060326/amd64tscfreq.c
? m4rie/bench/cpucycles-20060326/amd64tscfreq.h
? m4rie/bench/cpucycles-20060326/clockmonotonic.c
? m4rie/bench/cpucycles-20060326/clockmonotonic.h
? m4rie/bench/cpucycles-20060326/compile
? m4rie/bench/cpucycles-20060326/cpucycles.html
? m4rie/bench/cpucycles-20060326/do
? m4rie/bench/cpucycles-20060326/do.notes
? m4rie/bench/cpucycles-20060326/gettimeofday.c
? m4rie/bench/cpucycles-20060326/gettimeofday.h
? m4rie/bench/cpucycles-20060326/hppapstat.c
? m4rie/bench/cpucycles-20060326/hppapstat.h
? m4rie/bench/cpucycles-20060326/powerpcaix.c
? m4rie/bench/cpucycles-20060326/powerpcaix.h
? m4rie/bench/cpucycles-20060326/powerpclinux.c
? m4rie/bench/cpucycles-20060326/powerpclinux.h
? m4rie/bench/cpucycles-20060326/powerpcmacos.c
? m4rie/bench/cpucycles-20060326/powerpcmacos.h
? m4rie/bench/cpucycles-20060326/sparc32psrinfo.c
? m4rie/bench/cpucycles-20060326/sparc32psrinfo.h
? m4rie/bench/cpucycles-20060326/sparcpsrinfo.c
? m4rie/bench/cpucycles-20060326/sparcpsrinfo.h
? m4rie/bench/cpucycles-20060326/test.c
? m4rie/bench/cpucycles-20060326/x86cpuinfo.c
? m4rie/bench/cpucycles-20060326/x86cpuinfo.h
? m4rie/bench/cpucycles-20060326/x86tscfreq.c
? m4rie/bench/cpucycles-20060326/x86tscfreq.h
? m4rie/config.guess
? m4rie/config.sub
? m4rie/configure
? m4rie/configure.ac
? m4rie/depcomp
? m4rie/gf2e_cxx/finite_field_givaro.h
? m4rie/install-sh
? m4rie/ltmain.sh
? m4rie/m4/ax_check_compiler_flags.m4
? m4rie/m4/ax_openmp.m4
? m4rie/m4/libtool.m4
? m4rie/m4/ltoptions.m4
? m4rie/m4/ltsugar.m4
? m4rie/m4/ltversion.m4
? m4rie/m4/lt~obsolete.m4
? m4rie/missing
? m4rie/tests/test_elimination.cc
? m4rie/tests/test_multiplication.cc
? m4rie/tests/test_smallops.cc
? m4rie/tests/testing.h
}}}
* spkg-check does not seem to work. After opening the package and working
in a sage shell, I get
{{{
$ ./spkg-check
./spkg-check: Zeile 30: cd: build/m4ri: Datei oder Verzeichnis nicht
gefunden
Testing the M4RI library
make: *** Keine Regel, um »check« zu erstellen. Schluss.
Error testing M4RI
}}}
* Have you already implemented the ideas for storing the cache size
information, so that installation of the package does not take so long? Or
will that be in a future release?
* You said you'd much rather add a note to the reference manual which
lists which library drives which base field. Did you do so? I can not find
it in the patch.
__Done__
* The long doctests in doc/ and sage/ pass on my machine. The doctests in
sage/matrix pass on 32 bit solaris.
* Randomize seems to work fine.
* Scalar multiplication has improved:
{{{
sage: MS = MatrixSpace(GF(64,'a'),5000,5000)
sage: K = MS.base_ring()
sage: c = K.random_element()
sage: A = MS.random_element()
sage: %time A*c
CPU times: user 0.05 s, sys: 0.01 s, total: 0.06 s
Wall time: 0.06 s
5000 x 5000 dense matrix over Finite Field in a of size 2^6
sage: MS1 = MatrixSpace(GF(64,'a'),1,5000)
sage: B = MS1.random_element()
sage: %timeit B*c
625 loops, best of 3: 51.5 µs per loop
}}}
* The docs are now almost fine from my point of view. We only have
{{{
$ sage -coverage sage/matrix/matrix_mod2e_dense.pyx
----------------------------------------------------------------------
sage/matrix/matrix_mod2e_dense.pyx
SCORE sage/matrix/matrix_mod2e_dense.pyx: 100% (27 of 27)
Possibly wrong (function name doesn't occur in doctests):
* Matrix_mod2e_dense _multiply_travolta(Matrix_mod2e_dense self,
Matrix_mod2e_dense right):
* Matrix_mod2e_dense _multiply_karatsuba(Matrix_mod2e_dense self,
Matrix_mod2e_dense right):
* Matrix_mod2e_dense _multiply_strassen(Matrix_mod2e_dense self,
Matrix_mod2e_dense right, cutoff=0):
* ModuleElement _lmul_(self, RingElement right):
----------------------------------------------------------------------
}}}
and I suggest that I add a referee patch that simply adds a "indirect
doctest" in the appropriate places.
__Conclusion__
I put it "needs work", but that's only since I'd like to create a referee
patch. If you did not add the information on which library drives which
base field yet, I can do so as well.
Please check in the changes to the hg repository, or "hg ignore" them.
Please fix the self tests (or tell me why my attempt to call spkg-check
did not work).
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/9562#comment:103>
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.