branch cut fixup for atanh(bfloat(x))



One aspect of Kahan's notes that people in the symbolic
community sometimes overlook is that his design is a
compromise based on the fundamental requirement of
the machine-hardware-float world.  That is, whatever you
do must fit in the particular field you have at hand. Some problems
go away if you can slide into symbolic or arbitrary precision
arithmetic.  We COULD have not only a signed zero, but
a signed <any number>. The limit program sort of has the
notion of this... e.g.  limit(1/(x-3),x,3,PLUS)  has a signed 3.
(of course 3 is positive, but it can be approached from - or +)

We also need to consider if we want to support, say,
p - 0*i   as different from p,  or from p+0*i  and what they mean for
complex function simplification wrt branch cuts.

Some of WK's  cleverness is expended on how to implement
intervals -- external, internal, open, closed, ... all of which is
fun except that if intervals can be stored with an extra word to
help us along, some of the problems have other solutions.




I have written, from time to time, about the use of NaNs to encode
useful information, and even written programs that did neat
things. Unfortunately, support for NaNs tends to be terrible
in numeric languages, and even worse in Lisp, so the programs
I wrote ran only on HP Precision architecture, now long gone.

Just something to keep in mind. Oh, I agree the stuff is
worth reading!
RJF


----- Original Message -----
From: Raymond Toy <raymond.toy at ericsson.com>
Date: Friday, March 3, 2006 6:09 am
Subject: Re: [Maxima] branch cut fixup for atanh(bfloat(x))

> >>>>> "Barton" == Barton Willis <willisb at unk.edu> writes:
> 
>    Barton> I believe the continuity requirements given in the various
>    Barton> CL standards for the inverse trig functions are too
>    Barton> complicated for symbolic computing. For floating point
>    Barton> evaluation, I propose that we define the inverse trig
>    Barton> functions by their logarc forms (using log(-1) = i %pi).
>    Barton> As far as I know, this is what Maxima has always
>    Barton> done. Presumably, all simplifications in Maxima are
>    Barton> consistent with this choice.
> 
> This is ok with me.  
> 
> But we should at least examine the implications of these choices.
> Kahan's paper gives some motivation of why he chose the branch 
> cuts as
> he did.  Some of the justifications are that common identities still
> hold on the branch cuts, like tan(%i*z) = %i*tanh(z).  But he also
> mentions that other "expected" identities cannot hold on the branch
> cuts.
> 
> It's definitely worth reading Kahan's paper.  And doing some of the
> problems listed therein is quite educational. :-)
> 
> Ray
> 
> _______________________________________________
> Maxima mailing list
> Maxima at math.utexas.edu
> http://www.math.utexas.edu/mailman/listinfo/maxima
>