mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-28 00:21:52 +03:00
Use C11 CMPLX* macros in libm tests.
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. * 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.
This commit is contained in:
@ -1,5 +1,10 @@
|
|||||||
2015-10-28 Joseph Myers <joseph@codesourcery.com>
|
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.
|
||||||
|
|
||||||
* math/libm-test.inc (min_subnorm_value): Use LDBL_TRUE_MIN,
|
* math/libm-test.inc (min_subnorm_value): Use LDBL_TRUE_MIN,
|
||||||
DBL_TRUE_MIN and FLT_TRUE_MIN instead of __LDBL_DENORM_MIN__,
|
DBL_TRUE_MIN and FLT_TRUE_MIN instead of __LDBL_DENORM_MIN__,
|
||||||
__DBL_DENORM_MIN__ and __FLT_DENORM_MIN__.
|
__DBL_DENORM_MIN__ and __FLT_DENORM_MIN__.
|
||||||
|
@ -328,12 +328,6 @@ static FLOAT prev_max_error, prev_real_max_error, prev_imag_max_error;
|
|||||||
|
|
||||||
static FLOAT max_valid_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), \
|
#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))
|
(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), \
|
#define MIN_EXP CHOOSE ((LDBL_MIN_EXP-1), (DBL_MIN_EXP-1), (FLT_MIN_EXP-1), \
|
||||||
|
@ -22,3 +22,4 @@
|
|||||||
#define PRINTF_XEXPR "a"
|
#define PRINTF_XEXPR "a"
|
||||||
#define PRINTF_NEXPR "f"
|
#define PRINTF_NEXPR "f"
|
||||||
#define TEST_DOUBLE 1
|
#define TEST_DOUBLE 1
|
||||||
|
#define BUILD_COMPLEX(real, imag) (CMPLX ((real), (imag)))
|
||||||
|
@ -22,3 +22,4 @@
|
|||||||
#define PRINTF_XEXPR "a"
|
#define PRINTF_XEXPR "a"
|
||||||
#define PRINTF_NEXPR "f"
|
#define PRINTF_NEXPR "f"
|
||||||
#define TEST_FLOAT 1
|
#define TEST_FLOAT 1
|
||||||
|
#define BUILD_COMPLEX(real, imag) (CMPLXF ((real), (imag)))
|
||||||
|
@ -22,3 +22,4 @@
|
|||||||
#define PRINTF_XEXPR "La"
|
#define PRINTF_XEXPR "La"
|
||||||
#define PRINTF_NEXPR "Lf"
|
#define PRINTF_NEXPR "Lf"
|
||||||
#define TEST_LDOUBLE 1
|
#define TEST_LDOUBLE 1
|
||||||
|
#define BUILD_COMPLEX(real, imag) (CMPLXL ((real), (imag)))
|
||||||
|
Reference in New Issue
Block a user