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.14-333-gbf58244
- From: drepper at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 7 Oct 2011 19:14:29 -0000
- Subject: GNU C Library master sources branch, master, updated. glibc-2.14-333-gbf58244
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 bf5824458cc584cfbbdfdb252bd38e8330c6f662 (commit)
from 48693bea9e2eff8abce31302c6c4bb8a0d101510 (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://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=bf5824458cc584cfbbdfdb252bd38e8330c6f662
commit bf5824458cc584cfbbdfdb252bd38e8330c6f662
Author: Andreas Jaeger <aj@suse.de>
Date: Fri Oct 7 15:14:06 2011 -0400
Fix remainder (NaN, 0)
diff --git a/ChangeLog b/ChangeLog
index 4288477..3917692 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2011-09-29 Andreas Jaeger <aj@suse.de>
+
+ [BZ #6779]
+ [BZ #6783]
+ * math/w_remainderl.c (__remainderl): Handle (NaN, 0) and (Inf,y)
+ correctly.
+ * math/w_remainder.c (__remainder): Likewise.
+ * math/w_remainderf.c (__remainderf): Likewise.
+ * math/libm-test.inc (remainder_test): Add test cases.
+
2011-10-04 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* stdlib/longlong.h: Update from GCC. Fix zarch smul_ppmm and
diff --git a/NEWS b/NEWS
index 73552e6..87649a8 100644
--- a/NEWS
+++ b/NEWS
@@ -9,9 +9,9 @@ Version 2.15
* The following bugs are resolved with this release:
- 9696, 11589, 12403, 12847, 12868, 12852, 12874, 12885, 12907, 12922,
- 12935, 13007, 13021, 13067, 13068, 13090, 13092, 13114, 13118, 13123,
- 13134, 13138, 13150
+ 6779, 6783, 9696, 11589, 12403, 12847, 12868, 12852, 12874, 12885, 12907,
+ 12922, 12935, 13007, 13021, 13067, 13068, 13090, 13092, 13114, 13118,
+ 13123, 13134, 13138, 13150
* New program pldd to list loaded object of a process
Implemented by Ulrich Drepper.
diff --git a/math/libm-test.inc b/math/libm-test.inc
index 70d936c..96da7cd 100644
--- a/math/libm-test.inc
+++ b/math/libm-test.inc
@@ -189,7 +189,7 @@ static FLOAT max_error, real_max_error, imag_max_error;
#define MANT_DIG CHOOSE ((LDBL_MANT_DIG-1), (DBL_MANT_DIG-1), (FLT_MANT_DIG-1), \
- (LDBL_MANT_DIG-1), (DBL_MANT_DIG-1), (FLT_MANT_DIG-1))
+ (LDBL_MANT_DIG-1), (DBL_MANT_DIG-1), (FLT_MANT_DIG-1))
static void
init_max_error (void)
@@ -4940,11 +4940,27 @@ remainder_test (void)
START (remainder);
+ errno = 0;
TEST_ff_f (remainder, 1, 0, nan_value, INVALID_EXCEPTION);
+ check_int ("errno for remainder(1, 0) = EDOM ", errno, EDOM, 0, 0, 0);
+ errno = 0;
TEST_ff_f (remainder, 1, minus_zero, nan_value, INVALID_EXCEPTION);
+ check_int ("errno for remainder(1, -0) = EDOM ", errno, EDOM, 0, 0, 0);
+ errno = 0;
TEST_ff_f (remainder, plus_infty, 1, nan_value, INVALID_EXCEPTION);
+ check_int ("errno for remainder(INF, 1) = EDOM ", errno, EDOM, 0, 0, 0);
+ errno = 0;
TEST_ff_f (remainder, minus_infty, 1, nan_value, INVALID_EXCEPTION);
+ check_int ("errno for remainder(-INF, 1) = EDOM ", errno, EDOM, 0, 0, 0);
+ errno = 0;
TEST_ff_f (remainder, nan_value, nan_value, nan_value);
+ check_int ("errno for remainder(NAN, NAN) unchanged", errno, 0, 0, 0, 0);
+ errno = 0;
+ TEST_ff_f (remainder, 0, nan_value, nan_value);
+ check_int ("errno for remainder(0, NAN) unchanged", errno, 0, 0, 0, 0);
+ errno = 0;
+ TEST_ff_f (remainder, nan_value, 0, nan_value);
+ check_int ("errno for remainder(NaN, 0) unchanged", errno, 0, 0, 0, 0);
TEST_ff_f (remainder, 1.625, 1.0, -0.375);
TEST_ff_f (remainder, -1.625, 1.0, 0.375);
diff --git a/math/w_remainder.c b/math/w_remainder.c
index 9d7a7c5..9ff53e3 100644
--- a/math/w_remainder.c
+++ b/math/w_remainder.c
@@ -33,8 +33,8 @@ static char rcsid[] = "$NetBSD: w_remainder.c,v 1.6 1995/05/10 20:49:44 jtc Exp
#else
double z;
z = __ieee754_remainder(x,y);
- if(_LIB_VERSION == _IEEE_ || __isnan(y)) return z;
- if(y==0.0)
+ if(_LIB_VERSION == _IEEE_ || __isnan(y) || __isnan(x)) return z;
+ if(y==0.0 || __isinf(x))
return __kernel_standard(x,y,28); /* remainder(x,0) */
else
return z;
diff --git a/math/w_remainderf.c b/math/w_remainderf.c
index 486e626..ab1ea2d 100644
--- a/math/w_remainderf.c
+++ b/math/w_remainderf.c
@@ -8,7 +8,7 @@
*
* Developed at SunPro, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
+ * software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
@@ -17,7 +17,7 @@
static char rcsid[] = "$NetBSD: w_remainderf.c,v 1.3 1995/05/10 20:49:46 jtc Exp $";
#endif
-/*
+/*
* wrapper remainderf(x,p)
*/
@@ -36,8 +36,8 @@ static char rcsid[] = "$NetBSD: w_remainderf.c,v 1.3 1995/05/10 20:49:46 jtc Exp
#else
float z;
z = __ieee754_remainderf(x,y);
- if(_LIB_VERSION == _IEEE_ || __isnanf(y)) return z;
- if(y==(float)0.0)
+ if(_LIB_VERSION == _IEEE_ || __isnanf(y) || __isnanf(x)) return z;
+ if(y==(float)0.0 || __isinff(x))
/* remainder(x,0) */
return (float)__kernel_standard((double)x,(double)y,128);
else
diff --git a/math/w_remainderl.c b/math/w_remainderl.c
index 7635fb9..e5460cd 100644
--- a/math/w_remainderl.c
+++ b/math/w_remainderl.c
@@ -38,8 +38,8 @@ static char rcsid[] = "$NetBSD: $";
#else
long double z;
z = __ieee754_remainderl(x,y);
- if(_LIB_VERSION == _IEEE_ || __isnanl(y)) return z;
- if(y==0.0)
+ if(_LIB_VERSION == _IEEE_ || __isnanl(y) || __isnanl(x)) return z;
+ if(y==0.0 || __isinfl(x))
return __kernel_standard(x,y,228); /* remainder(x,0) */
else
return z;
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 10 ++++++++++
NEWS | 6 +++---
math/libm-test.inc | 18 +++++++++++++++++-
math/w_remainder.c | 4 ++--
math/w_remainderf.c | 8 ++++----
math/w_remainderl.c | 4 ++--
6 files changed, 38 insertions(+), 12 deletions(-)
hooks/post-receive
--
GNU C Library master sources