This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch master updated. glibc-2.21-353-g5a608cc
- From: jsm28 at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 15 May 2015 17:47:50 -0000
- Subject: GNU C Library master sources branch master updated. glibc-2.21-353-g5a608cc
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 5a608ccc2d676aa124f6b55a7b20d071e408ca31 (commit)
from ff069f024ae8cf15d53429e034d67ddcece0f67a (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=5a608ccc2d676aa124f6b55a7b20d071e408ca31
commit 5a608ccc2d676aa124f6b55a7b20d071e408ca31
Author: Joseph Myers <joseph@codesourcery.com>
Date: Fri May 15 17:47:29 2015 +0000
Fix tanf spurious underflows (bug 18221).
The flt-32 implementation of tanf produces spurious underflow
exceptions for some small arguments, through computing values on the
order of x^5. This patch fixes this by adjusting the threshold for
returning x (or, as applicable, +/- 1/x) to 2**-13 (the next term in
the power series being x^3/3).
Tested for x86_64 and x86.
[BZ #18221]
* sysdeps/ieee754/flt-32/k_tanf.c (__kernel_tanf): Use 2**-13 not
2**-28 as threshold for returning x or +/- 1/x.
* math/auto-libm-test-in: Add more tests of tan.
* math/auto-libm-test-out: Regenerated.
diff --git a/ChangeLog b/ChangeLog
index 2b29214..92b4e2d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2015-05-15 Joseph Myers <joseph@codesourcery.com>
+ [BZ #18221]
+ * sysdeps/ieee754/flt-32/k_tanf.c (__kernel_tanf): Use 2**-13 not
+ 2**-28 as threshold for returning x or +/- 1/x.
+ * math/auto-libm-test-in: Add more tests of tan.
+ * math/auto-libm-test-out: Regenerated.
+
[BZ #18220]
* sysdeps/ieee754/flt-32/e_lgammaf_r.c (__ieee754_lgammaf_r): Use
2**26 not 2**58 as threshold for returning x * (log (x) - 1).
diff --git a/NEWS b/NEWS
index b85ba60..44803fa 100644
--- a/NEWS
+++ b/NEWS
@@ -17,7 +17,7 @@ Version 2.22
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, 18196, 18197, 18206, 18210, 18211,
- 18217, 18220, 18247, 18287, 18319, 18333, 18346, 18397, 18409.
+ 18217, 18220, 18221, 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 2a88403..e483569 100644
--- a/math/auto-libm-test-in
+++ b/math/auto-libm-test-in
@@ -2418,6 +2418,8 @@ tan pi/4
tan 0.75
tan 0x1p65
tan -0x1p65
+tan 0x1p-27
+tan -0x1p-27
tan 0xc.9p-4
tan 0xc.908p-4
tan 0xc.90cp-4
diff --git a/math/auto-libm-test-out b/math/auto-libm-test-out
index 0aa7b75..d7bfbb3 100644
--- a/math/auto-libm-test-out
+++ b/math/auto-libm-test-out
@@ -186618,6 +186618,56 @@ tan -0x1p65
= tan tonearest ldbl-128ibm -0x2p+64L : 0xc.17b0bfdb2b8061e7b11d500874p-8L : inexact-ok
= tan towardzero ldbl-128ibm -0x2p+64L : 0xc.17b0bfdb2b8061e7b11d50087p-8L : inexact-ok
= tan upward ldbl-128ibm -0x2p+64L : 0xc.17b0bfdb2b8061e7b11d500874p-8L : inexact-ok
+tan 0x1p-27
+= tan downward flt-32 0x2p-28f : 0x2p-28f : inexact-ok
+= tan tonearest flt-32 0x2p-28f : 0x2p-28f : inexact-ok
+= tan towardzero flt-32 0x2p-28f : 0x2p-28f : inexact-ok
+= tan upward flt-32 0x2p-28f : 0x2.000004p-28f : inexact-ok
+= tan downward dbl-64 0x2p-28 : 0x2p-28 : inexact-ok
+= tan tonearest dbl-64 0x2p-28 : 0x2p-28 : inexact-ok
+= tan towardzero dbl-64 0x2p-28 : 0x2p-28 : inexact-ok
+= tan upward dbl-64 0x2p-28 : 0x2.0000000000002p-28 : inexact-ok
+= tan downward ldbl-96-intel 0x2p-28L : 0x2.00000000000002a8p-28L : inexact-ok
+= tan tonearest ldbl-96-intel 0x2p-28L : 0x2.00000000000002acp-28L : inexact-ok
+= tan towardzero ldbl-96-intel 0x2p-28L : 0x2.00000000000002a8p-28L : inexact-ok
+= tan upward ldbl-96-intel 0x2p-28L : 0x2.00000000000002acp-28L : inexact-ok
+= tan downward ldbl-96-m68k 0x2p-28L : 0x2.00000000000002a8p-28L : inexact-ok
+= tan tonearest ldbl-96-m68k 0x2p-28L : 0x2.00000000000002acp-28L : inexact-ok
+= tan towardzero ldbl-96-m68k 0x2p-28L : 0x2.00000000000002a8p-28L : inexact-ok
+= tan upward ldbl-96-m68k 0x2p-28L : 0x2.00000000000002acp-28L : inexact-ok
+= tan downward ldbl-128 0x2p-28L : 0x2.00000000000002aaaaaaaaaaaaaep-28L : inexact-ok
+= tan tonearest ldbl-128 0x2p-28L : 0x2.00000000000002aaaaaaaaaaaaaep-28L : inexact-ok
+= tan towardzero ldbl-128 0x2p-28L : 0x2.00000000000002aaaaaaaaaaaaaep-28L : inexact-ok
+= tan upward ldbl-128 0x2p-28L : 0x2.00000000000002aaaaaaaaaaaabp-28L : inexact-ok
+= tan downward ldbl-128ibm 0x2p-28L : 0x2.00000000000002aaaaaaaaaaaap-28L : inexact-ok
+= tan tonearest ldbl-128ibm 0x2p-28L : 0x2.00000000000002aaaaaaaaaaabp-28L : inexact-ok
+= tan towardzero ldbl-128ibm 0x2p-28L : 0x2.00000000000002aaaaaaaaaaaap-28L : inexact-ok
+= tan upward ldbl-128ibm 0x2p-28L : 0x2.00000000000002aaaaaaaaaaabp-28L : inexact-ok
+tan -0x1p-27
+= tan downward flt-32 -0x2p-28f : -0x2.000004p-28f : inexact-ok
+= tan tonearest flt-32 -0x2p-28f : -0x2p-28f : inexact-ok
+= tan towardzero flt-32 -0x2p-28f : -0x2p-28f : inexact-ok
+= tan upward flt-32 -0x2p-28f : -0x2p-28f : inexact-ok
+= tan downward dbl-64 -0x2p-28 : -0x2.0000000000002p-28 : inexact-ok
+= tan tonearest dbl-64 -0x2p-28 : -0x2p-28 : inexact-ok
+= tan towardzero dbl-64 -0x2p-28 : -0x2p-28 : inexact-ok
+= tan upward dbl-64 -0x2p-28 : -0x2p-28 : inexact-ok
+= tan downward ldbl-96-intel -0x2p-28L : -0x2.00000000000002acp-28L : inexact-ok
+= tan tonearest ldbl-96-intel -0x2p-28L : -0x2.00000000000002acp-28L : inexact-ok
+= tan towardzero ldbl-96-intel -0x2p-28L : -0x2.00000000000002a8p-28L : inexact-ok
+= tan upward ldbl-96-intel -0x2p-28L : -0x2.00000000000002a8p-28L : inexact-ok
+= tan downward ldbl-96-m68k -0x2p-28L : -0x2.00000000000002acp-28L : inexact-ok
+= tan tonearest ldbl-96-m68k -0x2p-28L : -0x2.00000000000002acp-28L : inexact-ok
+= tan towardzero ldbl-96-m68k -0x2p-28L : -0x2.00000000000002a8p-28L : inexact-ok
+= tan upward ldbl-96-m68k -0x2p-28L : -0x2.00000000000002a8p-28L : inexact-ok
+= tan downward ldbl-128 -0x2p-28L : -0x2.00000000000002aaaaaaaaaaaabp-28L : inexact-ok
+= tan tonearest ldbl-128 -0x2p-28L : -0x2.00000000000002aaaaaaaaaaaaaep-28L : inexact-ok
+= tan towardzero ldbl-128 -0x2p-28L : -0x2.00000000000002aaaaaaaaaaaaaep-28L : inexact-ok
+= tan upward ldbl-128 -0x2p-28L : -0x2.00000000000002aaaaaaaaaaaaaep-28L : inexact-ok
+= tan downward ldbl-128ibm -0x2p-28L : -0x2.00000000000002aaaaaaaaaaabp-28L : inexact-ok
+= tan tonearest ldbl-128ibm -0x2p-28L : -0x2.00000000000002aaaaaaaaaaabp-28L : inexact-ok
+= tan towardzero ldbl-128ibm -0x2p-28L : -0x2.00000000000002aaaaaaaaaaaap-28L : inexact-ok
+= tan upward ldbl-128ibm -0x2p-28L : -0x2.00000000000002aaaaaaaaaaaap-28L : inexact-ok
tan 0xc.9p-4
= tan downward flt-32 0xc.9p-4f : 0xf.fe04cp-4f : inexact-ok
= tan tonearest flt-32 0xc.9p-4f : 0xf.fe04dp-4f : inexact-ok
diff --git a/sysdeps/ieee754/flt-32/k_tanf.c b/sysdeps/ieee754/flt-32/k_tanf.c
index d918826..a67f36e 100644
--- a/sysdeps/ieee754/flt-32/k_tanf.c
+++ b/sysdeps/ieee754/flt-32/k_tanf.c
@@ -45,7 +45,7 @@ float __kernel_tanf(float x, float y, int iy)
int32_t ix,hx;
GET_FLOAT_WORD(hx,x);
ix = hx&0x7fffffff; /* high word of |x| */
- if(ix<0x31800000) /* x < 2**-28 */
+ if(ix<0x39000000) /* x < 2**-13 */
{if((int)x==0) { /* generate inexact */
if((ix|(iy+1))==0) return one/fabsf(x);
else return (iy==1)? x: -one/x;
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 6 ++++
NEWS | 2 +-
math/auto-libm-test-in | 2 +
math/auto-libm-test-out | 50 +++++++++++++++++++++++++++++++++++++++
sysdeps/ieee754/flt-32/k_tanf.c | 2 +-
5 files changed, 60 insertions(+), 2 deletions(-)
hooks/post-receive
--
GNU C Library master sources