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