On Apr 28, 4:10 pm, William Stein <wst...@gmail.com> wrote:
> Maple 13 was released today, I think.  The "new features" page is here:
>    http://www.maplesoft.com/products/maple/new_features/full_list.aspx
>
> Looking it over, the only overlap with Sage (current or in development
> features) seems to be the following:
>
>     * They now have graph isomorphism testing
>     * They now have graph enumeration
>     * They have fast linear algebra over cyclotomic fields
>     * Solving systems of linear equations uses a new default
> algorithm, the dense p-adic lift, which is faster on most inputs
>     * The combinatorics package now includes the Eulerian numbers of
> first and second order.
>     * FastArithmeticTools offers building blocks based on
> asymptotically fast polynomial arithmetic for programmers who want to
> extend the package by their own routines for large problems.
>
> We've had very good implementations of the first four above for over a
> year, and I'm looking forward to seeing if our implementations in Sage
> blow them away or not.

I'm also interested in how Maple's linear solver compares with LinBox,
IML, etc.  I don't really expect Maple to win, but it should have good
complexity and storage cost.  Here is Maple code to solve a random N x
N linear system with integer entries from -10 to 10.

N := 1000:
A := LinearAlgebra:-RandomMatrix(N,N+1,generator=rand(-10..10)):
TIMER := time():
X := LinearAlgebra:-Modular:-IntegerLinearSolve(A,N):
time()-TIMER;

A somewhat harder task is to compute a basis for the nullspace.  Maple
inverts a leading block of pivots if the total number of columns is
greater than twice the rank.  All of the complicated work is done by
the RowEchelonTransform command, written by Arne Storjohann and
Zhuliang Chen.  You should have this command in IML, maybe Sage should
use it ?

N := 1000:
A := LinearAlgebra:-RandomMatrix(N/4,N,generator=rand(-10..10)):
TIMER := time():
X := LinearAlgebra:-Modular:-IntegerLinearSolve(A,N):
time()-TIMER;

Please note that the whole thing is built on the LinearAlgebra:-
Modular package, so a great deal of credit is due there.  You can set
infolevel[LinearAlgebra:-Modular:-IntegerLinearSolve] := 5: to see
what the algorithm is doing.

>   The FastArithmeticTools might be Roman Peirce's multivariable
> polynomial arithmetic library.

Nope, that's the modpn library from the group at the University of
Western Ontario:
http://www.orcca.on.ca/~raqeeb/Publications/LMRS-JSC.pdf

An early version of my library is there, but it's not documented.  It
is called to multiply and divide polynomials mod p.  For example:
f := expand((1+x+y+z)^20):
g := f+1:
time(Expand(f*g) mod 32003);
time(expand(f*g));  # old code

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

Reply via email to