From: Adhemerval Zanella Date: Wed, 2 May 2012 13:14:17 +0000 (+0200) Subject: Fix nexttoward bugs X-Git-Tag: glibc-2.16-tps~497 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4f9d04aa8fcc5008995409d524086121e9a840dc;p=thirdparty%2Fglibc.git Fix nexttoward bugs [BZ #2550] [BZ #2570] * sysdeps/ieee754/ldbl-128ibm/s_nexttoward.c: Use floating-point comparisons to determine direction to adjust input. --- diff --git a/ChangeLog b/ChangeLog index 66deec2d77a..4b365571b19 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2012-05-02 Adhemerval Zanella + + [BZ #2550] + [BZ #2570] + * sysdeps/ieee754/ldbl-128ibm/s_nexttoward.c: Use floating-point + comparisons to determine direction to adjust input. + 2012-05-01 Roland McGrath * elf/Makefile ($(objpfx)check-localplt.out): Redirect the test's diff --git a/sysdeps/ieee754/ldbl-128ibm/s_nexttoward.c b/sysdeps/ieee754/ldbl-128ibm/s_nexttoward.c index 9ecfef179bd..40f0c469901 100644 --- a/sysdeps/ieee754/ldbl-128ibm/s_nexttoward.c +++ b/sysdeps/ieee754/ldbl-128ibm/s_nexttoward.c @@ -57,11 +57,7 @@ double __nexttoward(double x, long double y) return x; } if(hx>=0) { /* x > 0 */ - if (hy<0||(ix>>20)>(iy>>52) - || ((ix>>20)==(iy>>52) - && (((((int64_t)hx)<<32)|(lx))>(hy&0x000fffffffffffffLL) - || (((((int64_t)hx)<<32)|(lx))==(hy&0x000fffffffffffffLL) - )))) { /* x > y, x -= ulp */ + if (x > y) { /* x > 0 */ if(lx==0) hx -= 1; lx -= 1; } else { /* x < y, x += ulp */ @@ -69,11 +65,7 @@ double __nexttoward(double x, long double y) if(lx==0) hx += 1; } } else { /* x < 0 */ - if (hy>=0||(ix>>20)>(iy>>52) - || ((ix>>20)==(iy>>52) - && (((((int64_t)hx)<<32)|(lx))>(hy&0x000fffffffffffffLL) - || (((((int64_t)hx)<<32)|(lx))==(hy&0x000fffffffffffffLL) - )))) { /* x < y, x -= ulp */ + if (x < y) { /* x < 0 */ if(lx==0) hx -= 1; lx -= 1; } else { /* x > y, x += ulp */