Open Source Computer Algebra Systems
timdaly writes "A while back Slashdot had an article decrying
the lack of a good open source computer algebra
system. That is changing. There is a
conference scheduled for the end of May to define the development model and strategy for future work. Students of math, science and engineering will find this valuable. If you're tired of hacking open source editors and want something with a real technical challenge this is the area for you."
maybe i'm not understanding it properly, but will this be a large maths library? if so what will it include exactly?"
Well, though it stands for GiNaC is Not a CAS (Computer Algebre System). GiNaC, which is a library for advanced symbolic calculations certainly would make a fine backend for a CAS. It's a pretty powerful tool wainging for an interface.
A computer algebra system which is built in a bazaar is a Bad Idea.
With an operating system, it isn't all that critical if it crashes occasionally. Ok, it's a nuisance... but it won't go unnoticed, and someone will track down why it's crashing, and it will get fixed.
Computer algebra systems are rather more prone to undiscovered errors. It's very easy, for example, to write a long integer multiplication routine which works perfectly for integers less than 2^20 digits long, but starts to fail (deterministically, but without obvious pattern) for very rare inputs above that size. In a bazaar, where code is accepted from anyone, you're very likely to see this sort of buggy code get introduced.
With a closed (commercial) or pseudo-closed (not necessarily commercial, but within a university where everyone has scrutinized each other's credentials) environment, such errors are far less likely to exist. Computational mathematicians are paranoid about such errors; computational mathematicians will not introduce a piece of code unless they can *prove* that it will work.
Given enough eyes, all detected bugs will be fixed; but actually detecting those bugs in the first place is far from certain.
Tarsnap: Online backups for the truly paranoid
For more info check out: http://maxima.sourceforge.net
I've used it for some basic things, and it seems to be quite powerful. Not as full-featured as MAPLE or Mathematica, but covers most of the common needs for a CAS.
There is a subtle point here. There will be many :-)
different computer algebra systems presented and
they each have a community.I don't expect there
will be an uber-system that converges them. But
it is well worth discussing the future directions
and shared concerns (like a common front-end (e.g.
TeXmacs)), common test suites, common graphics
packages. I also expect the license issues to
be wonderfully warmth-generating
I have a collection of self-built RPMS for mathematics packages to try out if you like. Included are: drgenius, gap, geomview, gtkmathview, Macaulay2, maxima (a minor pain 'cause it depends on lisp), and others available at http://www.math.unl.edu/~rdieter. Enjoy.
I read the GiNac paper posted at the link.
Aldor (www.aldor.org) is a language that goes
well beyond the GiNaC language. It offers Types
as first-class objects (you can store them and
manipulate them), symbolic as well as numeric
evaluation, interpretation and compilation.
Frankly, though I'm certain to be flamed for this,
I find that doing computer algebra in C++ about
like doing division in roman numerals. It is
possible to do but it is the wrong notation and
notation is vital to thinking correctly (and
programming correctly). The closer a language's
syntax and semantics approaches to the problem
domain the fewer chances there are of mistakes.
After working on GAP for two years and talking with people banging on related programs like Magma, I'm not sure if any of that is possible. Mathematicians seem rabidly tied down to their interface of choice. It has to be the case where they absolutely cannot do what they want in their current program even with 10 years of work before they think of switching. One guy would do pencil and paper calculations (2 days+) rather then using a second program for a missing feature. Test suites are nice but how much overlap is their really between these programs? Many of the GAP tests beyond basic arithmetic are testing the features unique to GAP. I can't sit down at another program and expect any of them to be meaningful let alone work.
Yes, both GAP and Axiom have well-founded math
models at their heart. They started out symbolic.
I do not expect anyone to change religions, umm,
systems. But we all need to discuss things like
MathML, common user interfaces, common graphics,
etc. that are not at the heart of the systems
and can benefit every system. As to common
tests I found it very worthwhile to test one
system by trying others. The tests highlight
interesting questions such as how and when to
factor results. I'd also like to see all of the
free packages available on one CD packaged so
they could all be run without installation.
Today we have muPAD (generally the smartest, pretty friendly, but only somewhat free), maxima (which is usable, but hardly polished), yacas (which I know nothing about), and emacs calc (which is very user-friendly but also the dumbest). None of them (well, maybe muPAD) are close to becoming rivals to the above-mentioned systems in terms of either user-friendlyness or features.
(Of course, this is not special for computer algebra systems. We also need better DMBS (and related tools, such as form-generators, report-generators, etc...), office productivity apps, cad, gis, groupware, financial stuff, graphics, dtp, music, etc...)
I think they call it "FORTRAN", or something like that...
(yes, it's a joke)
Don't forget Octave, which is much analogous to matlab. There are even efforts to write compatibility libraries so matlab people will feel at home... :-)
LISP and Prolog anyone?
python >>>
reduce(lambda x,y:x+y,map(lambda x:chr(ord(x)^42),tuple('zS^BED\nX_FOY\x0b')))
For anyone interested in free computer algebra systems, I would like to point to GNU TeXmacs, whose version 1.0 has just been released. This program can be used as a frontend for most free computer algebra systems. Please contact us if you want to help us supporting other systems or improving the current interfaces (or adding interfaces to other scientific computation systems).
We plan to write a compiler for a new computer algebra system called mathemagix. We are searching potential contributors or people who would just like to give us some useful suggestions; the development is still in a very early stage due to my work on TeXmacs.
Still, people have learned quite a bit about algorithms, software engineering, and software reuse since Macsyma, Maple, and Mathematica were originally implemented, and it might well be worth thinking about having another go at a modern computer algebra system. I suspect that implementing it in something like ML or Haskell might help a lot with correctness and extensibility.