diff options
author | Szabolcs Nagy <nsz@port70.net> | 2018-11-29 22:09:53 +0000 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2019-04-17 13:03:52 -0400 |
commit | 2d72b58070bc43a727b580a46746e87215a60a33 (patch) | |
tree | e890c9ae3fa3b496e321dcadfec38f3bf8cef959 /src/internal/complex_impl.h | |
parent | e980ca7a571465e8a4c887a199491c2cd8d0c0ee (diff) | |
download | musl-2d72b58070bc43a727b580a46746e87215a60a33.tar.gz |
math: move complex math out of libm.h
This makes it easier to build musl math code with a compiler that
does not support complex types (tcc) and in general more sensible
factorization of the internal headers.
Diffstat (limited to 'src/internal/complex_impl.h')
-rw-r--r-- | src/internal/complex_impl.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/internal/complex_impl.h b/src/internal/complex_impl.h new file mode 100644 index 00000000..51fb298a --- /dev/null +++ b/src/internal/complex_impl.h @@ -0,0 +1,22 @@ +#ifndef _COMPLEX_IMPL_H +#define _COMPLEX_IMPL_H + +#include <complex.h> +#include "libm.h" + +#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) + +hidden double complex __ldexp_cexp(double complex,int); +hidden float complex __ldexp_cexpf(float complex,int); + +#endif |