Fix excessive ULP for y1_upward (0x2p+0) in test-float and test-ifloat.
Commit Message
Ok for mainline?
* sysdeps/ieee754/flt-32/e_j1f.c (__ieee754_y1f): Force computations
to occur in round to nearest mode when |x| >= 2.0
---
ChangeLog | 5 +++++
sysdeps/ieee754/flt-32/e_j1f.c | 1 +
2 files changed, 6 insertions(+)
Comments
From: David Miller <davem@davemloft.net>
Date: Sat, 24 May 2014 21:59:24 -0400 (EDT)
> Ok for mainline?
>
> * sysdeps/ieee754/flt-32/e_j1f.c (__ieee754_y1f): Force computations
> to occur in round to nearest mode when |x| >= 2.0
Ping? This is my second submission of this bug fix.
Thanks.
> ---
> ChangeLog | 5 +++++
> sysdeps/ieee754/flt-32/e_j1f.c | 1 +
> 2 files changed, 6 insertions(+)
>
> diff --git a/ChangeLog b/ChangeLog
> index 271e31d..1dd5794 100644
> --- a/ChangeLog
> +++ b/ChangeLog
> @@ -1,3 +1,8 @@
> +2014-05-24 David S. Miller <davem@davemloft.net>
> +
> + * sysdeps/ieee754/flt-32/e_j1f.c (__ieee754_y1f): Force computations
> + to occur in round to nearest mode when |x| >= 2.0
> +
> 2014-05-23 Richard Henderson <rth@twiddle.net>
>
> * nptl/pt-vfork.c (vfork_resolve): Rename from vfork_ifunc.
> diff --git a/sysdeps/ieee754/flt-32/e_j1f.c b/sysdeps/ieee754/flt-32/e_j1f.c
> index cb9f97f..a180968 100644
> --- a/sysdeps/ieee754/flt-32/e_j1f.c
> +++ b/sysdeps/ieee754/flt-32/e_j1f.c
> @@ -107,6 +107,7 @@ __ieee754_y1f(float x)
> return -HUGE_VALF+x; /* -inf and overflow exception. */
> if(__builtin_expect(hx<0, 0)) return zero/(zero*x);
> if(ix >= 0x40000000) { /* |x| >= 2.0 */
> + SET_RESTORE_ROUNDF (FE_TONEAREST);
> __sincosf (x, &s, &c);
> ss = -s-c;
> cc = s-c;
> --
> 1.8.1.2
>
On 05/25/2014 03:59 AM, David Miller wrote:
>
> Ok for mainline?
>
> * sysdeps/ieee754/flt-32/e_j1f.c (__ieee754_y1f): Force computations
> to occur in round to nearest mode when |x| >= 2.0
> ---
> ChangeLog | 5 +++++
> sysdeps/ieee754/flt-32/e_j1f.c | 1 +
> 2 files changed, 6 insertions(+)
>
> diff --git a/ChangeLog b/ChangeLog
> index 271e31d..1dd5794 100644
> --- a/ChangeLog
> +++ b/ChangeLog
> @@ -1,3 +1,8 @@
> +2014-05-24 David S. Miller <davem@davemloft.net>
> +
> + * sysdeps/ieee754/flt-32/e_j1f.c (__ieee754_y1f): Force computations
> + to occur in round to nearest mode when |x| >= 2.0
> +
> 2014-05-23 Richard Henderson <rth@twiddle.net>
>
> * nptl/pt-vfork.c (vfork_resolve): Rename from vfork_ifunc.
> diff --git a/sysdeps/ieee754/flt-32/e_j1f.c b/sysdeps/ieee754/flt-32/e_j1f.c
> index cb9f97f..a180968 100644
> --- a/sysdeps/ieee754/flt-32/e_j1f.c
> +++ b/sysdeps/ieee754/flt-32/e_j1f.c
> @@ -107,6 +107,7 @@ __ieee754_y1f(float x)
> return -HUGE_VALF+x; /* -inf and overflow exception. */
> if(__builtin_expect(hx<0, 0)) return zero/(zero*x);
> if(ix >= 0x40000000) { /* |x| >= 2.0 */
> + SET_RESTORE_ROUNDF (FE_TONEAREST);
Looks fine, thanks,
Andreas
> __sincosf (x, &s, &c);
> ss = -s-c;
> cc = s-c;
>
@@ -1,3 +1,8 @@
+2014-05-24 David S. Miller <davem@davemloft.net>
+
+ * sysdeps/ieee754/flt-32/e_j1f.c (__ieee754_y1f): Force computations
+ to occur in round to nearest mode when |x| >= 2.0
+
2014-05-23 Richard Henderson <rth@twiddle.net>
* nptl/pt-vfork.c (vfork_resolve): Rename from vfork_ifunc.
@@ -107,6 +107,7 @@ __ieee754_y1f(float x)
return -HUGE_VALF+x; /* -inf and overflow exception. */
if(__builtin_expect(hx<0, 0)) return zero/(zero*x);
if(ix >= 0x40000000) { /* |x| >= 2.0 */
+ SET_RESTORE_ROUNDF (FE_TONEAREST);
__sincosf (x, &s, &c);
ss = -s-c;
cc = s-c;