Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 09 Sep 2012 18:42:07 -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:  <504D294F.1050901@missouri.edu>
In-Reply-To: <20120906200420.H1056@besplex.bde.org>
References:  <5017111E.6060003@missouri.edu> <501C361D.4010807@missouri.edu> <20120804165555.X1231@besplex.bde.org> <501D51D7.1020101@missouri.edu> <20120805030609.R3101@besplex.bde.org> <501D9C36.2040207@missouri.edu> <20120805175106.X3574@besplex.bde.org> <501EC015.3000808@missouri.edu> <20120805191954.GA50379@troutmask.apl.washington.edu> <20120807205725.GA10572@server.rulingia.com> <20120809025220.N4114@besplex.bde.org> <5027F07E.9060409@missouri.edu> <20120814003614.H3692@besplex.bde.org> <50295F5C.6010800@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> <503265E8.3060101@missouri.edu> <5036EFDB.3010304@missouri.edu> <503A9A1A.1050004@missouri.edu> <503ABAC4.3060503@missouri.edu> <20120906200420.H1056@besplex.bde.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 09/06/2012 06:42 AM, Bruce Evans wrote:
> I'm back from a holiday.
>
> On Sun, 26 Aug 2012, Stephen Montgomery-Smith wrote:

> I tested your latest version and found regressions for NaNs.  (Also,
> the float version is less accurate now that it doesn't call double
> functions, but that is a progression.)
> 1. casin*() abuses x and y for |x| and |y| and thus loses the sign of
>     NaNs.  The quick fix is to reload the original values.  The correct
>     fix is to use separate variables for the absolute values, as is
>     done for cacosh*() and catanh*().

I now uniformly use ax and ay for |x| and |y| throughout.

> 2. NaNs are now filtered out early

It is not correct to filter out the NaNs early.  This is because of the 
way expressions like cacosh(NaN + I*INF) are defined in C99.  The INFs 
must be filtered out first.


> % @@ -289,7 +284,16 @@
> %           * the arguments is not NaN, so we opt not to raise it.
> %           */
> % -        return (cpack(x+y, x+y));
> % +        return (cpack(x+0.0L+(y+0), x+0.0L+(y+0)));
> %      }

Why does the second way work, and the first way doesn't?






Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?504D294F.1050901>