branch cut strangeness



>>>>> "Robert" == Robert Dodier <robert.dodier at gmail.com> writes:

    Robert> Hello,
    Robert> So far as I can tell, failed tests in rtest_trig appear to be
    Robert> due entirely to different choices of branch cuts.

    Robert> Tested versions: Clisp 2.34 compiled w/ gcc 3.3.2
    Robert> GCL 2.6.7, SBCL 0.9.9, CMUCL 19a

Try cmucl 19c from common-lisp.net.

    Robert> (1) acos and asin: CLHS says
    Robert> (http://www.lispworks.com/documentation/HyperSpec/Body/f_asin_.htm)
    Robert> that the branch cut on [1, \infty) is continuous w/ 4th quadrant
    Robert> and on (-\infty, -1] is continuous w/ 2nd quadrant.

    Robert> Clisp and GCL: conform to spec
    Robert> SBCL and CMUCL: continuous w/ 1st and 2nd quadrants respectively

CMUCL should have the correct branch cuts.

    Robert> (2) atanh: CLHS says
    Robert> (http://www.lispworks.com/documentation/HyperSpec/Body/f_sinh_.htm)
    Robert> that the branch cut on [1, \infty) is continuous w/  1st quadrant
    Robert> and on (-\infty, -1] is continuous w/ 3rd quadrant.

    Robert> Clisp and GCL: continuous w/ 4th and 2nd quadrants respectively
    Robert> SBCL CMUCL: continuous w/ 1st and 2nd respectively

CMUCL should have the correct branch cuts.

    Robert> I don't know if this accounts for all the observed failures in rtest_trig.
    Robert> It would be a good idea to review branch cuts for all math functions
    Robert> but I didn't do that.

Also note that the bigfloat version should be implementing the correct
branch cuts.

I do not know how to reconcile all of this with rectform.  

And not all lisps have signed (floating-point) zeroes, so I'm not sure
how all of this fits together.

Ray