diff options
Diffstat (limited to 'sysdeps/ieee754/dbl-64/e_remainder.c')
-rw-r--r-- | sysdeps/ieee754/dbl-64/e_remainder.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sysdeps/ieee754/dbl-64/e_remainder.c b/sysdeps/ieee754/dbl-64/e_remainder.c index f025fdf1b5..c59e5895d8 100644 --- a/sysdeps/ieee754/dbl-64/e_remainder.c +++ b/sysdeps/ieee754/dbl-64/e_remainder.c @@ -103,11 +103,13 @@ double __ieee754_remainder(double x, double y) else { if (kx<0x7ff00000&&ky<0x7ff00000&&(ky>0||t.i[LOW_HALF]!=0)) { y=ABS(y)*t128.x; - z=uremainder(x,y)*t128.x; - z=uremainder(z,y)*tm128.x; + z=__ieee754_remainder(x,y)*t128.x; + z=__ieee754_remainder(z,y)*tm128.x; return z; } else { /* if x is too big */ + if (kx == 0x7ff00000 && u.i[LOW_HALF] == 0 && y == 1.0) + return x / x; if (kx>=0x7ff00000||(ky==0&&t.i[LOW_HALF]==0)||ky>0x7ff00000|| (ky==0x7ff00000&&t.i[LOW_HALF]!=0)) return (u.i[HIGH_HALF]&0x80000000)?nNAN.x:NAN.x; |