This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Use C11 CMPLX* macros in libm tests [committed]
- From: Joseph Myers <joseph at codesourcery dot com>
- To: <libc-alpha at sourceware dot org>
- Date: Wed, 28 Oct 2015 21:57:48 +0000
- Subject: Use C11 CMPLX* macros in libm tests [committed]
- Authentication-results: sourceware.org; auth=none
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