[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commits] r23823 - in /fsf/trunk/libc: ChangeLog NEWS math/libm-test.inc math/s_cexp.c math/s_cexpf.c math/s_cexpl.c



Author: eglibc
Date: Sat Aug 24 00:01:54 2013
New Revision: 23823

Log:
Import glibc-mainline for 2013-08-24

Modified:
    fsf/trunk/libc/ChangeLog
    fsf/trunk/libc/NEWS
    fsf/trunk/libc/math/libm-test.inc
    fsf/trunk/libc/math/s_cexp.c
    fsf/trunk/libc/math/s_cexpf.c
    fsf/trunk/libc/math/s_cexpl.c

Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Sat Aug 24 00:01:54 2013
@@ -1,3 +1,12 @@
+2013-08-23  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	[BZ #15532]
+	* math/s_cexp.c (__cexp): Return NaN + i0 for NaN + i0 argument.
+	* math/s_cexpf.c (__cexpf): Likewise.
+	* math/s_cexpl.c (__cexpl): Likewise.
+	* math/libm-test.inc (cexp_test_data): Correct expected return
+	value for NaN + i0.  Add another test.
+
 2013-08-22  David S. Miller  <davem@xxxxxxxxxxxxx>
 
 	* po/ca.po: Update Catalan translation from translation project.

Modified: fsf/trunk/libc/NEWS
==============================================================================
--- fsf/trunk/libc/NEWS (original)
+++ fsf/trunk/libc/NEWS Sat Aug 24 00:01:54 2013
@@ -9,7 +9,7 @@
 
 * The following bugs are resolved with this release:
 
-  14699, 15531, 15749, 15797, 15867
+  14699, 15531, 15532, 15749, 15797, 15867
 
 * CVE-2013-4237 The readdir_r function could write more than NAME_MAX bytes
   to the d_name member of struct dirent, or omit the terminating NUL

Modified: fsf/trunk/libc/math/libm-test.inc
==============================================================================
--- fsf/trunk/libc/math/libm-test.inc (original)
+++ fsf/trunk/libc/math/libm-test.inc Sat Aug 24 00:01:54 2013
@@ -6198,7 +6198,8 @@
 
     TEST_c_c (cexp, plus_infty, qnan_value, plus_infty, qnan_value),
 
-    TEST_c_c (cexp, qnan_value, 0.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
+    TEST_c_c (cexp, qnan_value, 0.0, qnan_value, 0.0),
+    TEST_c_c (cexp, qnan_value, minus_zero, qnan_value, minus_zero),
     TEST_c_c (cexp, qnan_value, 1.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
 
     TEST_c_c (cexp, qnan_value, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),

Modified: fsf/trunk/libc/math/s_cexp.c
==============================================================================
--- fsf/trunk/libc/math/s_cexp.c (original)
+++ fsf/trunk/libc/math/s_cexp.c Sat Aug 24 00:01:54 2013
@@ -145,12 +145,18 @@
     }
   else
     {
-      /* If the real part is NaN the result is NaN + iNaN.  */
+      /* If the real part is NaN the result is NaN + iNaN unless the
+	 imaginary part is zero.  */
       __real__ retval = __nan ("");
-      __imag__ retval = __nan ("");
+      if (icls == FP_ZERO)
+	__imag__ retval = __imag__ x;
+      else
+	{
+	  __imag__ retval = __nan ("");
 
-      if (rcls != FP_NAN || icls != FP_NAN)
-	feraiseexcept (FE_INVALID);
+	  if (rcls != FP_NAN || icls != FP_NAN)
+	    feraiseexcept (FE_INVALID);
+	}
     }
 
   return retval;

Modified: fsf/trunk/libc/math/s_cexpf.c
==============================================================================
--- fsf/trunk/libc/math/s_cexpf.c (original)
+++ fsf/trunk/libc/math/s_cexpf.c Sat Aug 24 00:01:54 2013
@@ -145,12 +145,18 @@
     }
   else
     {
-      /* If the real part is NaN the result is NaN + iNaN.  */
+      /* If the real part is NaN the result is NaN + iNaN unless the
+	 imaginary part is zero.  */
       __real__ retval = __nanf ("");
-      __imag__ retval = __nanf ("");
+      if (icls == FP_ZERO)
+	__imag__ retval = __imag__ x;
+      else
+	{
+	  __imag__ retval = __nanf ("");
 
-      if (rcls != FP_NAN || icls != FP_NAN)
-	feraiseexcept (FE_INVALID);
+	  if (rcls != FP_NAN || icls != FP_NAN)
+	    feraiseexcept (FE_INVALID);
+	}
     }
 
   return retval;

Modified: fsf/trunk/libc/math/s_cexpl.c
==============================================================================
--- fsf/trunk/libc/math/s_cexpl.c (original)
+++ fsf/trunk/libc/math/s_cexpl.c Sat Aug 24 00:01:54 2013
@@ -145,12 +145,18 @@
     }
   else
     {
-      /* If the real part is NaN the result is NaN + iNaN.  */
+      /* If the real part is NaN the result is NaN + iNaN unless the
+	 imaginary part is zero.  */
       __real__ retval = __nanl ("");
-      __imag__ retval = __nanl ("");
+      if (icls == FP_ZERO)
+	__imag__ retval = __imag__ x;
+      else
+	{
+	  __imag__ retval = __nanl ("");
 
-      if (rcls != FP_NAN || icls != FP_NAN)
-	feraiseexcept (FE_INVALID);
+	  if (rcls != FP_NAN || icls != FP_NAN)
+	    feraiseexcept (FE_INVALID);
+	}
     }
 
   return retval;

_______________________________________________
Commits mailing list
Commits@xxxxxxxxxx
http://eglibc.org/cgi-bin/mailman/listinfo/commits