Planet Sage

May 13, 2008

Martin Albrecht

M4RI Website

I finally put together the website for the M4RI library. For those who don’t know M4RI:

“M4RI is a library for fast arithmetic with dense matrices over $\mathbb{F}_2$. It was started by Gregory Bard and is now maintained by Martin Albrecht and Gregory Bard. The name M4RI comes from the first implemented algorithm: The “Method of the Four Russians” inversion algorithm published by Gregory Bard. This algorithm in turn is named after the “Method of the Four Russians” multiplication algorithm which is probably better referred to as Kronrod’s method. M4RI is used by the Sage mathematics software and the PolyBoRi library. M4RI is available under the General Public License Version 2 or later (GPLv2+).

Features of the M4RI library include:

  • basic arithmetic with dense matrices over $\mathbb{F}_2$ (addition, equality testing, stacking, augmenting, sub-matrices, randomisation)
  • asymptotically fast $O(n^{log_27})$ matrix multiplication via the “Method of the Four Russians” (M4RM) & Strassen-Winograd algorithm,
  • asymptotically fast $O(n^{3}/log_2(n))$ row echelon form computation and matrix inversion via the “Method of the Four Russians” (M4RI), and
  • support for the x86/x86_64 SSE2 instruction set where available.
  • support for Linux and OS X (GCC), support for Solaris (Sun Studio Express) and support for Windows (Visual Studio 2008 Express).”

Performance-wise it is doing okay but not great. On Intel’s Core2Duo it seems to compare favourably to Magma 2.13. Though, I don’t have access to Magma 2.14 yet which improves dense linear algebra over $\mathbb{F}_2$. However, on AMD’s Opteron it is way behind Magma 2.13. This is possibly due to the 1MB L2 cache of the Opteron vs. 4MB L2 cache of the Core2Duo.

May 13, 2008 10:30 AM

May 11, 2008

Michael Abshoff

Sage 3.0.2.alpha0 release

Hello folks,

this is Sage 3.0.2.alpha0. What happened? It seems that people were busy and until this morning there wasn't a whole lot to merge. But I had a busy day today and finally these is something to put out. We are still mostly on bug fix only mode, so no big surprises. "sage -sdist" seems to have been broken by David Joyner's #3046, so sage-banner is emtpy [see #3161]. I fixed this in the tarball and it will be fixed in Sage 3.0.2.alpha1.

Binaries and sources in the usual place:

I also created md5sums. There are 70+ tickets with patches in trac, among them quite a number of notebook patches. So it would be very nice if people can do some serious review. Note that the notebook patches have some rather large dependency tree available in the wiki here.

Cheers,

Michael

Merged in alpha0:

#336: William Stein, Timothy Clemans: Create an option to clear all cell output
#905: Burcin Erocal, Michael Abshoff: update ipython to 0.8.2
#1230: William Stein: Quit worksheet behaviour
#1557: William Stein: notebook -- usability improvement after uploading file
#2684: Jason Grout: vertices should not default to red
#2768: Jason Grout: add comparison operators to the fast_float mechanism
#2926: Timothy Clemans: notebook -- Minimalistic change password page for notebook user
#2983: Michael Abshoff: Itanium (RHEL 5) -- singular interface problems in matrix_group.py
#3008: William Stein: first cell in notebook is undeletable
#3020: John Cremona, Martin Albrecht: Speed up Finite Fields of characteristic 2 constructors
#3026: Bjarke Hammersholt Roune: multivariate polynomial rings with no variables do not print properly
#3028: Bjarke Hammersholt Roune: Ideals in multivariate polynomial rings with no variables raise exception on comparison
#3065: Didier Deshommes: empty matrices: frobenius() throws RuntimeError
#3105: Francis Clark: new _latex_ and modified __repr__ for elements of relative number fields
#3109: William Stein: elliptic curves -- implement P.divide(n) for P a point on an elliptic curve and n an integer
#3110: Gary Furnish: fix pbuild dependency bug
#3116: Mike Hansen: 1x1 symbolic matrices don't work right
#3121: Jason Grout, William Stein: @interact grid control
#3125: Robert Miller: chromatic_polynomial incorrectly blocks control-c
#3126: Robert Bradshaw: Cython annotation has unicode errors (e.g. from the notebook)
#3129: Bjarke Hammersholt Roune: The singular interface should not claim to support polynomial rings with no variables
#3136: William Stein: the readme for osx should be changed to delete the line about inotebook()
#3138: Bjarke Roune: Singular multivariate polynomial ring has redundant _repr_ method
#3142: Martin Albrecht: MPolynomialIdeal.homogenize bugfix
#3143: Martin Albrecht: remove references to "/home/was"
#3046: David Joyner: version option returning clone branch name
#3150: Carlo Hamalainen: Memory leak in dancing_links.pyx
#3157: Gary Furnish: Executable target for pbuild
#3158: Michael Abshoff: singular-3-0-4-2-20080405.p1 requires flex
#3159: Tim Abbott, Francois Bissey, Michael Abshoff: Patch adding soname to ntl shared library

