The woods are lovely, dark and deep. But I have promises to keep,
And lines to code before I sleep, And lines to code before I sleep.
As an open-source project, GiNaC allows anybody to extend it. Please don't ask the developers to implement any fancy stuff you might need. They wrote everything they need (and quite a bit more) and they will continue extending it so it keeps up with their needs. If you are interested in any of the tasks, please subscribe to the mailing lists and let us all know.
|low||low||Improve algorithms of matrix operations: Elimination could use some Sasaki-Murao scheme in order to stay entirely within the integral domain. There may be some potential. (Since 0.6.4 nobody is actively working on this any more.)|
|medium||medium||Field extensions are badly needed for some factorization gymnastics and also if one really wants to tackle integration. It's trivial in GiNaC to add a class representing a root of something. How complicated it all gets depends on how cleverly they are supposted to be at the end.|
|low||low||Some systematic I/O-Philosophy. Currently, the normal output cannot be pasted into ginaccint, but only into ginsh. Also, things like formatting compatible with OpenMath would be useful. Please contact Stefan Weinzierl if you are interested, he has a need for this and may have some thoughts!|
|medium||medium||More GiNaC Constants(?) like ComplexInfinity may be needed in order to allow for calculations with infinity (1/0 wouldn't throw any more). This may be quite involved if we want to get it right (but really, we don't know, we havn't thought about it very much).|
|low||high||Limits: Things like exp(x).limit(x==0) returning 1 would be a very nice features. This is doomed to be very involved: consider left and right limits and so on. Note that in the field of complex numbers some things are simpler due to analyticity: (sin(x)/x).series(x,2) actually does return 1+Order(x) with the current version. (The article "Computing Limits in Computer Algebra Systems" by Dominik Gruntz in the book "Computer Algebra Systems - A Practical Guide", edited by M. Wester, is highly recommended as an introduction. The original is available here.)|
|low||varying||Numeric evaluation for certain special functions. All trigonometric functions come from CLN, which is ok. There is, however, no way to compute the Gamma-function tgamma(x), the Digamma-function psi(x), the Polygamma-functions psi(n,x) or the Zeta-function zeta(x) in the whole complex plane. GiNaC already implements several special function values like all integer and half-integer values of those functions (where analytic results do exist) and all their series evaluations. These things should better be implemented in CLN, however!|
|very low||quite high||Symbolic Integration. A heuristic approach should not be too difficult (one could readily write a primitive "derivative divides"). It boils down to finding the right representation of the integrand in a suitable differential field. Again, one needs an extension class, this time a transcendental one for representing t=tan(x) by its derivative Dt=1+t^2. See Manuel Bronstein's quite readable course notes of the ISSAC'98 Symbolic Integration Tutorial (available from his web-page) and also his book Symbolic Integration I - Transcendental Functions if you are curious what this is all about.|