aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/s_nexttoward.c12
2 files changed, 9 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index 66deec2..4b36557 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2012-05-02 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
+
+ [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 <roland@hack.frob.com>
* 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 9ecfef1..40f0c46 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 */