aboutsummaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2016-02-19 17:19:53 +0000
committerJoseph Myers <joseph@codesourcery.com>2016-02-19 17:19:53 +0000
commit7b428e744b1ae62c8f26b4e1db487230b796c984 (patch)
tree7af9532337ac60aa7ffe4005e5271a294aae4758 /sysdeps
parent59eda029a8a35e5f4e5cd7be0f84c6629e48ec6e (diff)
downloadglibc-7b428e744b1ae62c8f26b4e1db487230b796c984.zip
glibc-7b428e744b1ae62c8f26b4e1db487230b796c984.tar.gz
glibc-7b428e744b1ae62c8f26b4e1db487230b796c984.tar.bz2
Fix ldbl-128ibm nextafterl, nexttowardl sign of zero result (bug 19678).
The ldbl-128ibm implementation of nextafterl / nexttowardl returns -0 in FE_DOWNWARD mode when taking the next value below the least positive subnormal, when it should return +0. This patch fixes it to check explicitly for this case. Tested for powerpc. [BZ #19678] * sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c (__nextafterl): Ensure +0.0 is returned when taking the next value below the least positive value.
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c b/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c
index 515aa1e..0d6469d 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c
@@ -87,6 +87,9 @@ long double __nextafterl(long double x, long double y)
math_force_eval (u); /* raise underflow flag */
__set_errno (ERANGE);
}
+ /* Avoid returning -0 in FE_DOWNWARD mode. */
+ if (x == 0.0L)
+ return 0.0L;
return x;
}
/* If the high double is an exact power of two and the low