From owner-freebsd-standards@FreeBSD.ORG Mon Dec 3 14:54:35 2007 Return-Path: Delivered-To: freebsd-standards@FreeBSD.ORG Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A8CD716A511 for ; Mon, 3 Dec 2007 14:54:35 +0000 (UTC) (envelope-from sgk@troutmask.apl.washington.edu) Received: from troutmask.apl.washington.edu (troutmask.apl.washington.edu [128.208.78.105]) by mx1.freebsd.org (Postfix) with ESMTP id 88B0413C46E for ; Mon, 3 Dec 2007 14:54:35 +0000 (UTC) (envelope-from sgk@troutmask.apl.washington.edu) Received: from troutmask.apl.washington.edu (localhost.apl.washington.edu [127.0.0.1]) by troutmask.apl.washington.edu (8.14.1/8.14.1) with ESMTP id lB3Ep5TG016347; Mon, 3 Dec 2007 06:51:05 -0800 (PST) (envelope-from sgk@troutmask.apl.washington.edu) Received: (from sgk@localhost) by troutmask.apl.washington.edu (8.14.1/8.14.1/Submit) id lB3Ep583016346; Mon, 3 Dec 2007 06:51:05 -0800 (PST) (envelope-from sgk) Date: Mon, 3 Dec 2007 06:51:05 -0800 From: Steve Kargl To: Bruce Evans , freebsd-standards@FreeBSD.ORG Message-ID: <20071203145105.GA16203@troutmask.apl.washington.edu> References: <20070928152227.GA39233@troutmask.apl.washington.edu> <20071001173736.U1985@besplex.bde.org> <20071002001154.GA3782@troutmask.apl.washington.edu> <20071002172317.GA95181@VARK.MIT.EDU> <20071002173237.GA12586@troutmask.apl.washington.edu> <20071003103519.X14175@delplex.bde.org> <20071010204249.GA7446@troutmask.apl.washington.edu> <20071203074407.GA10989@VARK.MIT.EDU> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20071203074407.GA10989@VARK.MIT.EDU> User-Agent: Mutt/1.4.2.3i Cc: Subject: Re: long double broken on i386? X-BeenThere: freebsd-standards@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Standards compliance List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 03 Dec 2007 14:54:35 -0000 On Mon, Dec 03, 2007 at 02:44:08AM -0500, David Schultz wrote: > Is the latest version of the patch the one you sent to the list? > If cosl and friends produce accurate answers within a reasonable > domain, it's worth committing; the whole business about how > accurate cosl(1000000000) is can be dealt with later. No, I've rewritten most of the code (numerous times in fact :-). First, I followed Bruce's recommendation to compute the ULP in the higher precision available in GMP/MPFR instead of the long double type. The old method appears to have been using a chop rounding because I would get only 0.5, 1.0, 1.5, ... ULPs (ie, I never saw anything like 0.6312 ULP). With the new method, I see ULPs in the 0.6 to 0.75 range. I haven't had time to implement a full blown Remes algorithm to see if I can reduce the ULP. Second, I've implemented the algorithms found in s_cos.c, s_sin.c, and s_tan.c that use the extra precision from the argument reduction. If I use these algorithms, then the ULPs go up! For example, the ULP for sinl() goes up to about 1.5. Bruce had suggested that the 396 hex digits in the table for 2/pi may need to be checked. I found a paper by K.C. Ng at David Hough's website that (if I read it correctly) suggests that we need a much larger table. So, I need to check how well argument reduction is working. -- Steve