Fix nexttoward bugs (bugs 2550, 2570).
[platform/upstream/glibc.git] / sysdeps / i386 / fpu / s_nexttoward.c
index e5f0164..74147c4 100644 (file)
@@ -55,11 +55,7 @@ double __nexttoward(double x, long double y)
            return x;
        }
        if(hx>=0) {                             /* x > 0 */
-           if (esy>=0x8000||((ix>>20)&0x7ff)>iy-0x3c00
-               || (((ix>>20)&0x7ff)==iy-0x3c00
-                   && (((hx<<11)|(lx>>21))>(hy&0x7fffffff)
-                       || (((hx<<11)|(lx>>21))==(hy&0x7fffffff)
-                           && (lx<<11)>ly)))) {        /* x > y, x -= ulp */
+           if (x > y) {                        /* x -= ulp */
                if(lx==0) hx -= 1;
                lx -= 1;
            } else {                            /* x < y, x += ulp */
@@ -67,11 +63,7 @@ double __nexttoward(double x, long double y)
                if(lx==0) hx += 1;
            }
        } else {                                /* x < 0 */
-           if (esy<0x8000||((ix>>20)&0x7ff)>iy-0x3c00
-               || (((ix>>20)&0x7ff)==iy-0x3c00
-                   && (((hx<<11)|(lx>>21))>(hy&0x7fffffff)
-                       || (((hx<<11)|(lx>>21))==(hy&0x7fffffff)
-                           && (lx<<11)>ly))))  {/* x < y, x -= ulp */
+           if (x < y) {                        /* x -= ulp */
                if(lx==0) hx -= 1;
                lx -= 1;
            } else {                            /* x > y, x += ulp */