aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Polacek <polacek@redhat.com>2012-07-12 16:34:47 +0200
committerMarek Polacek <polacek@redhat.com>2012-07-12 16:34:47 +0200
commit541428fecf21cdde271acbd280c53bfe5beaafe2 (patch)
treed13200f5cd7cbd3cef57ec86ebddc2e72544909e
parentec332e944f4503b8e0f8fd5ae63384f82e528959 (diff)
downloadglibc-541428fecf21cdde271acbd280c53bfe5beaafe2.zip
glibc-541428fecf21cdde271acbd280c53bfe5beaafe2.tar.gz
glibc-541428fecf21cdde271acbd280c53bfe5beaafe2.tar.bz2
Fix ynl return value with LDBL_MIN.
-rw-r--r--ChangeLog7
-rw-r--r--NEWS3
-rw-r--r--math/libm-test.inc5
-rw-r--r--sysdeps/ieee754/ldbl-96/e_jnl.c3
4 files changed, 15 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index c368d11..92e8546 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2012-07-12 Marek Polacek <polacek@redhat.com>
+
+ [BZ #14173]
+ * math/libm-test.inc (yn_test): Add test for BZ #14173.
+ * sysdeps/ieee754/ldbl-96/e_jnl.c (__ieee754_ynl): Correct
+ loop condition.
+
2012-07-12 Joseph Myers <joseph@codesourcery.com>
[BZ #13717]
diff --git a/NEWS b/NEWS
index d66da32..320b56c 100644
--- a/NEWS
+++ b/NEWS
@@ -9,7 +9,8 @@ Version 2.17
* The following bugs are resolved with this release:
- 6778, 14042, 14151, 14154, 14157, 14283, 14328, 14331, 14337, 14347
+ 6778, 14042, 14151, 14154, 14157, 14173, 14283, 14328, 14331, 14337,
+ 14347
Version 2.16
diff --git a/math/libm-test.inc b/math/libm-test.inc
index a9cc2bd..25a8f41 100644
--- a/math/libm-test.inc
+++ b/math/libm-test.inc
@@ -9015,8 +9015,11 @@ yn_test (void)
TEST_ff_f (yn, 10, 2.0, -129184.542208039282635913145923304214L);
TEST_ff_f (yn, 10, 10.0, -0.359814152183402722051986577343560609L);
- END (yn);
+ /* Check whether yn returns correct value for LDBL_MIN, DBL_MIN,
+ and FLT_MIN. See Bug 14173. */
+ TEST_ff_f (yn, 10, min_value, minus_infty, OVERFLOW_EXCEPTION);
+ END (yn);
}
diff --git a/sysdeps/ieee754/ldbl-96/e_jnl.c b/sysdeps/ieee754/ldbl-96/e_jnl.c
index 2e206e7..36b0d8b 100644
--- a/sysdeps/ieee754/ldbl-96/e_jnl.c
+++ b/sysdeps/ieee754/ldbl-96/e_jnl.c
@@ -360,7 +360,8 @@ __ieee754_ynl (int n, long double x)
b = __ieee754_y1l (x);
/* quit if b is -inf */
GET_LDOUBLE_WORDS (se, i0, i1, b);
- for (i = 1; i < n && se != 0xffff; i++)
+ /* Use 0xffffffff since GET_LDOUBLE_WORDS sign-extends SE. */
+ for (i = 1; i < n && se != 0xffffffff; i++)
{
temp = b;
b = ((long double) (i + i) / x) * b - a;