> I would be interested to see that Maxima can handle inverse functions better.
If correctness in the entire complex plane isn't required, try:
load("opsubst");
inverse_crunch(e) := block([o,f,g],
o : gatherops(e),
for f in o do (
g : get_inverse(f),
if g # false then (
e : subst(f = lambda([s], if not mapatom(s) and op(s)=g then first(args(s)) else funmake(f,[s])),e))),
e);
(defun $get_inverse (f)
(if (symbolp f) (get f '$inverse) nil))
(%i31) inverse_crunch((x+a)*erf(inverse_erf(5+x)));
(%o31) (x+5)*(x+a)
For the inverse Jacobi functions (and likely other things I haven't thought about), this code
would need to be revised.
--Barton
________________________________________
_______________________________________________
Maxima mailing list
Maxima at math.utexas.edu
http://www.math.utexas.edu/mailman/listinfo/maxima