by mabshoff (noreply@blogger.com) at May 11, 2008 05:56 PM

Yi Qiang

Using Sage with Fluid


Above is Sage running in Fluid.app, which is a "SSB" (Site Specific Browser). I am starting to like using the Sage notebook this way because it doesn't interfere with my regular browsing and it's nice having a dock icon to show your friends ;-)

Here's how you can get it up and running in no time:
1) Install Fluid.app (http://fluidapp.com)
2) Create a new SSB by pointing it to http://localhost:8000
3) You can use this Sage logo for a dock icon (the icon is from artwork done by Sirio who originally posted it to the sage-devel mailing list) 



Obviously this will not work if you don't run sage from elsewhere. I thought about including some script-fu to make it launch Sage automatically, but since I do sage -br so often it's rather pointless. 

by Yi (noreply@blogger.com) at May 11, 2008 11:16 AM

May 09, 2008

Michael Abshoff

Stupid Bugs - Part 824

While building Sage 3.0.1 on a pure Solaris install, i.e. no Sun FreeWare build tools in $PATH, I come across the following beauty:

bash-3.00$ which ranlib
no ranlib in /opt/sfw/bin/ /usr/local/bin/ sparc-SunOS/ /usr/bin /home/mabshoff/bin
bash-3.00$ echo $?
0

Sigh. I guess I need to fix that in spkg/base/prereq-0.3-install.

Cheers,

Michael

by mabshoff (noreply@blogger.com) at May 09, 2008 04:39 PM

Marshall Hampton

Anders Jensen's nonregular Groebner fan in 3D

The only example of a non-regular Groebner fan that I am aware of is the following one from Anders Jensen's 2007 thesis, here plotted in 3D with Sage and gfan:

R4. = PolynomialRing(QQ,4)
idnp = R4.ideal([x*y*z+x^2*z-x*y,x*w^2-z,x*w^4+x*z])
gfnp = idnp.groebner_fan()
show(gfnp.render3d(), frame = False)

You have to follow the link for the plot since I am not sure how to include JMol applets on a blogger post.

by M. Hampton (noreply@blogger.com) at May 09, 2008 03:48 PM

May 05, 2008

Michael Abshoff

Sage 3.0.1 released

Hi,

Sage 3.0.1 is out. Compared over 3.0.1.final there was one crucial bug fix to the Singular pexpect interface. Binaries have been build and are currently mirroring out. This is mostly a bug fix release, but there are also some new interesting features. For details check the Sage 3.0.1 release tour, which is as I type this still somewhat work in progress.

The next release is another bug fix release, i.e. Sage 3.0.2, planned about a week from now. It will likely be released with much of the work that will be done during Bug Day 12 this Saturday. Other than that we are waiting for the Coercion team to finish their rewrite which will then be merge in Sage 3.1.

Cheers,

Michael

by mabshoff (noreply@blogger.com) at May 05, 2008 10:23 AM