On Feb 1, 6:18 pm, William Stein <[email protected]> wrote:
> > with(linalg);
> > A := LinearAlgebra:-RandomMatrix(200);
> > det(A);
>
> and it takes 30 seconds.
>
> I know it was deprecated in Maple 6, but isn't it odd that Maple doesn't even
> print a warning or something like 6 years later that one is recommended not
> to use the det function?

I basically agree.  My preference is to update commands with new
functionality and possibly new names and have the old commands call
the new commands.  In this case it wasn't feasible though.  The old
style "matrix" supports things that the new style "Matrix" does not,
like symbolic entries.  For example:
A := matrix(4,4);
d := linalg[det](A);

Now this is arguably a useless feature (try 12x12) but there was a lot
of old code (and books, and lecture notes) that required it.  So they
decided to leave the linalg package intact.  It also didn't help that
the new LinearAlgebra package had a lot of performance problems for
exact matrices at first.  Those are gradually being addressed.

>   (1) leave foo in, i.e., never delete it from maple, [in sage we
> would remove foo after 6-12 months],

A new version of Maple is only released every year, and there are lots
of people who expect their 10 year old code to run.  It's almost a
Microsoft-like situation.  And since people have to pay for upgrades
there's an entirely different dynamic.  Many people skip releases and
will only upgrade if there's something new that interests them.  In a
way it makes sense.  Maple is a 25 year old product, so any change -
no matter how big - is evolutionary.  The developers need to minimize
the hassle that this causes for users, because for many people Maple
is just a tool that they don't want to be bothered by.  Sage doesn't
have this problem because it is a young project with a smaller, mostly
enthusiast user base.  You should break everything that's wrong while
you can :)

>   (2)  don't print any warnings at all when people use foo ever [in
> sage we would print a deprecation warning]
>
>   (3) make sure foo continues to work exactly as it always did before
> it was deprecated, in particular, even if there is an identical
> function Foo elsewhere in maple that is a million times faster, make
> sure that foo continues to be a million times slower than Foo [in
> Sage, we would at least make foo call Foo, I think].

My way out of the trap is to break (fix) things with a factor of ten.
If it's 10 times faster on average and an order of magnitude faster in
general then users won't complain.  This is good for developers too,
because changes require a lot of extra work (tests, etc) so it
guarantees that development time is only spent on something good.  My
preference is also to delete old code.  Keep a copy somewhere but rip
it out of the system.  And - this is the hardest part - hold back new
code that is not good enough.  I have thrown out more code than I have
in Maple now.  Sometimes a good effort falls short.  You have to
accept it, learn from it, and move on.

And, in a different message:
> Computing determinants, ranks, minpolys, charpolys, elementary
> invariants, etc. of matrices is a perfect example of a superb class of
> problems to attack with GPUs.  I hope you'll write a nice paper about
> doing so!

I may not get to work on the problem.  If I did however, I would start
with this approach:
http://www.cis.udel.edu/~wan/publications/jsc05.pdf

--~--~---------~--~----~------------~-------~--~----~
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-devel
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to