Hello folks;
I am rather new to this list and I am impressed about how lofty some of
the goals for the future of Genius are. Don't get me wrong, I wish you a
lot of success!
While I cannot contribute to the layout of your language or even work on
the code (I have my own baby to care for) I would like to draw your
attention to something that might be useful for you.
First, I think that sticking to GMP is not worth while. GMP is a
wonderful library for arbitrary precision/long integers that comes with
some good implementations of fast asymptotically ideal algorithms it is
too low-level for your effort. May I suggest to look into CLN instead,
which is built on top of GMP? It provides complex numbers over the
rationals Q and such things and automatic conversion from rationals to
integers when the denominator becomes unity (and conversion from complex
to reals if the imaginary part becomes zero). It also provides
state-of-the-art algorithms for testing of roots (which means it will
simplify 8^(1/3) to 2 and not 2.0000000134213 and the like, even for
complex rationals like (-11/4 + 15*I)^(1/2) == 5/2 + 3*I) as well as all
relevant trigonometric functions. Please have a look at its URL
<http://clisp.cons.org/~haible/packages-cln.html>. Oh, yes, it is GPLed
(intentionally not LGPLed, though it's a library).
For those of you who were talking about symbolic integration: The
rule-based approach is fine but works only within certain limits. All
CASs use it but fall back to a more or less clean implemantation of the
Risch Algorithm if heuristics fail. After all, integration can be
formulated as an algorithmic problem, though it is almost never tought
this way. (It will then require things like polynomial factorization.)
If you are serious I suggest to have a look at the wonderful book by
Keith Geddes, Stephen Czapor and George Labahn called "Algorithms for
Computer Algebra" (ISBN 0-7923-9259-0) or, if that turns out to be too
difficult, at the one by J. Davenport, Y. Siret and E. Tournier called
"Systems and Algorithms for Algebraic Computation" (ISBN 0-12-204230-1).
Integration ought to be considered a long-term goal of course and
factorization of multivariate polynomials a medium-term goal. The other
stuff might be close at hand, though. We have been developing a
library for doing symbolic manipulations directly within C++. It is
currently able to differentiate symbolically all functions it knows of and
(of course) Taylor-expand them. In addition it may Series-expand
expressions about poles (consider e.g. a rational function)! It can also
efficiently expand, collect multivariate polynomials and even normalize
them (Mathematica's Together[]) by using a good implementation of the
heuristic GCD, in this fashion:
2 2
4 x y + x z + 20 y + 21 y z + 4 z 4 y + z
----------------------------------- => -------
2 2 y + 3 z
x y + 3 x z + 5 y + 19 y z + 12 z
For our calculations in Quantum Field Theory we do not want any frontend
since we prefer to do everything in C++ (which is somewhat radical) but
maybe others might wish one and the design of our library (called GiNaC,
for GiNaC is Not a CAS) should easily allow for one.
I am just suggesting it to you, maybe it might help Genius to become a
symbolic package really soon now(tm). Note, that GiNaC is heavily using
CLN but it is not released yet. We are going to release it this year
under either LGPL or---more probably---plain GPL (LGPL would be funny,
since you need CLN beside it and that is GPL). If somebody is showing
interest I am, however, more than happy to send over (or put somewhere on
FTP) a snapshot from our CVS tree so you can start playing around with it.
Regards
-richy.
PS: There is some very preliminary information on
<http://wwwthep.physik.uni-mainz.de/GiNaC/>.
-- Richard Kreckel <Richard.Kreckel_at_Uni-Mainz.DE> <http://wwwthep.physik.uni-mainz.de/~kreckel/>Received on Wed Sep 08 1999 - 02:43:11 CDT
This archive was generated by hypermail 2.2.0 : Sun Apr 17 2011 - 21:00:02 CDT