aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/ieee754
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/ieee754')
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c b/sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c
index 4e997a6..8f34604 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c
@@ -38,6 +38,7 @@ __nearbyintl (long double x)
if (fabs (u.d[0].d) < TWO52)
{
+ double xh = u.d[0].d;
double high = u.d[0].d;
feholdexcept (&env);
if (high > 0.0)
@@ -52,6 +53,10 @@ __nearbyintl (long double x)
high += TWO52;
if (high == 0.0) high = -0.0;
}
+ if (u.d[1].d > 0.0 && (xh - high == 0.5))
+ high += 1.0;
+ else if (u.d[1].d < 0.0 && (-(xh - high) == 0.5))
+ high -= 1.0;
u.d[0].d = high;
u.d[1].d = 0.0;
math_force_eval (u.d[0]);