From owner-cvs-lib Thu Feb 20 04:37:57 1997 Return-Path: Received: (from root@localhost) by freefall.freebsd.org (8.8.5/8.8.5) id EAA09926 for cvs-lib-outgoing; Thu, 20 Feb 1997 04:37:57 -0800 (PST) Received: (from bde@localhost) by freefall.freebsd.org (8.8.5/8.8.5) id EAA09916; Thu, 20 Feb 1997 04:37:54 -0800 (PST) Date: Thu, 20 Feb 1997 04:37:54 -0800 (PST) From: Bruce Evans Message-Id: <199702201237.EAA09916@freefall.freebsd.org> To: CVS-committers, cvs-all, cvs-lib Subject: cvs commit: src/lib/msun/i387 e_acos.S e_asin.S Sender: owner-cvs-lib@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk bde 97/02/20 04:37:52 Modified: lib/msun/i387 e_acos.S e_asin.S Log: Compute (1 - x^2) as ((1 - x) * (1 + x)) instead of as (1 - x * x) to avoid easily avoidable loss of precision when |x| is nearly 1. Extended (64-bit) precision only moves the meaning of "nearly" here. This probably could be done better by splitting up the range into |x| <= 0.5 and |x| > 0.5 like the C version. However, ucbtest does't report any errors in this version. Perhaps the C version should be used anyway. It's only 25% slower now on a P5, provided the C version of sqrt() isn't used, and the C version could be optimized better. Errors checked by: ucbtest Revision Changes Path 1.4 +12 -6 src/lib/msun/i387/e_acos.S 1.4 +11 -5 src/lib/msun/i387/e_asin.S