Re: Computer Algebra Algorithms



Actually, there are C++ programmed CAS, like my giac/xcas
www-fourier.ujf-grenoble.fr/~parisse/giac.html
They are more flexible for programmers because they are available
as C++ libraries, not only as a binary.


You're link doesn't work. Do I get from what you are saying you
code is not open source?

It was probably a temporary failure, at this time it works. I rewrite it to be sure it is the correct link: http://www-fourier.ujf-grenoble.fr/~parisse/giac.html And giac/xcas is open-source (GPL)

If it is not open source how are people going
to learn the algorithms by exploring the code? How does your system
compare to Maxima, Axiom or Derive?

That is not something you can say in a few words, it would require an extensive study. I would say that it is comparable to maxima for CAS functions. I don't know enough Axiom to compare. One point for xcas is that maple users can choose maple compatibility mode, in that mode the syntax is the same as in maple, and there is even a chance that they can run their maple work*** without modification inside xcas. The best way to compare it is to test it!

Personally I find C code
aesthetically unpleasing. If I was to extensively study computer
algebra I would not want to spend my time reading such a low level
language as C. But to each there own.



Giac/xcas is written in C++, not C, some low level code is therefore handled directly by the language, e.g. memory handling using constructors and destructors.

Anyway, a computer algebra system is
another language in itself. It has its own rules and syntax. People
generally prefer righting there numeric algorithms in Maple and MATLAB
then they do in C. They will only resort to a low level language like C
for efficiency or interfacing reasons.


This is one reason I choosed C++ as language for CAS develpment, because it should not be too hard to add a giac/xcas->C++ translator, so that once the code works in xcas user language, it can be compiled (after the user make some changes if necessary). One other reason is that there are many scientific C libraries.

 I am focusing on learning Maple and Hakell. Maple because it is used
via the MATLAB symbolic package and Haskell because it is what a bunch
of experts thought lazy pure functional programming language should be.
I think learning a computer language is easy and once I learn Haskell
the other functional languages (example ML (metta language)) should
come quickly. Logical programming might take some time.


I believe that you can have an idea of a language relatively fast, but it requires much more time to really master it. .