future developments, general questions

Librairie C++ de calcul formel/ C++ symbolic computation library

Modérateur : xcasadmin

Ondrej Certik

future developments, general questions

Message par Ondrej Certik » lun. sept. 11, 2006 12:51 am

Dear Bernard, dobry den, bohuzel neumim Francouzsky, tak zkusim Anglicky:

your project looks very promising. I have several suggestions or questions and I would be interested in your opinion. I am sorry if somebody already asked those questions, I don't understand French.

1) I think the best solution to CAS is to use some good and established scripting language like Python instead of devising another bad language, like maple language, mathematica language. giac and ginac are good that they can be used from C++, but C++ is not a good language for scripting and for such a usage. ginac can be used from python using pyginac, or swiginac (http://swiginac.berlios.de/), I actually participated at the development of the latter. Isn't it worthy to expose giac to python as well?

2)I tried to wrote my own symbolic manipulation package in pure python:

http://code.google.com/p/sympy/

besides basic manipulation, it can compute limits (using the same mrvlimit algorithm from the grunts phd thesis, which you used). Still have some minor bugs in series expansion, which prevents some limits to be computed, but in most of the cases it works correctly. Interesting thing is, that the whole package is only around 1000 lines of code... Compared go ginac, or giac sources, even if you take into account only the functionality which I have, it is still much shorter, and thus I believe more maintainable and readable. But slower, because it's in python. Maybe later I'll rewrite it to C++.

3)how did you implement integration? using this article:

http://www-sop.inria.fr/cafe/Manuel.Bro ... ssac98.pdf

?

Or do you have some other article as well? I also want to implement it, fortunately I can also learn from your source code. :)

4) My aim is to play with the algorithms and to choose always the simplest one in terms of lines of code, so that my code can be easily managed and extended. I decided to write my own code, because of the difficulty of extending ginac using my own symbolic functions and similar.

5)I would like to use giac from python - I can even use it from sympy. I can also write the python bindings, like I did for ginac. The problem with giac is, that it doesn't even compile on debian unstable (which I am using) using gcc4.0. debian packges from your site doesn't run either - they contain libstdc++5, but even if I install this old library, there are still ldd problems. so I installed old gcc3.4 compilers but giac is using some headers which don't compile using gcc3.4 (I think from gmp, I am not sure now). I fix those bugs, but then I don't have all the needed libraries for xcas, but I am actually only interested in commandline giac. Is there a way how to tell it to compile only giac? Those building problems are annoying - am I the only one? If you want, I'll post all those error messages to the bugs section.

Maybe it would be interesting to release giac as a standalone package with fewer dependecies.

6) what are your future plans with giac? do you want to achieve similar functionality as maple? or do you just want to use in in high school classes?

Have a nice day and good luck,
Ondrej

parisse
Messages : 5743
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Message par parisse » mar. sept. 12, 2006 5:17 pm

Hi, thanks for your interest for giac. Some answers to your questions:
1/ Yes, it would be awesome to have bindings for giac for many scripting languages. I don't have time to do it myself, if you want to do it you are welcome! I will however continue to add support for maple language since one of my objective is to be able to replace maple by xcas in universities.
2/ I wish you good luck for your project. I did myself choose C++ because efficiency is one of my goal (importing C and C++ libraries another). Unfortunately, many CAS computations require much efficiency... and you must provide many lines of code if for example you want to have a fast multivariate polynomial gcd algorithm, which is required for simplifications.
3/ Integration is based on some algorithms found in the book of Davenport, Siret, Tournier and later some of Manuel Bronstein. There are also many tricks that are tried before the Risch algorithm.
5/ The current version (0.6.1) of giac compiles with gcc 4.0, maybe you have something wrong with the required libraries. Currently only gmp should be mandatory to compile giac, but if you want to have the best performances, PARI 2.3, NTL and GSL should be installed. Could you give me the error messages? I'm about to release a debian package for ubuntu distrib, maybe it will work for you.
6/ The main plans for giac are: continue the code cleanup for threads execution. Include cocoa for Groebner code, improve the PARI link. For Xcas, adding 3-d interactivity.

Répondre