about summary refs log tree commit diff
path: root/sysdeps/ieee754/ldbl-96/e_jnl.c
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2013-12-04 14:39:37 +0000
committerJoseph Myers <joseph@codesourcery.com>2013-12-04 14:39:37 +0000
commit699ff83712b5796ac50ed332d9dad55d38450e81 (patch)
tree8e2470bbcf5d1d18813aa9d063771b083c8667af /sysdeps/ieee754/ldbl-96/e_jnl.c
parent5b118558f9fb0620508d51c34c2cb5ba4f1f01c2 (diff)
downloadglibc-699ff83712b5796ac50ed332d9dad55d38450e81.tar.gz
glibc-699ff83712b5796ac50ed332d9dad55d38450e81.tar.xz
glibc-699ff83712b5796ac50ed332d9dad55d38450e81.zip
Fix Bessel function error handling (bug 6807, bug 15901).
Diffstat (limited to 'sysdeps/ieee754/ldbl-96/e_jnl.c')
-rw-r--r--sysdeps/ieee754/ldbl-96/e_jnl.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sysdeps/ieee754/ldbl-96/e_jnl.c b/sysdeps/ieee754/ldbl-96/e_jnl.c
index 58a9107f7d..fa8e27efec 100644
--- a/sysdeps/ieee754/ldbl-96/e_jnl.c
+++ b/sysdeps/ieee754/ldbl-96/e_jnl.c
@@ -302,7 +302,8 @@ __ieee754_ynl (int n, long double x)
   if (__builtin_expect ((ix == 0x7fff) && ((i0 & 0x7fffffff) != 0), 0))
     return x + x;
   if (__builtin_expect ((ix | i0 | i1) == 0, 0))
-    return -HUGE_VALL + x;  /* -inf and overflow exception.  */
+    /* -inf or inf and divide-by-zero exception.  */
+    return ((n < 0 && (n & 1) != 0) ? 1.0L : -1.0L) / 0.0L;
   if (__builtin_expect (se & 0x8000, 0))
     return zero / (zero * x);
   sign = 1;