From owner-freebsd-numerics@FreeBSD.ORG Sun Sep 9 23:42:09 2012 Return-Path: Delivered-To: freebsd-numerics@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CED5B1065672 for ; Sun, 9 Sep 2012 23:42:09 +0000 (UTC) (envelope-from stephen@missouri.edu) Received: from wilberforce.math.missouri.edu (wilberforce.math.missouri.edu [128.206.184.213]) by mx1.freebsd.org (Postfix) with ESMTP id 4FA8A8FC15 for ; Sun, 9 Sep 2012 23:42:08 +0000 (UTC) Received: from [127.0.0.1] (wilberforce.math.missouri.edu [128.206.184.213]) by wilberforce.math.missouri.edu (8.14.5/8.14.5) with ESMTP id q89Ng6ZC068241; Sun, 9 Sep 2012 18:42:07 -0500 (CDT) (envelope-from stephen@missouri.edu) Message-ID: <504D294F.1050901@missouri.edu> Date: Sun, 09 Sep 2012 18:42:07 -0500 From: Stephen Montgomery-Smith User-Agent: Mozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120827 Thunderbird/15.0 MIME-Version: 1.0 To: Bruce Evans 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> In-Reply-To: <20120906200420.H1056@besplex.bde.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: freebsd-numerics@freebsd.org Subject: Re: Complex arg-trig functions X-BeenThere: freebsd-numerics@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussions of high quality implementation of libm functions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 Sep 2012 23:42:09 -0000 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?