TODO list for the pynac interface
"fully get rid of maxima-based symbolic variables"
- evaluation
- support for _fast_eval
- hash is random
- pyobject deallocations, memory leaks
- print order (William's list)
Now,
sage: x^2 + x^4 + x^3
x^2 + x^3 + x^4
sage: a^3*x^10 + x^12 - a^15
x^12 + a^3*x^10 - a^15
So it is printing from lowest to highest degree, like mathematica (or power series),
but unlike the standard sage convention (or maple, singular, MATH, etc.):
sage: R.<a,x> = QQ[]
sage: a^3*x^10 + x^12 - a^15
-a^15 + a^3*x^10 + x^12
sage: singular(a^3*x^10 + x^12 - a^15)
-a^15+a^3*x^10+x^12
- 1/gamma(-1) = 0
- collect_common_factors (William's list)
need to be able to do this (from ginsh):
> collect_common_factors(x/(x^2 + x));
(1+x)^(-1)
- pretty printing (latex() method, a/b instead of a*b^{-1}, etc.)
- noncommutative symbols
- symbol domains (ginac supports real, complex, integer)
- precision for numeric evaluation (evalf, _mpfr_, William's list)
genuine coercions to real field, etc.
- pickling (William's list)
Support pickle via the "archive" print mode.
Maybe change SAGE's Ginac to make a call to a cython gcd function, then use
singular, since singular's gcd over QQ is much better than ginac's, I think,
and ginac *only* does GCD over QQ. Actually, just make everything in normal.cpp
be implemented via Singular, probably...
- unevaluated expressions?
- callable symbolic expressions??