diff options
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | sysdeps/ieee754/dbl-64/e_j0.c | 2 | ||||
-rw-r--r-- | sysdeps/ieee754/dbl-64/e_j1.c | 2 | ||||
-rw-r--r-- | sysdeps/ieee754/flt-32/e_j0f.c | 2 | ||||
-rw-r--r-- | sysdeps/ieee754/flt-32/e_j1f.c | 2 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128/e_j0l.c | 2 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128/e_j1l.c | 2 |
7 files changed, 17 insertions, 6 deletions
@@ -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) |