I suspect it is sufficient to compute
Tanh = 2/(exp(-2*x)+1) -1
Note that exp(-2*x) --> 0 pretty fast..
> -----Original Message-----
> From: Robert Dodier [mailto:robert.dodier at gmail.com]
> Sent: Sunday, March 18, 2007 7:40 PM
> To: fateman at cs.berkeley.edu
> Cc: maxima list
> Subject: Re: [Maxima] Bug in tanh?
>
> On 3/18/07, Richard Fateman <fateman at cs.berkeley.edu> wrote:
>
> > tanh(1.0d3)
> > gives a stack overflow error in wxmaxima 0.7.1
>
> Maxima punts to CL:TANH for floating point evaluation of tanh.
> This is established by the hash table created in src/trigi.lisp;
> search for "frob %tanh". (Bigfloats take another route.)
>
> Looks like GCL and Clisp have trouble with tanh for large arguments.
>
> GCL 2.6.7: (tanh 1.0f3), (tanh 1.0e3), (tanh 1.0d3), and (tanh 1.0l3)
> all trigger "Can't print a non-number" which probably means TANH
> returned inf or nan, and then barfed trying to display the result.
> I don't know how that became a stack overflow in Maxima.
>
> Clisp 2.38: (tanh 1.0f3) and (tanh 1.0e3) both trigger a
> floating point
> overflow error. (tanh 1.0d3) and (tanh 1.0l3) yield 1.0d0 and
> 1.0l0, which is correct enough for me.
>
> I guess someone should file bug reports for GCL and Clisp.
>
> > The computation of tanh(x) by using exp(x) is a bad idea.
>
> I guess we need to relay this notion to the GCL and Clisp projects.
> I don't have any interest in having Maxima create private definitions
> of the math library functions (unless we really, really must).
>
> FWIW
> Robert
>