Fix nexttoward bugs

[BZ #2550]
        [BZ #2570]
        * sysdeps/ieee754/ldbl-128ibm/s_nexttoward.c: Use floating-point
        comparisons to determine direction to adjust input.
This commit is contained in:
Adhemerval Zanella 2012-05-02 15:14:17 +02:00 committed by Andreas Jaeger
parent f5a01ca927
commit 4f9d04aa8f
2 changed files with 9 additions and 10 deletions

View File

@ -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

View File

@ -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 */