*integrator-level* was added fairly recently to break an infinite loop in INTEGRATOR. Instead of setting it in $risch, perhaps it should be bound in hypertrigint1, which looks like the only place risch calls back into sin.lisp (via INTEGRATOR).
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Logged In: YES
user_id=895922
Originator: YES
A putative fix:
(defmfun $risch (exp var)
(setq *integrator-level* 0)
(with-new-context (context)
(rischint exp var)))
Logged In: YES
user_id=28849
Originator: NO
*integrator-level* was added fairly recently to break an infinite loop in INTEGRATOR. Instead of setting it in $risch, perhaps it should be bound in hypertrigint1, which looks like the only place risch calls back into sin.lisp (via INTEGRATOR).
Logged In: YES
user_id=28849
Originator: NO
Fixed as suggested (mostly).
Now risch(cosh(x),x) -> 1/2*(exp(x)-exp(-x))
I suppose that would be better as sinh(x), the answer is right.
risch.lisp, rev 1.10