                         Ideas to code in Mathomatic
                         ---------------------------

Numeric factorization needs to be done over the reals for quadratic and cubic
polynomials as the very last thing done by the simplify command. For example:
(x - 8)/((x + 6)*(x + 8)) should not change to (x - 8)/((x^2) + (14*x) + 48)
after running the simplify command. The quadratic and cubic formulas will be
used with floating point real numbers as inputs and outputs, so this will
only work with numeric degree 2 and 3 polynomials with real number factors
when completed. Factoring over the reals is better than factoring over the
rationals, the latter is what most CAS programs do.

Simplify nested radicals like ((9 + 4*(2^.5))^.5) to (1 + 2*(2^.5)).  This
may be difficult, I don't know how this is generally done.  Slow trial and
error algorithms are not acceptable for this.

Use the GNU Scientific Library (GSL) to automatically numerically solve any
degree numeric polynomial equation, like "misc/roots.c" does, when symbolic
solving fails.  Unfortunately, this will make Mathomatic dependent on the
GSL, so I may not do this.  Instead, the general cubic formula in
"tests/cubic.in" could be hard-coded as a solve routine function, so any
cubic equation could be automatically solved.

Implement complex number factorials, when an accurate floating point complex
number gamma calculating function is found.  The GSL does this.

Implement natural logarithms as the "log()" function, using a dummy operand
internally.  The dummy operand can be the NULL variable and should be first.
The rules for logarithms can be slowly added later.  This is a large project.

Make polynomial gcd calculation partially recursive.  This is difficult, the
expression storage areas are currently static globals.  If successful, this
will make polynomial gcd calculation multivariate, so it will succeed with
large expressions with many variables.
