This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc 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]

GNU C Library master sources branch master updated. glibc-2.21-348-g9a71f1f


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  9a71f1fcf53615c00b5f9e5da4bba92bccb0efb4 (commit)
      from  0b7a5f920163d03806d7c5d9d1c83b16942c9496 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=9a71f1fcf53615c00b5f9e5da4bba92bccb0efb4

commit 9a71f1fcf53615c00b5f9e5da4bba92bccb0efb4
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Thu May 14 23:51:09 2015 +0000

    Fix atanf spurious underflows (bug 18196).
    
    The sysdeps/ieee754/flt-32 version of atanf produces spurious
    underflow exceptions for some large arguments, because of computations
    that compute x^-4.  This patch fixes this by adjusting the threshold
    for large arguments (for which +/- pi/2 can just be returned, the
    correct result being roughly +/- pi/2 - 1/x) from 2^34 to 2^25.
    
    Tested for x86_64 and x86.
    
    	[BZ #18196]
    	* sysdeps/ieee754/flt-32/s_atanf.c (__atanf): Use 2^25 not 2^34 as
    	threshold for large arguments.
    	* math/auto-libm-test-in: Add another test of atan.
    	* math/auto-libm-test-out: Regenerated.

diff --git a/ChangeLog b/ChangeLog
index f6bf877..1179142 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2015-05-14  Joseph Myers  <joseph@codesourcery.com>
 
+	[BZ #18196]
+	* sysdeps/ieee754/flt-32/s_atanf.c (__atanf): Use 2^25 not 2^34 as
+	threshold for large arguments.
+	* math/auto-libm-test-in: Add another test of atan.
+	* math/auto-libm-test-out: Regenerated.
+
 	[BZ #16339]
 	* sysdeps/i386/fpu/s_log1p.S (dbl_min): New object.
 	(__log1p): Force underflow exception for results with small
diff --git a/NEWS b/NEWS
index a9b0138..c46ee35 100644
--- a/NEWS
+++ b/NEWS
@@ -16,8 +16,8 @@ Version 2.22
   17964, 17965, 17967, 17969, 17978, 17987, 17991, 17996, 17998, 17999,
   18007, 18019, 18020, 18029, 18030, 18032, 18036, 18038, 18039, 18042,
   18043, 18046, 18047, 18068, 18080, 18093, 18100, 18104, 18110, 18111,
-  18125, 18128, 18138, 18185, 18197, 18206, 18210, 18211, 18247, 18287,
-  18319, 18333, 18346, 18397, 18409.
+  18125, 18128, 18138, 18185, 18196, 18197, 18206, 18210, 18211, 18247,
+  18287, 18319, 18333, 18346, 18397, 18409.
 
 * Cache information can be queried via sysconf() function on s390 e.g. with
   _SC_LEVEL1_ICACHE_SIZE as argument.
diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in
index 7e5c7bb..1deb99a 100644
--- a/math/auto-libm-test-in
+++ b/math/auto-libm-test-in
@@ -239,6 +239,7 @@ atan 0x1p-5
 atan 2.5
 atan 10
 atan 1e6
+atan 0x1p31
 atan 0x1p-100
 atan 0x1p-600
 atan 0x1p-10000
diff --git a/math/auto-libm-test-out b/math/auto-libm-test-out
index 7c8a3fb..9f6bbbb 100644
--- a/math/auto-libm-test-out
+++ b/math/auto-libm-test-out
@@ -7796,6 +7796,31 @@ atan 1e6
 = atan tonearest ldbl-128ibm 0xf.424p+16L : 0x1.921fa47d4b30ce822275563fcb8p+0L : inexact-ok
 = atan towardzero ldbl-128ibm 0xf.424p+16L : 0x1.921fa47d4b30ce822275563fcb8p+0L : inexact-ok
 = atan upward ldbl-128ibm 0xf.424p+16L : 0x1.921fa47d4b30ce822275563fccp+0L : inexact-ok
+atan 0x1p31
+= atan downward flt-32 0x8p+28f : 0x1.921fb4p+0f : inexact-ok
+= atan tonearest flt-32 0x8p+28f : 0x1.921fb6p+0f : inexact-ok
+= atan towardzero flt-32 0x8p+28f : 0x1.921fb4p+0f : inexact-ok
+= atan upward flt-32 0x8p+28f : 0x1.921fb6p+0f : inexact-ok
+= atan downward dbl-64 0x8p+28 : 0x1.921fb54242d18p+0 : inexact-ok
+= atan tonearest dbl-64 0x8p+28 : 0x1.921fb54242d18p+0 : inexact-ok
+= atan towardzero dbl-64 0x8p+28 : 0x1.921fb54242d18p+0 : inexact-ok
+= atan upward dbl-64 0x8p+28 : 0x1.921fb54242d19p+0 : inexact-ok
+= atan downward ldbl-96-intel 0x8p+28L : 0x1.921fb54242d18468p+0L : inexact-ok
+= atan tonearest ldbl-96-intel 0x8p+28L : 0x1.921fb54242d1846ap+0L : inexact-ok
+= atan towardzero ldbl-96-intel 0x8p+28L : 0x1.921fb54242d18468p+0L : inexact-ok
+= atan upward ldbl-96-intel 0x8p+28L : 0x1.921fb54242d1846ap+0L : inexact-ok
+= atan downward ldbl-96-m68k 0x8p+28L : 0x1.921fb54242d18468p+0L : inexact-ok
+= atan tonearest ldbl-96-m68k 0x8p+28L : 0x1.921fb54242d1846ap+0L : inexact-ok
+= atan towardzero ldbl-96-m68k 0x8p+28L : 0x1.921fb54242d18468p+0L : inexact-ok
+= atan upward ldbl-96-m68k 0x8p+28L : 0x1.921fb54242d1846ap+0L : inexact-ok
+= atan downward ldbl-128 0x8p+28L : 0x1.921fb54242d18469898cc519ac62p+0L : inexact-ok
+= atan tonearest ldbl-128 0x8p+28L : 0x1.921fb54242d18469898cc519ac63p+0L : inexact-ok
+= atan towardzero ldbl-128 0x8p+28L : 0x1.921fb54242d18469898cc519ac62p+0L : inexact-ok
+= atan upward ldbl-128 0x8p+28L : 0x1.921fb54242d18469898cc519ac63p+0L : inexact-ok
+= atan downward ldbl-128ibm 0x8p+28L : 0x1.921fb54242d18469898cc519acp+0L : inexact-ok
+= atan tonearest ldbl-128ibm 0x8p+28L : 0x1.921fb54242d18469898cc519ac8p+0L : inexact-ok
+= atan towardzero ldbl-128ibm 0x8p+28L : 0x1.921fb54242d18469898cc519acp+0L : inexact-ok
+= atan upward ldbl-128ibm 0x8p+28L : 0x1.921fb54242d18469898cc519ac8p+0L : inexact-ok
 atan 0x1p-100
 = atan downward flt-32 0x1p-100f : 0xf.fffffp-104f : inexact-ok
 = atan tonearest flt-32 0x1p-100f : 0x1p-100f : inexact-ok
diff --git a/sysdeps/ieee754/flt-32/s_atanf.c b/sysdeps/ieee754/flt-32/s_atanf.c
index 1593918..be2addb 100644
--- a/sysdeps/ieee754/flt-32/s_atanf.c
+++ b/sysdeps/ieee754/flt-32/s_atanf.c
@@ -60,7 +60,7 @@ float __atanf(float x)
 
 	GET_FLOAT_WORD(hx,x);
 	ix = hx&0x7fffffff;
-	if(ix>=0x50800000) {	/* if |x| >= 2^34 */
+	if(ix>=0x4c000000) {	/* if |x| >= 2^25 */
 	    if(ix>0x7f800000)
 		return x+x;		/* NaN */
 	    if(hx>0) return  atanhi[3]+atanlo[3];

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                        |    6 ++++++
 NEWS                             |    4 ++--
 math/auto-libm-test-in           |    1 +
 math/auto-libm-test-out          |   25 +++++++++++++++++++++++++
 sysdeps/ieee754/flt-32/s_atanf.c |    2 +-
 5 files changed, 35 insertions(+), 3 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


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