about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog11
-rw-r--r--sysdeps/ieee754/dbl-64/e_j0.c2
-rw-r--r--sysdeps/ieee754/dbl-64/e_j1.c2
-rw-r--r--sysdeps/ieee754/flt-32/e_j0f.c2
-rw-r--r--sysdeps/ieee754/flt-32/e_j1f.c2
-rw-r--r--sysdeps/ieee754/ldbl-128/e_j0l.c2
-rw-r--r--sysdeps/ieee754/ldbl-128/e_j1l.c2
7 files changed, 17 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index b040928a33..62961a2940 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2017-02-15  Gabriel F. T. Gomes  <gftg@linux.vnet.ibm.com>
+
+	[BZ #21134]
+	* sysdeps/ieee754/dbl-64/e_j0.c (__ieee754_y0): Raise the
+	"divide by zero" exception when the input is zero.
+	* sysdeps/ieee754/dbl-64/e_j1.c (__ieee754_y1): Likewise.
+	* sysdeps/ieee754/flt-32/e_j0f.c (__ieee754_y0f): Likewise.
+	* sysdeps/ieee754/flt-32/e_j1f.c (__ieee754_y1f): Likewise.
+	* sysdeps/ieee754/ldbl-128/e_j0l.c (__ieee754_y0l): Likewise.
+	* sysdeps/ieee754/ldbl-128/e_j1l.c (__ieee754_y1l): Likewise.
+
 2017-02-15  Joseph Myers  <joseph@codesourcery.com>
 
 	* sysdeps/x86_64/fpu/test-double-vlen2.c: Move most contents to,
diff --git a/sysdeps/ieee754/dbl-64/e_j0.c b/sysdeps/ieee754/dbl-64/e_j0.c
index 9f25aa855e..4b440cf0d0 100644
--- a/sysdeps/ieee754/dbl-64/e_j0.c
+++ b/sysdeps/ieee754/dbl-64/e_j0.c
@@ -169,7 +169,7 @@ __ieee754_y0 (double x)
   if (ix >= 0x7ff00000)
     return one / (x + x * x);
   if ((ix | lx) == 0)
-    return -HUGE_VAL + x;                  /* -inf and overflow exception.  */
+    return -1 / zero; /* -inf and divide by zero exception.  */
   if (hx < 0)
     return zero / (zero * x);
   if (ix >= 0x40000000)         /* |x| >= 2.0 */
diff --git a/sysdeps/ieee754/dbl-64/e_j1.c b/sysdeps/ieee754/dbl-64/e_j1.c
index 4827fbf3d3..eb446fd102 100644
--- a/sysdeps/ieee754/dbl-64/e_j1.c
+++ b/sysdeps/ieee754/dbl-64/e_j1.c
@@ -174,7 +174,7 @@ __ieee754_y1 (double x)
   if (__glibc_unlikely (ix >= 0x7ff00000))
     return one / (x + x * x);
   if (__glibc_unlikely ((ix | lx) == 0))
-    return -HUGE_VAL + x;
+    return -1 / zero; /* -inf and divide by zero exception.  */
   /* -inf and overflow exception.  */;
   if (__glibc_unlikely (hx < 0))
     return zero / (zero * x);
diff --git a/sysdeps/ieee754/flt-32/e_j0f.c b/sysdeps/ieee754/flt-32/e_j0f.c
index bd0b80fdb0..b783dd069d 100644
--- a/sysdeps/ieee754/flt-32/e_j0f.c
+++ b/sysdeps/ieee754/flt-32/e_j0f.c
@@ -105,7 +105,7 @@ __ieee754_y0f(float x)
 	ix = 0x7fffffff&hx;
     /* Y0(NaN) is NaN, y0(-inf) is Nan, y0(inf) is 0, y0(0) is -inf.  */
 	if(ix>=0x7f800000) return  one/(x+x*x);
-	if(ix==0) return -HUGE_VALF+x;  /* -inf and overflow exception.  */
+	if(ix==0) return -1/zero; /* -inf and divide by zero exception.  */
 	if(hx<0) return zero/(zero*x);
 	if(ix >= 0x40000000) {  /* |x| >= 2.0 */
 	/* y0(x) = sqrt(2/(pi*x))*(p0(x)*sin(x0)+q0(x)*cos(x0))
diff --git a/sysdeps/ieee754/flt-32/e_j1f.c b/sysdeps/ieee754/flt-32/e_j1f.c
index f359a3d9ba..805a87d85b 100644
--- a/sysdeps/ieee754/flt-32/e_j1f.c
+++ b/sysdeps/ieee754/flt-32/e_j1f.c
@@ -112,7 +112,7 @@ __ieee754_y1f(float x)
     /* if Y1(NaN) is NaN, Y1(-inf) is NaN, Y1(inf) is 0 */
 	if(__builtin_expect(ix>=0x7f800000, 0)) return  one/(x+x*x);
 	if(__builtin_expect(ix==0, 0))
-		return -HUGE_VALF+x;  /* -inf and overflow exception.  */
+		return -1/zero; /* -inf and divide by zero exception.  */
 	if(__builtin_expect(hx<0, 0)) return zero/(zero*x);
 	if(ix >= 0x40000000) {  /* |x| >= 2.0 */
 		SET_RESTORE_ROUNDF (FE_TONEAREST);
diff --git a/sysdeps/ieee754/ldbl-128/e_j0l.c b/sysdeps/ieee754/ldbl-128/e_j0l.c
index 855b5a578b..fb8d3518ce 100644
--- a/sysdeps/ieee754/ldbl-128/e_j0l.c
+++ b/sysdeps/ieee754/ldbl-128/e_j0l.c
@@ -834,7 +834,7 @@ _Float128
     {
       if (x < 0)
 	return (zero / (zero * x));
-      return -HUGE_VALL + x;
+      return -1 / zero; /* -inf and divide by zero exception.  */
     }
   xx = fabsl (x);
   if (xx <= 0x1p-57)
diff --git a/sysdeps/ieee754/ldbl-128/e_j1l.c b/sysdeps/ieee754/ldbl-128/e_j1l.c
index db8dca0ab1..6fc69faa3c 100644
--- a/sysdeps/ieee754/ldbl-128/e_j1l.c
+++ b/sysdeps/ieee754/ldbl-128/e_j1l.c
@@ -852,7 +852,7 @@ __ieee754_y1l (_Float128 x)
     {
       if (x < 0)
 	return (zero / (zero * x));
-      return -HUGE_VALL + x;
+      return -1 / zero; /* -inf and divide by zero exception.  */
     }
   xx = fabsl (x);
   if (xx <= 0x1p-114)