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

A free software GUI needs to be written for Mathomatic. Anyone interested in
writing one should contact the author at some point, so it can be included in
the Mathomatic distribution.

Implement natural logarithms as the "log(x)" (or "ln(x)"?) function, using a
dummy operand internally. The dummy operand can be the V_NULL variable (or
V_E variable or M_E constant for logarithms with changeable base) and should
be first. The rules for logarithms can be slowly added later. This is a large
project that only George Gesslein II knows how to do properly (well, maybe).

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. Here is an article on how to do this:
http://www.almaden.ibm.com/cs/people/fagin/symb85.pdf

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 easily be hard-coded into the Mathomatic poly_solve() function, so any
cubic equation could be automatically solved. I just haven't figured out how
Mathomatic is going to easily handle 3 solutions per equation space.

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

Make polynomial gcd calculation partially recursive. This is difficult, as
the expression storage areas are currently static globals. If successful,
this will make polynomial gcd calculation multivariate, so it will succeed
with larger expressions with many variables. There is no need for total
recursion, because it would never be used anyways, with the amount of
floating point round-off error that occurs in Mathomatic.

Add a "polynomial" command that tells what type and degree polynomial the
current expression is, if it is a polynomial in the specified variable. Study
Maxima's facsum() function, it does a related thing.

Fix negate precedence to be the same as Maxima. Currently negate is the
highest precedence operator, should be lower precedence.


This file was written by George Gesslein II of www.mathomatic.org
