xref: /aosp_15_r20/external/musl/include/tgmath.h (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker #ifndef _TGMATH_H
2*c9945492SAndroid Build Coastguard Worker #define _TGMATH_H
3*c9945492SAndroid Build Coastguard Worker 
4*c9945492SAndroid Build Coastguard Worker /*
5*c9945492SAndroid Build Coastguard Worker the return types are only correct with gcc (__GNUC__)
6*c9945492SAndroid Build Coastguard Worker otherwise they are long double or long double complex
7*c9945492SAndroid Build Coastguard Worker 
8*c9945492SAndroid Build Coastguard Worker the long double version of a function is never chosen when
9*c9945492SAndroid Build Coastguard Worker sizeof(double) == sizeof(long double)
10*c9945492SAndroid Build Coastguard Worker (but the return type is set correctly with gcc)
11*c9945492SAndroid Build Coastguard Worker */
12*c9945492SAndroid Build Coastguard Worker 
13*c9945492SAndroid Build Coastguard Worker #include <math.h>
14*c9945492SAndroid Build Coastguard Worker #include <complex.h>
15*c9945492SAndroid Build Coastguard Worker 
16*c9945492SAndroid Build Coastguard Worker #define __IS_FP(x) (sizeof((x)+1ULL) == sizeof((x)+1.0f))
17*c9945492SAndroid Build Coastguard Worker #define __IS_CX(x) (__IS_FP(x) && sizeof(x) == sizeof((x)+I))
18*c9945492SAndroid Build Coastguard Worker #define __IS_REAL(x) (__IS_FP(x) && 2*sizeof(x) == sizeof((x)+I))
19*c9945492SAndroid Build Coastguard Worker 
20*c9945492SAndroid Build Coastguard Worker #define __FLT(x) (__IS_REAL(x) && sizeof(x) == sizeof(float))
21*c9945492SAndroid Build Coastguard Worker #define __LDBL(x) (__IS_REAL(x) && sizeof(x) == sizeof(long double) && sizeof(long double) != sizeof(double))
22*c9945492SAndroid Build Coastguard Worker 
23*c9945492SAndroid Build Coastguard Worker #define __FLTCX(x) (__IS_CX(x) && sizeof(x) == sizeof(float complex))
24*c9945492SAndroid Build Coastguard Worker #define __DBLCX(x) (__IS_CX(x) && sizeof(x) == sizeof(double complex))
25*c9945492SAndroid Build Coastguard Worker #define __LDBLCX(x) (__IS_CX(x) && sizeof(x) == sizeof(long double complex) && sizeof(long double) != sizeof(double))
26*c9945492SAndroid Build Coastguard Worker 
27*c9945492SAndroid Build Coastguard Worker /* return type */
28*c9945492SAndroid Build Coastguard Worker 
29*c9945492SAndroid Build Coastguard Worker #ifdef __GNUC__
30*c9945492SAndroid Build Coastguard Worker /*
31*c9945492SAndroid Build Coastguard Worker the result must be casted to the right type
32*c9945492SAndroid Build Coastguard Worker (otherwise the result type is determined by the conversion
33*c9945492SAndroid Build Coastguard Worker rules applied to all the function return types so it is long
34*c9945492SAndroid Build Coastguard Worker double or long double complex except for integral functions)
35*c9945492SAndroid Build Coastguard Worker 
36*c9945492SAndroid Build Coastguard Worker this cannot be done in c99, so the typeof gcc extension is
37*c9945492SAndroid Build Coastguard Worker used and that the type of ?: depends on wether an operand is
38*c9945492SAndroid Build Coastguard Worker a null pointer constant or not
39*c9945492SAndroid Build Coastguard Worker (in c11 _Generic can be used)
40*c9945492SAndroid Build Coastguard Worker 
41*c9945492SAndroid Build Coastguard Worker the c arguments below must be integer constant expressions
42*c9945492SAndroid Build Coastguard Worker so they can be in null pointer constants
43*c9945492SAndroid Build Coastguard Worker (__IS_FP above was carefully chosen this way)
44*c9945492SAndroid Build Coastguard Worker */
45*c9945492SAndroid Build Coastguard Worker /* if c then t else void */
46*c9945492SAndroid Build Coastguard Worker #define __type1(c,t) __typeof__(*(0?(t*)0:(void*)!(c)))
47*c9945492SAndroid Build Coastguard Worker /* if c then t1 else t2 */
48*c9945492SAndroid Build Coastguard Worker #define __type2(c,t1,t2) __typeof__(*(0?(__type1(c,t1)*)0:(__type1(!(c),t2)*)0))
49*c9945492SAndroid Build Coastguard Worker /* cast to double when x is integral, otherwise use typeof(x) */
50*c9945492SAndroid Build Coastguard Worker #define __RETCAST(x) ( \
51*c9945492SAndroid Build Coastguard Worker 	__type2(__IS_FP(x), __typeof__(x), double))
52*c9945492SAndroid Build Coastguard Worker /* 2 args case, should work for complex types (cpow) */
53*c9945492SAndroid Build Coastguard Worker #define __RETCAST_2(x, y) ( \
54*c9945492SAndroid Build Coastguard Worker 	__type2(__IS_FP(x) && __IS_FP(y), \
55*c9945492SAndroid Build Coastguard Worker 		__typeof__((x)+(y)), \
56*c9945492SAndroid Build Coastguard Worker 		__typeof__((x)+(y)+1.0)))
57*c9945492SAndroid Build Coastguard Worker /* 3 args case (fma only) */
58*c9945492SAndroid Build Coastguard Worker #define __RETCAST_3(x, y, z) ( \
59*c9945492SAndroid Build Coastguard Worker 	__type2(__IS_FP(x) && __IS_FP(y) && __IS_FP(z), \
60*c9945492SAndroid Build Coastguard Worker 		__typeof__((x)+(y)+(z)), \
61*c9945492SAndroid Build Coastguard Worker 		__typeof__((x)+(y)+(z)+1.0)))
62*c9945492SAndroid Build Coastguard Worker /* drop complex from the type of x */
63*c9945492SAndroid Build Coastguard Worker /* TODO: wrong when sizeof(long double)==sizeof(double) */
64*c9945492SAndroid Build Coastguard Worker #define __RETCAST_REAL(x) (  \
65*c9945492SAndroid Build Coastguard Worker 	__type2(__IS_FP(x) && sizeof((x)+I) == sizeof(float complex), float, \
66*c9945492SAndroid Build Coastguard Worker 	__type2(sizeof((x)+1.0+I) == sizeof(double complex), double, \
67*c9945492SAndroid Build Coastguard Worker 		long double)))
68*c9945492SAndroid Build Coastguard Worker /* add complex to the type of x */
69*c9945492SAndroid Build Coastguard Worker #define __RETCAST_CX(x) (__typeof__(__RETCAST(x)0+I))
70*c9945492SAndroid Build Coastguard Worker #else
71*c9945492SAndroid Build Coastguard Worker #define __RETCAST(x)
72*c9945492SAndroid Build Coastguard Worker #define __RETCAST_2(x, y)
73*c9945492SAndroid Build Coastguard Worker #define __RETCAST_3(x, y, z)
74*c9945492SAndroid Build Coastguard Worker #define __RETCAST_REAL(x)
75*c9945492SAndroid Build Coastguard Worker #define __RETCAST_CX(x)
76*c9945492SAndroid Build Coastguard Worker #endif
77*c9945492SAndroid Build Coastguard Worker 
78*c9945492SAndroid Build Coastguard Worker /* function selection */
79*c9945492SAndroid Build Coastguard Worker 
80*c9945492SAndroid Build Coastguard Worker #define __tg_real_nocast(fun, x) ( \
81*c9945492SAndroid Build Coastguard Worker 	__FLT(x) ? fun ## f (x) : \
82*c9945492SAndroid Build Coastguard Worker 	__LDBL(x) ? fun ## l (x) : \
83*c9945492SAndroid Build Coastguard Worker 	fun(x) )
84*c9945492SAndroid Build Coastguard Worker 
85*c9945492SAndroid Build Coastguard Worker #define __tg_real(fun, x) (__RETCAST(x)__tg_real_nocast(fun, x))
86*c9945492SAndroid Build Coastguard Worker 
87*c9945492SAndroid Build Coastguard Worker #define __tg_real_2_1(fun, x, y) (__RETCAST(x)( \
88*c9945492SAndroid Build Coastguard Worker 	__FLT(x) ? fun ## f (x, y) : \
89*c9945492SAndroid Build Coastguard Worker 	__LDBL(x) ? fun ## l (x, y) : \
90*c9945492SAndroid Build Coastguard Worker 	fun(x, y) ))
91*c9945492SAndroid Build Coastguard Worker 
92*c9945492SAndroid Build Coastguard Worker #define __tg_real_2(fun, x, y) (__RETCAST_2(x, y)( \
93*c9945492SAndroid Build Coastguard Worker 	__FLT(x) && __FLT(y) ? fun ## f (x, y) : \
94*c9945492SAndroid Build Coastguard Worker 	__LDBL((x)+(y)) ? fun ## l (x, y) : \
95*c9945492SAndroid Build Coastguard Worker 	fun(x, y) ))
96*c9945492SAndroid Build Coastguard Worker 
97*c9945492SAndroid Build Coastguard Worker #define __tg_complex(fun, x) (__RETCAST_CX(x)( \
98*c9945492SAndroid Build Coastguard Worker 	__FLTCX((x)+I) && __IS_FP(x) ? fun ## f (x) : \
99*c9945492SAndroid Build Coastguard Worker 	__LDBLCX((x)+I) ? fun ## l (x) : \
100*c9945492SAndroid Build Coastguard Worker 	fun(x) ))
101*c9945492SAndroid Build Coastguard Worker 
102*c9945492SAndroid Build Coastguard Worker #define __tg_complex_retreal(fun, x) (__RETCAST_REAL(x)( \
103*c9945492SAndroid Build Coastguard Worker 	__FLTCX((x)+I) && __IS_FP(x) ? fun ## f (x) : \
104*c9945492SAndroid Build Coastguard Worker 	__LDBLCX((x)+I) ? fun ## l (x) : \
105*c9945492SAndroid Build Coastguard Worker 	fun(x) ))
106*c9945492SAndroid Build Coastguard Worker 
107*c9945492SAndroid Build Coastguard Worker #define __tg_real_complex(fun, x) (__RETCAST(x)( \
108*c9945492SAndroid Build Coastguard Worker 	__FLTCX(x) ? c ## fun ## f (x) : \
109*c9945492SAndroid Build Coastguard Worker 	__DBLCX(x) ? c ## fun (x) : \
110*c9945492SAndroid Build Coastguard Worker 	__LDBLCX(x) ? c ## fun ## l (x) : \
111*c9945492SAndroid Build Coastguard Worker 	__FLT(x) ? fun ## f (x) : \
112*c9945492SAndroid Build Coastguard Worker 	__LDBL(x) ? fun ## l (x) : \
113*c9945492SAndroid Build Coastguard Worker 	fun(x) ))
114*c9945492SAndroid Build Coastguard Worker 
115*c9945492SAndroid Build Coastguard Worker /* special cases */
116*c9945492SAndroid Build Coastguard Worker 
117*c9945492SAndroid Build Coastguard Worker #define __tg_real_remquo(x, y, z) (__RETCAST_2(x, y)( \
118*c9945492SAndroid Build Coastguard Worker 	__FLT(x) && __FLT(y) ? remquof(x, y, z) : \
119*c9945492SAndroid Build Coastguard Worker 	__LDBL((x)+(y)) ? remquol(x, y, z) : \
120*c9945492SAndroid Build Coastguard Worker 	remquo(x, y, z) ))
121*c9945492SAndroid Build Coastguard Worker 
122*c9945492SAndroid Build Coastguard Worker #define __tg_real_fma(x, y, z) (__RETCAST_3(x, y, z)( \
123*c9945492SAndroid Build Coastguard Worker 	__FLT(x) && __FLT(y) && __FLT(z) ? fmaf(x, y, z) : \
124*c9945492SAndroid Build Coastguard Worker 	__LDBL((x)+(y)+(z)) ? fmal(x, y, z) : \
125*c9945492SAndroid Build Coastguard Worker 	fma(x, y, z) ))
126*c9945492SAndroid Build Coastguard Worker 
127*c9945492SAndroid Build Coastguard Worker #define __tg_real_complex_pow(x, y) (__RETCAST_2(x, y)( \
128*c9945492SAndroid Build Coastguard Worker 	__FLTCX((x)+(y)) && __IS_FP(x) && __IS_FP(y) ? cpowf(x, y) : \
129*c9945492SAndroid Build Coastguard Worker 	__FLTCX((x)+(y)) ? cpow(x, y) : \
130*c9945492SAndroid Build Coastguard Worker 	__DBLCX((x)+(y)) ? cpow(x, y) : \
131*c9945492SAndroid Build Coastguard Worker 	__LDBLCX((x)+(y)) ? cpowl(x, y) : \
132*c9945492SAndroid Build Coastguard Worker 	__FLT(x) && __FLT(y) ? powf(x, y) : \
133*c9945492SAndroid Build Coastguard Worker 	__LDBL((x)+(y)) ? powl(x, y) : \
134*c9945492SAndroid Build Coastguard Worker 	pow(x, y) ))
135*c9945492SAndroid Build Coastguard Worker 
136*c9945492SAndroid Build Coastguard Worker #define __tg_real_complex_fabs(x) (__RETCAST_REAL(x)( \
137*c9945492SAndroid Build Coastguard Worker 	__FLTCX(x) ? cabsf(x) : \
138*c9945492SAndroid Build Coastguard Worker 	__DBLCX(x) ? cabs(x) : \
139*c9945492SAndroid Build Coastguard Worker 	__LDBLCX(x) ? cabsl(x) : \
140*c9945492SAndroid Build Coastguard Worker 	__FLT(x) ? fabsf(x) : \
141*c9945492SAndroid Build Coastguard Worker 	__LDBL(x) ? fabsl(x) : \
142*c9945492SAndroid Build Coastguard Worker 	fabs(x) ))
143*c9945492SAndroid Build Coastguard Worker 
144*c9945492SAndroid Build Coastguard Worker /* suppress any macros in math.h or complex.h */
145*c9945492SAndroid Build Coastguard Worker 
146*c9945492SAndroid Build Coastguard Worker #undef acos
147*c9945492SAndroid Build Coastguard Worker #undef acosh
148*c9945492SAndroid Build Coastguard Worker #undef asin
149*c9945492SAndroid Build Coastguard Worker #undef asinh
150*c9945492SAndroid Build Coastguard Worker #undef atan
151*c9945492SAndroid Build Coastguard Worker #undef atan2
152*c9945492SAndroid Build Coastguard Worker #undef atanh
153*c9945492SAndroid Build Coastguard Worker #undef carg
154*c9945492SAndroid Build Coastguard Worker #undef cbrt
155*c9945492SAndroid Build Coastguard Worker #undef ceil
156*c9945492SAndroid Build Coastguard Worker #undef cimag
157*c9945492SAndroid Build Coastguard Worker #undef conj
158*c9945492SAndroid Build Coastguard Worker #undef copysign
159*c9945492SAndroid Build Coastguard Worker #undef cos
160*c9945492SAndroid Build Coastguard Worker #undef cosh
161*c9945492SAndroid Build Coastguard Worker #undef cproj
162*c9945492SAndroid Build Coastguard Worker #undef creal
163*c9945492SAndroid Build Coastguard Worker #undef erf
164*c9945492SAndroid Build Coastguard Worker #undef erfc
165*c9945492SAndroid Build Coastguard Worker #undef exp
166*c9945492SAndroid Build Coastguard Worker #undef exp2
167*c9945492SAndroid Build Coastguard Worker #undef expm1
168*c9945492SAndroid Build Coastguard Worker #undef fabs
169*c9945492SAndroid Build Coastguard Worker #undef fdim
170*c9945492SAndroid Build Coastguard Worker #undef floor
171*c9945492SAndroid Build Coastguard Worker #undef fma
172*c9945492SAndroid Build Coastguard Worker #undef fmax
173*c9945492SAndroid Build Coastguard Worker #undef fmin
174*c9945492SAndroid Build Coastguard Worker #undef fmod
175*c9945492SAndroid Build Coastguard Worker #undef frexp
176*c9945492SAndroid Build Coastguard Worker #undef hypot
177*c9945492SAndroid Build Coastguard Worker #undef ilogb
178*c9945492SAndroid Build Coastguard Worker #undef ldexp
179*c9945492SAndroid Build Coastguard Worker #undef lgamma
180*c9945492SAndroid Build Coastguard Worker #undef llrint
181*c9945492SAndroid Build Coastguard Worker #undef llround
182*c9945492SAndroid Build Coastguard Worker #undef log
183*c9945492SAndroid Build Coastguard Worker #undef log10
184*c9945492SAndroid Build Coastguard Worker #undef log1p
185*c9945492SAndroid Build Coastguard Worker #undef log2
186*c9945492SAndroid Build Coastguard Worker #undef logb
187*c9945492SAndroid Build Coastguard Worker #undef lrint
188*c9945492SAndroid Build Coastguard Worker #undef lround
189*c9945492SAndroid Build Coastguard Worker #undef nearbyint
190*c9945492SAndroid Build Coastguard Worker #undef nextafter
191*c9945492SAndroid Build Coastguard Worker #undef nexttoward
192*c9945492SAndroid Build Coastguard Worker #undef pow
193*c9945492SAndroid Build Coastguard Worker #undef remainder
194*c9945492SAndroid Build Coastguard Worker #undef remquo
195*c9945492SAndroid Build Coastguard Worker #undef rint
196*c9945492SAndroid Build Coastguard Worker #undef round
197*c9945492SAndroid Build Coastguard Worker #undef scalbln
198*c9945492SAndroid Build Coastguard Worker #undef scalbn
199*c9945492SAndroid Build Coastguard Worker #undef sin
200*c9945492SAndroid Build Coastguard Worker #undef sinh
201*c9945492SAndroid Build Coastguard Worker #undef sqrt
202*c9945492SAndroid Build Coastguard Worker #undef tan
203*c9945492SAndroid Build Coastguard Worker #undef tanh
204*c9945492SAndroid Build Coastguard Worker #undef tgamma
205*c9945492SAndroid Build Coastguard Worker #undef trunc
206*c9945492SAndroid Build Coastguard Worker 
207*c9945492SAndroid Build Coastguard Worker /* tg functions */
208*c9945492SAndroid Build Coastguard Worker 
209*c9945492SAndroid Build Coastguard Worker #define acos(x)         __tg_real_complex(acos, (x))
210*c9945492SAndroid Build Coastguard Worker #define acosh(x)        __tg_real_complex(acosh, (x))
211*c9945492SAndroid Build Coastguard Worker #define asin(x)         __tg_real_complex(asin, (x))
212*c9945492SAndroid Build Coastguard Worker #define asinh(x)        __tg_real_complex(asinh, (x))
213*c9945492SAndroid Build Coastguard Worker #define atan(x)         __tg_real_complex(atan, (x))
214*c9945492SAndroid Build Coastguard Worker #define atan2(x,y)      __tg_real_2(atan2, (x), (y))
215*c9945492SAndroid Build Coastguard Worker #define atanh(x)        __tg_real_complex(atanh, (x))
216*c9945492SAndroid Build Coastguard Worker #define carg(x)         __tg_complex_retreal(carg, (x))
217*c9945492SAndroid Build Coastguard Worker #define cbrt(x)         __tg_real(cbrt, (x))
218*c9945492SAndroid Build Coastguard Worker #define ceil(x)         __tg_real(ceil, (x))
219*c9945492SAndroid Build Coastguard Worker #define cimag(x)        __tg_complex_retreal(cimag, (x))
220*c9945492SAndroid Build Coastguard Worker #define conj(x)         __tg_complex(conj, (x))
221*c9945492SAndroid Build Coastguard Worker #define copysign(x,y)   __tg_real_2(copysign, (x), (y))
222*c9945492SAndroid Build Coastguard Worker #define cos(x)          __tg_real_complex(cos, (x))
223*c9945492SAndroid Build Coastguard Worker #define cosh(x)         __tg_real_complex(cosh, (x))
224*c9945492SAndroid Build Coastguard Worker #define cproj(x)        __tg_complex(cproj, (x))
225*c9945492SAndroid Build Coastguard Worker #define creal(x)        __tg_complex_retreal(creal, (x))
226*c9945492SAndroid Build Coastguard Worker #define erf(x)          __tg_real(erf, (x))
227*c9945492SAndroid Build Coastguard Worker #define erfc(x)         __tg_real(erfc, (x))
228*c9945492SAndroid Build Coastguard Worker #define exp(x)          __tg_real_complex(exp, (x))
229*c9945492SAndroid Build Coastguard Worker #define exp2(x)         __tg_real(exp2, (x))
230*c9945492SAndroid Build Coastguard Worker #define expm1(x)        __tg_real(expm1, (x))
231*c9945492SAndroid Build Coastguard Worker #define fabs(x)         __tg_real_complex_fabs(x)
232*c9945492SAndroid Build Coastguard Worker #define fdim(x,y)       __tg_real_2(fdim, (x), (y))
233*c9945492SAndroid Build Coastguard Worker #define floor(x)        __tg_real(floor, (x))
234*c9945492SAndroid Build Coastguard Worker #define fma(x,y,z)      __tg_real_fma((x), (y), (z))
235*c9945492SAndroid Build Coastguard Worker #define fmax(x,y)       __tg_real_2(fmax, (x), (y))
236*c9945492SAndroid Build Coastguard Worker #define fmin(x,y)       __tg_real_2(fmin, (x), (y))
237*c9945492SAndroid Build Coastguard Worker #define fmod(x,y)       __tg_real_2(fmod, (x), (y))
238*c9945492SAndroid Build Coastguard Worker #define frexp(x,y)      __tg_real_2_1(frexp, (x), (y))
239*c9945492SAndroid Build Coastguard Worker #define hypot(x,y)      __tg_real_2(hypot, (x), (y))
240*c9945492SAndroid Build Coastguard Worker #define ilogb(x)        __tg_real_nocast(ilogb, (x))
241*c9945492SAndroid Build Coastguard Worker #define ldexp(x,y)      __tg_real_2_1(ldexp, (x), (y))
242*c9945492SAndroid Build Coastguard Worker #define lgamma(x)       __tg_real(lgamma, (x))
243*c9945492SAndroid Build Coastguard Worker #define llrint(x)       __tg_real_nocast(llrint, (x))
244*c9945492SAndroid Build Coastguard Worker #define llround(x)      __tg_real_nocast(llround, (x))
245*c9945492SAndroid Build Coastguard Worker #define log(x)          __tg_real_complex(log, (x))
246*c9945492SAndroid Build Coastguard Worker #define log10(x)        __tg_real(log10, (x))
247*c9945492SAndroid Build Coastguard Worker #define log1p(x)        __tg_real(log1p, (x))
248*c9945492SAndroid Build Coastguard Worker #define log2(x)         __tg_real(log2, (x))
249*c9945492SAndroid Build Coastguard Worker #define logb(x)         __tg_real(logb, (x))
250*c9945492SAndroid Build Coastguard Worker #define lrint(x)        __tg_real_nocast(lrint, (x))
251*c9945492SAndroid Build Coastguard Worker #define lround(x)       __tg_real_nocast(lround, (x))
252*c9945492SAndroid Build Coastguard Worker #define nearbyint(x)    __tg_real(nearbyint, (x))
253*c9945492SAndroid Build Coastguard Worker #define nextafter(x,y)  __tg_real_2(nextafter, (x), (y))
254*c9945492SAndroid Build Coastguard Worker #define nexttoward(x,y) __tg_real_2(nexttoward, (x), (y))
255*c9945492SAndroid Build Coastguard Worker #define pow(x,y)        __tg_real_complex_pow((x), (y))
256*c9945492SAndroid Build Coastguard Worker #define remainder(x,y)  __tg_real_2(remainder, (x), (y))
257*c9945492SAndroid Build Coastguard Worker #define remquo(x,y,z)   __tg_real_remquo((x), (y), (z))
258*c9945492SAndroid Build Coastguard Worker #define rint(x)         __tg_real(rint, (x))
259*c9945492SAndroid Build Coastguard Worker #define round(x)        __tg_real(round, (x))
260*c9945492SAndroid Build Coastguard Worker #define scalbln(x,y)    __tg_real_2_1(scalbln, (x), (y))
261*c9945492SAndroid Build Coastguard Worker #define scalbn(x,y)     __tg_real_2_1(scalbn, (x), (y))
262*c9945492SAndroid Build Coastguard Worker #define sin(x)          __tg_real_complex(sin, (x))
263*c9945492SAndroid Build Coastguard Worker #define sinh(x)         __tg_real_complex(sinh, (x))
264*c9945492SAndroid Build Coastguard Worker #define sqrt(x)         __tg_real_complex(sqrt, (x))
265*c9945492SAndroid Build Coastguard Worker #define tan(x)          __tg_real_complex(tan, (x))
266*c9945492SAndroid Build Coastguard Worker #define tanh(x)         __tg_real_complex(tanh, (x))
267*c9945492SAndroid Build Coastguard Worker #define tgamma(x)       __tg_real(tgamma, (x))
268*c9945492SAndroid Build Coastguard Worker #define trunc(x)        __tg_real(trunc, (x))
269*c9945492SAndroid Build Coastguard Worker 
270*c9945492SAndroid Build Coastguard Worker #endif
271