aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c')
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c b/sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c
index ef1b3dc..5f92a5f 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c
@@ -65,7 +65,7 @@ __nearbyintl (long double x)
}
else if (fabs (u.d[1].d) < TWO52 && u.d[1].d != 0.0)
{
- double high, low, tau;
+ double high = u.d[0].d, low = u.d[1].d, tau;
/* In this case we have to round the low double and handle any
adjustment to the high double that may be caused by rounding
(up). This is complicated by the fact that the high double
@@ -78,8 +78,6 @@ __nearbyintl (long double x)
{
/* If the high/low doubles are the same sign then simply
round the low double. */
- high = u.d[0].d;
- low = u.d[1].d;
}
else if (u.d[1].d < 0.0)
{
@@ -88,8 +86,8 @@ __nearbyintl (long double x)
tau = __nextafter (u.d[0].d, 0.0);
tau = (u.d[0].d - tau) * 2.0;
- high = u.d[0].d - tau;
- low = u.d[1].d + tau;
+ high -= tau;
+ low += tau;
}
low += TWO52;
low -= TWO52;
@@ -100,8 +98,6 @@ __nearbyintl (long double x)
{
/* If the high/low doubles are the same sign then simply
round the low double. */
- high = u.d[0].d;
- low = u.d[1].d;
}
else if (u.d[1].d > 0.0)
{
@@ -109,8 +105,8 @@ __nearbyintl (long double x)
adjust for that. */
tau = __nextafter (u.d[0].d, 0.0);
tau = (u.d[0].d - tau) * 2.0;
- high = u.d[0].d - tau;
- low = u.d[1].d + tau;
+ high -= tau;
+ low += tau;
}
low = TWO52 - low;
low = -(low - TWO52);