I believe the continuity requirements given in the various CL standards
for
the inverse trig functions are too complicated for symbolic computing. For
floating point evaluation, I propose that we define the inverse trig
functions by
their logarc forms (using log(-1) = i %pi). As far as I know, this is
what Maxima has
always done. Presumably, all simplifications in Maxima are consistent
with this choice.
Proposed:
(1) For double floating point evaluation, we write functions
maxima-branch-atanh, and
etc . For an input that is on a branch cut, these functions would return
a value that is
consistent with the logarc form of the function. They should, however,
use a numerically
friendly version of the logarc form. For inputs off the branches, just
use the cl functions.
All lisps would use this scheme. A Lisp that gives bad values off a branch
cuts is just plain unworthy. Maybe this is what Robert suggested the
other day.
(2) I'm not so familiar with big floats, but I think basically the same
scheme should be
used: maxima-branch-big-atanh and etc. The CL compliant atanh Ray wrote
should
be restored --- that way Ray's atanh function and the cl:atanh function
would
agree everywhere for compliant. Lisps. The functions maxima-branch-atanh
and maxima-branch-big-atanh would mostly be identical.
Barton