summaryrefslogtreecommitdiffstats
path: root/lib/msun/src/s_rintl.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/msun/src/s_rintl.c')
-rw-r--r--lib/msun/src/s_rintl.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/msun/src/s_rintl.c b/lib/msun/src/s_rintl.c
index b2a85b6..7f3b444e 100644
--- a/lib/msun/src/s_rintl.c
+++ b/lib/msun/src/s_rintl.c
@@ -44,6 +44,7 @@ shift[2] = {
#error "Unsupported long double format"
#endif
};
+static const float zero[2] = { 0.0, -0.0 };
long double
rintl(long double x)
@@ -74,7 +75,8 @@ rintl(long double x)
* If the result is +-0, then it must have the same sign as x, but
* the above calculation doesn't always give this. Fix up the sign.
*/
- if (x == 0.0L)
- return (sign ? -0.0L : 0.0L);
+ if (u.bits.exp < BIAS && x == 0.0L)
+ return (zero[sign]);
+
return (x);
}
OpenPOWER on IntegriCloud