1*c9945492SAndroid Build Coastguard Worker #ifndef _COMPLEX_H 2*c9945492SAndroid Build Coastguard Worker #define _COMPLEX_H 3*c9945492SAndroid Build Coastguard Worker 4*c9945492SAndroid Build Coastguard Worker #ifdef __cplusplus 5*c9945492SAndroid Build Coastguard Worker extern "C" { 6*c9945492SAndroid Build Coastguard Worker #endif 7*c9945492SAndroid Build Coastguard Worker 8*c9945492SAndroid Build Coastguard Worker #define complex _Complex 9*c9945492SAndroid Build Coastguard Worker #ifdef __GNUC__ 10*c9945492SAndroid Build Coastguard Worker #define _Complex_I (__extension__ (0.0f+1.0fi)) 11*c9945492SAndroid Build Coastguard Worker #else 12*c9945492SAndroid Build Coastguard Worker #define _Complex_I (0.0f+1.0fi) 13*c9945492SAndroid Build Coastguard Worker #endif 14*c9945492SAndroid Build Coastguard Worker #define I _Complex_I 15*c9945492SAndroid Build Coastguard Worker 16*c9945492SAndroid Build Coastguard Worker double complex cacos(double complex); 17*c9945492SAndroid Build Coastguard Worker float complex cacosf(float complex); 18*c9945492SAndroid Build Coastguard Worker long double complex cacosl(long double complex); 19*c9945492SAndroid Build Coastguard Worker 20*c9945492SAndroid Build Coastguard Worker double complex casin(double complex); 21*c9945492SAndroid Build Coastguard Worker float complex casinf(float complex); 22*c9945492SAndroid Build Coastguard Worker long double complex casinl(long double complex); 23*c9945492SAndroid Build Coastguard Worker 24*c9945492SAndroid Build Coastguard Worker double complex catan(double complex); 25*c9945492SAndroid Build Coastguard Worker float complex catanf(float complex); 26*c9945492SAndroid Build Coastguard Worker long double complex catanl(long double complex); 27*c9945492SAndroid Build Coastguard Worker 28*c9945492SAndroid Build Coastguard Worker double complex ccos(double complex); 29*c9945492SAndroid Build Coastguard Worker float complex ccosf(float complex); 30*c9945492SAndroid Build Coastguard Worker long double complex ccosl(long double complex); 31*c9945492SAndroid Build Coastguard Worker 32*c9945492SAndroid Build Coastguard Worker double complex csin(double complex); 33*c9945492SAndroid Build Coastguard Worker float complex csinf(float complex); 34*c9945492SAndroid Build Coastguard Worker long double complex csinl(long double complex); 35*c9945492SAndroid Build Coastguard Worker 36*c9945492SAndroid Build Coastguard Worker double complex ctan(double complex); 37*c9945492SAndroid Build Coastguard Worker float complex ctanf(float complex); 38*c9945492SAndroid Build Coastguard Worker long double complex ctanl(long double complex); 39*c9945492SAndroid Build Coastguard Worker 40*c9945492SAndroid Build Coastguard Worker double complex cacosh(double complex); 41*c9945492SAndroid Build Coastguard Worker float complex cacoshf(float complex); 42*c9945492SAndroid Build Coastguard Worker long double complex cacoshl(long double complex); 43*c9945492SAndroid Build Coastguard Worker 44*c9945492SAndroid Build Coastguard Worker double complex casinh(double complex); 45*c9945492SAndroid Build Coastguard Worker float complex casinhf(float complex); 46*c9945492SAndroid Build Coastguard Worker long double complex casinhl(long double complex); 47*c9945492SAndroid Build Coastguard Worker 48*c9945492SAndroid Build Coastguard Worker double complex catanh(double complex); 49*c9945492SAndroid Build Coastguard Worker float complex catanhf(float complex); 50*c9945492SAndroid Build Coastguard Worker long double complex catanhl(long double complex); 51*c9945492SAndroid Build Coastguard Worker 52*c9945492SAndroid Build Coastguard Worker double complex ccosh(double complex); 53*c9945492SAndroid Build Coastguard Worker float complex ccoshf(float complex); 54*c9945492SAndroid Build Coastguard Worker long double complex ccoshl(long double complex); 55*c9945492SAndroid Build Coastguard Worker 56*c9945492SAndroid Build Coastguard Worker double complex csinh(double complex); 57*c9945492SAndroid Build Coastguard Worker float complex csinhf(float complex); 58*c9945492SAndroid Build Coastguard Worker long double complex csinhl(long double complex); 59*c9945492SAndroid Build Coastguard Worker 60*c9945492SAndroid Build Coastguard Worker double complex ctanh(double complex); 61*c9945492SAndroid Build Coastguard Worker float complex ctanhf(float complex); 62*c9945492SAndroid Build Coastguard Worker long double complex ctanhl(long double complex); 63*c9945492SAndroid Build Coastguard Worker 64*c9945492SAndroid Build Coastguard Worker double complex cexp(double complex); 65*c9945492SAndroid Build Coastguard Worker float complex cexpf(float complex); 66*c9945492SAndroid Build Coastguard Worker long double complex cexpl(long double complex); 67*c9945492SAndroid Build Coastguard Worker 68*c9945492SAndroid Build Coastguard Worker double complex clog(double complex); 69*c9945492SAndroid Build Coastguard Worker float complex clogf(float complex); 70*c9945492SAndroid Build Coastguard Worker long double complex clogl(long double complex); 71*c9945492SAndroid Build Coastguard Worker 72*c9945492SAndroid Build Coastguard Worker double cabs(double complex); 73*c9945492SAndroid Build Coastguard Worker float cabsf(float complex); 74*c9945492SAndroid Build Coastguard Worker long double cabsl(long double complex); 75*c9945492SAndroid Build Coastguard Worker 76*c9945492SAndroid Build Coastguard Worker double complex cpow(double complex, double complex); 77*c9945492SAndroid Build Coastguard Worker float complex cpowf(float complex, float complex); 78*c9945492SAndroid Build Coastguard Worker long double complex cpowl(long double complex, long double complex); 79*c9945492SAndroid Build Coastguard Worker 80*c9945492SAndroid Build Coastguard Worker double complex csqrt(double complex); 81*c9945492SAndroid Build Coastguard Worker float complex csqrtf(float complex); 82*c9945492SAndroid Build Coastguard Worker long double complex csqrtl(long double complex); 83*c9945492SAndroid Build Coastguard Worker 84*c9945492SAndroid Build Coastguard Worker double carg(double complex); 85*c9945492SAndroid Build Coastguard Worker float cargf(float complex); 86*c9945492SAndroid Build Coastguard Worker long double cargl(long double complex); 87*c9945492SAndroid Build Coastguard Worker 88*c9945492SAndroid Build Coastguard Worker double cimag(double complex); 89*c9945492SAndroid Build Coastguard Worker float cimagf(float complex); 90*c9945492SAndroid Build Coastguard Worker long double cimagl(long double complex); 91*c9945492SAndroid Build Coastguard Worker 92*c9945492SAndroid Build Coastguard Worker double complex conj(double complex); 93*c9945492SAndroid Build Coastguard Worker float complex conjf(float complex); 94*c9945492SAndroid Build Coastguard Worker long double complex conjl(long double complex); 95*c9945492SAndroid Build Coastguard Worker 96*c9945492SAndroid Build Coastguard Worker double complex cproj(double complex); 97*c9945492SAndroid Build Coastguard Worker float complex cprojf(float complex); 98*c9945492SAndroid Build Coastguard Worker long double complex cprojl(long double complex); 99*c9945492SAndroid Build Coastguard Worker 100*c9945492SAndroid Build Coastguard Worker double creal(double complex); 101*c9945492SAndroid Build Coastguard Worker float crealf(float complex); 102*c9945492SAndroid Build Coastguard Worker long double creall(long double complex); 103*c9945492SAndroid Build Coastguard Worker 104*c9945492SAndroid Build Coastguard Worker #ifndef __cplusplus 105*c9945492SAndroid Build Coastguard Worker #define __CIMAG(x, t) \ 106*c9945492SAndroid Build Coastguard Worker (+(union { _Complex t __z; t __xy[2]; }){(_Complex t)(x)}.__xy[1]) 107*c9945492SAndroid Build Coastguard Worker 108*c9945492SAndroid Build Coastguard Worker #define creal(x) ((double)(x)) 109*c9945492SAndroid Build Coastguard Worker #define crealf(x) ((float)(x)) 110*c9945492SAndroid Build Coastguard Worker #define creall(x) ((long double)(x)) 111*c9945492SAndroid Build Coastguard Worker 112*c9945492SAndroid Build Coastguard Worker #define cimag(x) __CIMAG(x, double) 113*c9945492SAndroid Build Coastguard Worker #define cimagf(x) __CIMAG(x, float) 114*c9945492SAndroid Build Coastguard Worker #define cimagl(x) __CIMAG(x, long double) 115*c9945492SAndroid Build Coastguard Worker #endif 116*c9945492SAndroid Build Coastguard Worker 117*c9945492SAndroid Build Coastguard Worker #if __STDC_VERSION__ >= 201112L 118*c9945492SAndroid Build Coastguard Worker #if defined(_Imaginary_I) 119*c9945492SAndroid Build Coastguard Worker #define __CMPLX(x, y, t) ((t)(x) + _Imaginary_I*(t)(y)) 120*c9945492SAndroid Build Coastguard Worker #elif defined(__clang__) 121*c9945492SAndroid Build Coastguard Worker #define __CMPLX(x, y, t) (+(_Complex t){ (t)(x), (t)(y) }) 122*c9945492SAndroid Build Coastguard Worker #else 123*c9945492SAndroid Build Coastguard Worker #define __CMPLX(x, y, t) (__builtin_complex((t)(x), (t)(y))) 124*c9945492SAndroid Build Coastguard Worker #endif 125*c9945492SAndroid Build Coastguard Worker #define CMPLX(x, y) __CMPLX(x, y, double) 126*c9945492SAndroid Build Coastguard Worker #define CMPLXF(x, y) __CMPLX(x, y, float) 127*c9945492SAndroid Build Coastguard Worker #define CMPLXL(x, y) __CMPLX(x, y, long double) 128*c9945492SAndroid Build Coastguard Worker #endif 129*c9945492SAndroid Build Coastguard Worker 130*c9945492SAndroid Build Coastguard Worker #ifdef __cplusplus 131*c9945492SAndroid Build Coastguard Worker } 132*c9945492SAndroid Build Coastguard Worker #endif 133*c9945492SAndroid Build Coastguard Worker #endif 134