This is the mail archive of the newlib@sources.redhat.com mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] fix for accuracy problem in atan2f


This patch fixes a problem with the accuracy of atan2f by changing to use the round-to-nearest value of pi. See http://lists.freebsd.org/pipermail/cvs-all/2004-June/067012.html for a better description of the issue. A similar change was made to glibc back in July 1997, but there was a typo in that change, for which I have just submitted a patch: http://sources.redhat.com/ml/libc-alpha/2005-07/msg00042.html. See my glibc patch if you want a testcase to demonstrate the problem.

2005-07-20  Bob Wilson  <bob.wilson@acm.org>
           Darin Petkov <darin@tensilica.com>

* libm/math/ef_atan2.c (pi, pi_lo): Use round-to-nearest value of pi.

Index: libm/math/ef_atan2.c
===================================================================
RCS file: /cvs/src/src/newlib/libm/math/ef_atan2.c,v
retrieving revision 1.2
diff -u -r1.2 ef_atan2.c
--- libm/math/ef_atan2.c	4 Apr 2001 13:30:59 -0000	1.2
+++ libm/math/ef_atan2.c	20 Jul 2005 15:43:14 -0000
@@ -25,8 +25,8 @@
 zero  = 0.0,
 pi_o_4  = 7.8539818525e-01, /* 0x3f490fdb */
 pi_o_2  = 1.5707963705e+00, /* 0x3fc90fdb */
-pi      = 3.1415925026e+00, /* 0x40490fda */
-pi_lo   = 1.5099578832e-07; /* 0x34222168 */
+pi      = 3.1415927410e+00,  /* 0x40490fdb */
+pi_lo   = -8.7422776573e-08; /* 0xb3bbbd2e */
 
 #ifdef __STDC__
 	float __ieee754_atan2f(float y, float x)

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]