xref: /aosp_15_r20/external/musl/include/complex.h (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
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