This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Use C11 CMPLX* macros in libm tests [committed]


libm-test.inc has a macro BUILD_COMPLEX to construct a complex number
with given real and imaginary parts while allowing properly for signed
zeroes, infinities and NaNs (which don't work properly with a simple
real + I * imag, in the absence of compiler support for imaginary
types), using assignment to __real__ and __imag__ parts of the number.
C11 defines CMPLX* macros for this purpose, which GCC 4.7 and above
provide suitable built-in functions for.  This patch redefines
BUILD_COMPLEX in terms of the standard macros.

Tested for x86_64 and x86.  Committed.

2015-10-28  Joseph Myers  <joseph@codesourcery.com>

	* math/libm-test.inc (BUILD_COMPLEX): Remove macro.
	* math/test-double.h (BUILD_COMPLEX): New macro.
	* math/test-float.h (BUILD_COMPLEX): Likewise.
	* math/test-ldouble.h (BUILD_COMPLEX): Likewise.

diff --git a/math/libm-test.inc b/math/libm-test.inc
index 631b205..17edcfa 100644
--- a/math/libm-test.inc
+++ b/math/libm-test.inc
@@ -328,12 +328,6 @@ static FLOAT prev_max_error, prev_real_max_error, prev_imag_max_error;
 
 static FLOAT max_valid_error;
 
-#define BUILD_COMPLEX(real, imag) \
-  ({ __complex__ FLOAT __retval;					      \
-     __real__ __retval = (real);					      \
-     __imag__ __retval = (imag);					      \
-     __retval; })
-
 #define MANT_DIG CHOOSE ((LDBL_MANT_DIG-1), (DBL_MANT_DIG-1), (FLT_MANT_DIG-1),  \
 			 (LDBL_MANT_DIG-1), (DBL_MANT_DIG-1), (FLT_MANT_DIG-1))
 #define MIN_EXP CHOOSE ((LDBL_MIN_EXP-1), (DBL_MIN_EXP-1), (FLT_MIN_EXP-1),	\
diff --git a/math/test-double.h b/math/test-double.h
index 3f2c008..0038acf 100644
--- a/math/test-double.h
+++ b/math/test-double.h
@@ -22,3 +22,4 @@
 #define PRINTF_XEXPR "a"
 #define PRINTF_NEXPR "f"
 #define TEST_DOUBLE 1
+#define BUILD_COMPLEX(real, imag) (CMPLX ((real), (imag)))
diff --git a/math/test-float.h b/math/test-float.h
index 7b00cb1..8bdba55 100644
--- a/math/test-float.h
+++ b/math/test-float.h
@@ -22,3 +22,4 @@
 #define PRINTF_XEXPR "a"
 #define PRINTF_NEXPR "f"
 #define TEST_FLOAT 1
+#define BUILD_COMPLEX(real, imag) (CMPLXF ((real), (imag)))
diff --git a/math/test-ldouble.h b/math/test-ldouble.h
index e42b2bd..4f0858c 100644
--- a/math/test-ldouble.h
+++ b/math/test-ldouble.h
@@ -22,3 +22,4 @@
 #define PRINTF_XEXPR "La"
 #define PRINTF_NEXPR "Lf"
 #define TEST_LDOUBLE 1
+#define BUILD_COMPLEX(real, imag) (CMPLXL ((real), (imag)))

-- 
Joseph S. Myers
joseph@codesourcery.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]