From a414e8374dfe32f5efd35a49592698f89878de1f Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Wed, 17 Dec 2014 16:08:50 -0500 Subject: [PATCH] provide CMPLX macros in implementation-internal libm.h this avoids assuming the presence of C11 macro definitions in the public complex.h, which need changes potentially incompatible with the way these macros are being used internally. --- src/internal/libm.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/internal/libm.h b/src/internal/libm.h index ebcd7849..88a7eb47 100644 --- a/src/internal/libm.h +++ b/src/internal/libm.h @@ -128,6 +128,18 @@ do { \ (d) = __u.f; \ } while (0) +#undef __CMPLX +#undef CMPLX +#undef CMPLXF +#undef CMPLXL + +#define __CMPLX(x, y, t) \ + ((union { _Complex t __z; t __xy[2]; }){.__xy = {(x),(y)}}.__z) + +#define CMPLX(x, y) __CMPLX(x, y, double) +#define CMPLXF(x, y) __CMPLX(x, y, float) +#define CMPLXL(x, y) __CMPLX(x, y, long double) + /* fdlibm kernel functions */ int __rem_pio2_large(double*,double*,int,int,int); -- 2.25.1