diff options
Diffstat (limited to 'src/math/rintl.c')
-rw-r--r-- | src/math/rintl.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/src/math/rintl.c b/src/math/rintl.c index 26725073..374327db 100644 --- a/src/math/rintl.c +++ b/src/math/rintl.c @@ -6,11 +6,9 @@ long double rintl(long double x) return rint(x); } #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 -#if LDBL_MANT_DIG == 64 -#define TOINT 0x1p63 -#elif LDBL_MANT_DIG == 113 -#define TOINT 0x1p112 -#endif + +static const long double toint = 1/LDBL_EPSILON; + long double rintl(long double x) { union ldshape u = {x}; @@ -21,9 +19,9 @@ long double rintl(long double x) if (e >= 0x3fff+LDBL_MANT_DIG-1) return x; if (s) - y = x - TOINT + TOINT; + y = x - toint + toint; else - y = x + TOINT - TOINT; + y = x + toint - toint; if (y == 0) return 0*x; return y; |