Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 16 Sep 2012 10:13:44 -0500
From:      Stephen Montgomery-Smith <stephen@missouri.edu>
To:        Bruce Evans <brde@optusnet.com.au>
Cc:        freebsd-numerics@FreeBSD.org
Subject:   Re: Complex arg-trig functions
Message-ID:  <5055ECA8.2080008@missouri.edu>
In-Reply-To: <20120916134730.Y957@besplex.bde.org>
References:  <5017111E.6060003@missouri.edu> <20120814072946.S5260@besplex.bde.org> <50297CA5.5010900@missouri.edu> <50297E43.7090309@missouri.edu> <20120814201105.T934@besplex.bde.org> <502A780B.2010106@missouri.edu> <20120815223631.N1751@besplex.bde.org> <502C0CF8.8040003@missouri.edu> <20120906221028.O1542@besplex.bde.org> <5048D00B.8010401@missouri.edu> <504D3CCD.2050006@missouri.edu> <504FF726.9060001@missouri.edu> <20120912191556.F1078@besplex.bde.org> <20120912225847.J1771@besplex.bde.org> <50511B40.3070009@missouri.edu> <20120913204808.T1964@besplex.bde.org> <5051F59C.6000603@missouri.edu> <20120914014208.I2862@besplex.bde.org> <50526050.2070303@missouri.edu> <20120914212403.H1983@besplex.bde.org> <50538E28.6050400@missouri.edu> <20120915231032.C2669@besplex.bde.org> <50548E15.3010405@missouri.edu> <5054C027.2040008@missouri.edu> <5054C200.7090307@missouri.edu> <20120916041132.D6344@besplex.bde.org> <50553424.2080902@missouri.edu> <20120916134730.Y957@besplex.bde.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 09/16/2012 12:14 AM, Bruce Evans wrote:
> On Sat, 15 Sep 2012, Stephen Montgomery-Smith wrote:
>
>> One more thing I would like an opinion on.
>>
>> In my code I check for |z| being small, and then use the approximations:
>> casinh(z) = z
>> cacos(z) = Pi - z
>
> Actually Pi/2 - z.
>
>> catanh(z) = z
>>
>> However these approximations are not used in the papers by Hull et al,
>> and the code works just fine if I don't include these in the code.
>
> Probably a bug in the papers.

It is not a bug in the papers.  The algorithms they provide really do 
work when |z| is small.  In fact, you have to deal separately with the 
cases |x| is small and |y| is small (z=x+I*y), so dealing with both of 
them being small is not any additional problem.

And now I see your other post, that using PI/2 is problematic especially 
when rounding is not to nearest.  (Then the problem of rounding PI/2 
properly is relegated to the acos function, and so it is someone else's 
problem.)

So all things being said and done, I am going to remove the use of these 
approximations.

(And also, my comments describing them had a silly mistake in them as well.)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5055ECA8.2080008>