about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c3
2 files changed, 10 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index bad618941c..5f42093e35 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2016-02-19  Joseph Myers  <joseph@codesourcery.com>
+
+	[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.
+
 2016-02-19  Florian Weimer  <fweimer@redhat.com>
 
 	* sysdeps/generic/malloc-machine.h: Assume mutex_init is always
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c b/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c
index 515aa1ef5b..0d6469d548 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