1*5eed1abaSSascha Wildner /*-
2*5eed1abaSSascha Wildner * Copyright (c) 2004 Stefan Farfeleder <stefanf@FreeBSD.org>
3*5eed1abaSSascha Wildner * All rights reserved.
4*5eed1abaSSascha Wildner *
5*5eed1abaSSascha Wildner * Redistribution and use in source and binary forms, with or without
6*5eed1abaSSascha Wildner * modification, are permitted provided that the following conditions
7*5eed1abaSSascha Wildner * are met:
8*5eed1abaSSascha Wildner * 1. Redistributions of source code must retain the above copyright
9*5eed1abaSSascha Wildner * notice, this list of conditions and the following disclaimer.
10*5eed1abaSSascha Wildner * 2. Redistributions in binary form must reproduce the above copyright
11*5eed1abaSSascha Wildner * notice, this list of conditions and the following disclaimer in the
12*5eed1abaSSascha Wildner * documentation and/or other materials provided with the distribution.
13*5eed1abaSSascha Wildner *
14*5eed1abaSSascha Wildner * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15*5eed1abaSSascha Wildner * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16*5eed1abaSSascha Wildner * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17*5eed1abaSSascha Wildner * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18*5eed1abaSSascha Wildner * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19*5eed1abaSSascha Wildner * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20*5eed1abaSSascha Wildner * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21*5eed1abaSSascha Wildner * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22*5eed1abaSSascha Wildner * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23*5eed1abaSSascha Wildner * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24*5eed1abaSSascha Wildner * SUCH DAMAGE.
25*5eed1abaSSascha Wildner *
26*5eed1abaSSascha Wildner * $FreeBSD: src/tools/regression/include/tgmath/tgmath.c,v 1.3 2012/11/17 01:53:49 svnexp Exp $
27*5eed1abaSSascha Wildner */
28*5eed1abaSSascha Wildner
29*5eed1abaSSascha Wildner #include <sys/cdefs.h>
30*5eed1abaSSascha Wildner /* All of our functions have side effects, __pure2 causes functions calls to
31*5eed1abaSSascha Wildner * be optimised away. Stop that. */
32*5eed1abaSSascha Wildner #undef __pure2
33*5eed1abaSSascha Wildner #define __pure2
34*5eed1abaSSascha Wildner
35*5eed1abaSSascha Wildner #include <assert.h>
36*5eed1abaSSascha Wildner #include <stdio.h>
37*5eed1abaSSascha Wildner #include <tgmath.h>
38*5eed1abaSSascha Wildner
39*5eed1abaSSascha Wildner int n_float, n_double, n_long_double;
40*5eed1abaSSascha Wildner int n_float_complex, n_double_complex, n_long_double_complex;
41*5eed1abaSSascha Wildner
42*5eed1abaSSascha Wildner int currtest = 0;
43*5eed1abaSSascha Wildner
44*5eed1abaSSascha Wildner #define TGMACRO(FNC) \
45*5eed1abaSSascha Wildner TGMACRO_REAL(FNC) \
46*5eed1abaSSascha Wildner TGMACRO_COMPLEX(c ## FNC)
47*5eed1abaSSascha Wildner
48*5eed1abaSSascha Wildner #define TGMACRO_REAL(FNC) \
49*5eed1abaSSascha Wildner float (FNC ## f)(float x) { n_float++; } \
50*5eed1abaSSascha Wildner double (FNC)(double x) { n_double++; } \
51*5eed1abaSSascha Wildner long double (FNC ## l)(long double x) { n_long_double++; }
52*5eed1abaSSascha Wildner
53*5eed1abaSSascha Wildner #define TGMACRO_REAL_REAL(FNC) \
54*5eed1abaSSascha Wildner float (FNC ## f)(float x, float y) { n_float++; } \
55*5eed1abaSSascha Wildner double (FNC)(double x, double y) { n_double++; } \
56*5eed1abaSSascha Wildner long double \
57*5eed1abaSSascha Wildner (FNC ## l)(long double x, long double y) { n_long_double++; }
58*5eed1abaSSascha Wildner
59*5eed1abaSSascha Wildner #define TGMACRO_REAL_FIXED_RET(FNC, TYPE) \
60*5eed1abaSSascha Wildner TYPE (FNC ## f)(float x) { n_float++; } \
61*5eed1abaSSascha Wildner TYPE (FNC)(double x) { n_double++; } \
62*5eed1abaSSascha Wildner TYPE (FNC ## l)(long double x) { n_long_double++; }
63*5eed1abaSSascha Wildner
64*5eed1abaSSascha Wildner #define TGMACRO_COMPLEX(FNC) \
65*5eed1abaSSascha Wildner float complex (FNC ## f)(float complex x) { n_float_complex++; }\
66*5eed1abaSSascha Wildner double complex (FNC)(double complex x) { n_double_complex++; } \
67*5eed1abaSSascha Wildner long double complex \
68*5eed1abaSSascha Wildner (FNC ## l)(long double complex x) { n_long_double_complex++; }
69*5eed1abaSSascha Wildner
70*5eed1abaSSascha Wildner #define TGMACRO_COMPLEX_REAL_RET(FNC) \
71*5eed1abaSSascha Wildner float (FNC ## f)(float complex x) { n_float_complex++; } \
72*5eed1abaSSascha Wildner double (FNC)(double complex x) { n_double_complex++; } \
73*5eed1abaSSascha Wildner long double \
74*5eed1abaSSascha Wildner (FNC ## l)(long double complex x) { n_long_double_complex++; }
75*5eed1abaSSascha Wildner
76*5eed1abaSSascha Wildner
77*5eed1abaSSascha Wildner /* 7.22#4 */
78*5eed1abaSSascha Wildner TGMACRO(acos)
TGMACRO(asin)79*5eed1abaSSascha Wildner TGMACRO(asin)
80*5eed1abaSSascha Wildner TGMACRO(atan)
81*5eed1abaSSascha Wildner TGMACRO(acosh)
82*5eed1abaSSascha Wildner TGMACRO(asinh)
83*5eed1abaSSascha Wildner TGMACRO(atanh)
84*5eed1abaSSascha Wildner TGMACRO(cos)
85*5eed1abaSSascha Wildner TGMACRO(sin)
86*5eed1abaSSascha Wildner TGMACRO(tan)
87*5eed1abaSSascha Wildner TGMACRO(cosh)
88*5eed1abaSSascha Wildner TGMACRO(sinh)
89*5eed1abaSSascha Wildner TGMACRO(tanh)
90*5eed1abaSSascha Wildner TGMACRO(exp)
91*5eed1abaSSascha Wildner TGMACRO(log)
92*5eed1abaSSascha Wildner TGMACRO_REAL_REAL(pow)
93*5eed1abaSSascha Wildner float complex (cpowf)(float complex x, float complex y) { n_float_complex++; }
complex(cpow)94*5eed1abaSSascha Wildner double complex
95*5eed1abaSSascha Wildner (cpow)(double complex x, double complex y) { n_double_complex++; }
complex(cpowl)96*5eed1abaSSascha Wildner long double complex
97*5eed1abaSSascha Wildner (cpowl)(long double complex x, long double complex y)
98*5eed1abaSSascha Wildner { n_long_double_complex++; }
99*5eed1abaSSascha Wildner TGMACRO(sqrt)
TGMACRO_REAL(fabs)100*5eed1abaSSascha Wildner TGMACRO_REAL(fabs)
101*5eed1abaSSascha Wildner TGMACRO_COMPLEX_REAL_RET(cabs)
102*5eed1abaSSascha Wildner
103*5eed1abaSSascha Wildner /* 7.22#5 */
104*5eed1abaSSascha Wildner TGMACRO_REAL_REAL(atan2)
105*5eed1abaSSascha Wildner TGMACRO_REAL(cbrt)
106*5eed1abaSSascha Wildner TGMACRO_REAL(ceil)
107*5eed1abaSSascha Wildner TGMACRO_REAL_REAL(copysign)
108*5eed1abaSSascha Wildner TGMACRO_REAL(erf)
109*5eed1abaSSascha Wildner TGMACRO_REAL(erfc)
110*5eed1abaSSascha Wildner TGMACRO_REAL(exp2)
111*5eed1abaSSascha Wildner TGMACRO_REAL(expm1)
112*5eed1abaSSascha Wildner TGMACRO_REAL_REAL(fdim)
113*5eed1abaSSascha Wildner TGMACRO_REAL(floor)
114*5eed1abaSSascha Wildner float (fmaf)(float x, float y, float z) { n_float++; }
115*5eed1abaSSascha Wildner double (fma)(double x, double y, double z) { n_double++; }
116*5eed1abaSSascha Wildner long double
117*5eed1abaSSascha Wildner (fmal)(long double x, long double y, long double z) { n_long_double++; }
118*5eed1abaSSascha Wildner TGMACRO_REAL_REAL(fmax)
TGMACRO_REAL_REAL(fmin)119*5eed1abaSSascha Wildner TGMACRO_REAL_REAL(fmin)
120*5eed1abaSSascha Wildner TGMACRO_REAL_REAL(fmod)
121*5eed1abaSSascha Wildner float (frexpf)(float x, int *e) { n_float++; }
122*5eed1abaSSascha Wildner double (frexp)(double x, int *e) { n_double++; }
123*5eed1abaSSascha Wildner long double (frexpl)(long double x, int *e) { n_long_double++; }
124*5eed1abaSSascha Wildner TGMACRO_REAL_REAL(hypot)
TGMACRO_REAL_FIXED_RET(ilogb,int)125*5eed1abaSSascha Wildner TGMACRO_REAL_FIXED_RET(ilogb, int)
126*5eed1abaSSascha Wildner float (ldexpf)(float x, int e) { n_float++; }
127*5eed1abaSSascha Wildner double (ldexp)(double x, int e) { n_double++; }
128*5eed1abaSSascha Wildner long double (ldexpl)(long double x, int e) { n_long_double++; }
129*5eed1abaSSascha Wildner TGMACRO_REAL(lgamma)
TGMACRO_REAL_FIXED_RET(llrint,long long)130*5eed1abaSSascha Wildner TGMACRO_REAL_FIXED_RET(llrint, long long)
131*5eed1abaSSascha Wildner TGMACRO_REAL_FIXED_RET(llround, long long)
132*5eed1abaSSascha Wildner TGMACRO_REAL(log10)
133*5eed1abaSSascha Wildner TGMACRO_REAL(log1p)
134*5eed1abaSSascha Wildner TGMACRO_REAL(log2)
135*5eed1abaSSascha Wildner TGMACRO_REAL(logb)
136*5eed1abaSSascha Wildner TGMACRO_REAL_FIXED_RET(lrint, long)
137*5eed1abaSSascha Wildner TGMACRO_REAL_FIXED_RET(lround, long)
138*5eed1abaSSascha Wildner TGMACRO_REAL(nearbyint)
139*5eed1abaSSascha Wildner TGMACRO_REAL_REAL(nextafter)
140*5eed1abaSSascha Wildner float (nexttowardf)(float x, long double y) { n_float++; }
141*5eed1abaSSascha Wildner double (nexttoward)(double x, long double y) { n_double++; }
142*5eed1abaSSascha Wildner long double (nexttowardl)(long double x, long double y) { n_long_double++; }
TGMACRO_REAL_REAL(remainder)143*5eed1abaSSascha Wildner TGMACRO_REAL_REAL(remainder)
144*5eed1abaSSascha Wildner float (remquof)(float x, float y, int *q) { n_float++; }
145*5eed1abaSSascha Wildner double (remquo)(double x, double y, int *q) { n_double++; }
146*5eed1abaSSascha Wildner long double (remquol)(long double x, long double y, int *q) { n_long_double++; }
147*5eed1abaSSascha Wildner TGMACRO_REAL(rint)
TGMACRO_REAL(round)148*5eed1abaSSascha Wildner TGMACRO_REAL(round)
149*5eed1abaSSascha Wildner float (scalbnf)(float x, int n) { n_float++; }
150*5eed1abaSSascha Wildner double (scalbn)(double x, int n) { n_double++; }
151*5eed1abaSSascha Wildner long double (scalbnl)(long double x, int n) { n_long_double++; }
152*5eed1abaSSascha Wildner float (scalblnf)(float x, long n) { n_float++; }
153*5eed1abaSSascha Wildner double (scalbln)(double x, long n) { n_double++; }
154*5eed1abaSSascha Wildner long double (scalblnl)(long double x, long n) { n_long_double++; }
155*5eed1abaSSascha Wildner TGMACRO_REAL(tgamma)
156*5eed1abaSSascha Wildner TGMACRO_REAL(trunc)
157*5eed1abaSSascha Wildner
158*5eed1abaSSascha Wildner /* 7.22#6 */
159*5eed1abaSSascha Wildner TGMACRO_COMPLEX_REAL_RET(carg)
160*5eed1abaSSascha Wildner TGMACRO_COMPLEX_REAL_RET(cimag)
161*5eed1abaSSascha Wildner TGMACRO_COMPLEX(conj)
162*5eed1abaSSascha Wildner TGMACRO_COMPLEX(cproj)
163*5eed1abaSSascha Wildner TGMACRO_COMPLEX_REAL_RET(creal)
164*5eed1abaSSascha Wildner
165*5eed1abaSSascha Wildner
166*5eed1abaSSascha Wildner long double ld;
167*5eed1abaSSascha Wildner double d;
168*5eed1abaSSascha Wildner float f;
169*5eed1abaSSascha Wildner long double complex ldc;
170*5eed1abaSSascha Wildner double complex dc;
171*5eed1abaSSascha Wildner float complex fc;
172*5eed1abaSSascha Wildner unsigned long long ull;
173*5eed1abaSSascha Wildner int i;
174*5eed1abaSSascha Wildner _Bool b;
175*5eed1abaSSascha Wildner
176*5eed1abaSSascha Wildner #define SAMETYPE(EXP, TYPE) \
177*5eed1abaSSascha Wildner __builtin_types_compatible_p(__typeof__(EXP), TYPE)
178*5eed1abaSSascha Wildner
179*5eed1abaSSascha Wildner #define CLEAR_COUNTERS \
180*5eed1abaSSascha Wildner (n_float = n_double = n_long_double = 0, \
181*5eed1abaSSascha Wildner n_float_complex = n_double_complex = n_long_double_complex = 0, 1)
182*5eed1abaSSascha Wildner
183*5eed1abaSSascha Wildner #define RUN_TEST(EXP, TYPE) (EXP, SAMETYPE(EXP, TYPE))
184*5eed1abaSSascha Wildner
185*5eed1abaSSascha Wildner #define PASS_REAL_ARG_REAL_RET(FNC) PASS_REAL_ARG_REAL_RET_(FNC,)
186*5eed1abaSSascha Wildner
187*5eed1abaSSascha Wildner #define PASS_REAL_ARG_REAL_RET_(FNC, SUFFIX) \
188*5eed1abaSSascha Wildner CLEAR_COUNTERS && \
189*5eed1abaSSascha Wildner RUN_TEST(FNC(1.l), long double) && \
190*5eed1abaSSascha Wildner RUN_TEST(FNC(ld), long double) && \
191*5eed1abaSSascha Wildner n_long_double ## SUFFIX == 2 && \
192*5eed1abaSSascha Wildner RUN_TEST(FNC(1.), double) && \
193*5eed1abaSSascha Wildner RUN_TEST(FNC(d), double) && \
194*5eed1abaSSascha Wildner RUN_TEST(FNC(1ull), double) && \
195*5eed1abaSSascha Wildner RUN_TEST(FNC(ull), double) && \
196*5eed1abaSSascha Wildner RUN_TEST(FNC(1), double) && \
197*5eed1abaSSascha Wildner RUN_TEST(FNC(i), double) && \
198*5eed1abaSSascha Wildner RUN_TEST(FNC((_Bool)0), double) && \
199*5eed1abaSSascha Wildner RUN_TEST(FNC(b), double) && \
200*5eed1abaSSascha Wildner n_double ## SUFFIX == 8 && \
201*5eed1abaSSascha Wildner RUN_TEST(FNC(1.f), float) && \
202*5eed1abaSSascha Wildner RUN_TEST(FNC(f), float) && \
203*5eed1abaSSascha Wildner n_float ## SUFFIX == 2
204*5eed1abaSSascha Wildner
205*5eed1abaSSascha Wildner #define PASS_REAL_ARG_FIXED_RET(FNC, RET) \
206*5eed1abaSSascha Wildner CLEAR_COUNTERS && \
207*5eed1abaSSascha Wildner RUN_TEST(FNC(1.l), RET) && \
208*5eed1abaSSascha Wildner RUN_TEST(FNC(ld), RET) && \
209*5eed1abaSSascha Wildner n_long_double == 2 && \
210*5eed1abaSSascha Wildner RUN_TEST(FNC(1.), RET) && \
211*5eed1abaSSascha Wildner RUN_TEST(FNC(d), RET) && \
212*5eed1abaSSascha Wildner RUN_TEST(FNC(1ull), RET) && \
213*5eed1abaSSascha Wildner RUN_TEST(FNC(ull), RET) && \
214*5eed1abaSSascha Wildner RUN_TEST(FNC(1), RET) && \
215*5eed1abaSSascha Wildner RUN_TEST(FNC(i), RET) && \
216*5eed1abaSSascha Wildner RUN_TEST(FNC((_Bool)0), RET) && \
217*5eed1abaSSascha Wildner RUN_TEST(FNC(b), RET) && \
218*5eed1abaSSascha Wildner n_double == 8 && \
219*5eed1abaSSascha Wildner RUN_TEST(FNC(1.f), RET) && \
220*5eed1abaSSascha Wildner RUN_TEST(FNC(f), RET) && \
221*5eed1abaSSascha Wildner n_float == 2
222*5eed1abaSSascha Wildner
223*5eed1abaSSascha Wildner #define PASS_REAL_FIXED_ARG_REAL_RET(FNC, ARG2) \
224*5eed1abaSSascha Wildner CLEAR_COUNTERS && \
225*5eed1abaSSascha Wildner RUN_TEST(FNC(1.l, ARG2), long double) && \
226*5eed1abaSSascha Wildner RUN_TEST(FNC(ld, ARG2), long double) && \
227*5eed1abaSSascha Wildner n_long_double == 2 && \
228*5eed1abaSSascha Wildner RUN_TEST(FNC(1., ARG2), double) && \
229*5eed1abaSSascha Wildner RUN_TEST(FNC(d, ARG2), double) && \
230*5eed1abaSSascha Wildner RUN_TEST(FNC(1ull, ARG2), double) && \
231*5eed1abaSSascha Wildner RUN_TEST(FNC(ull, ARG2), double) && \
232*5eed1abaSSascha Wildner RUN_TEST(FNC(1, ARG2), double) && \
233*5eed1abaSSascha Wildner RUN_TEST(FNC(i, ARG2), double) && \
234*5eed1abaSSascha Wildner RUN_TEST(FNC((_Bool)0, ARG2), double) && \
235*5eed1abaSSascha Wildner RUN_TEST(FNC(b, ARG2), double) && \
236*5eed1abaSSascha Wildner n_double == 8 && \
237*5eed1abaSSascha Wildner RUN_TEST(FNC(1.f, ARG2), float) && \
238*5eed1abaSSascha Wildner RUN_TEST(FNC(f, ARG2), float) && \
239*5eed1abaSSascha Wildner n_float == 2
240*5eed1abaSSascha Wildner
241*5eed1abaSSascha Wildner #define PASS_REAL_REAL_ARG_REAL_RET(FNC) \
242*5eed1abaSSascha Wildner CLEAR_COUNTERS && \
243*5eed1abaSSascha Wildner RUN_TEST(FNC(1.l, 1.l), long double) && \
244*5eed1abaSSascha Wildner RUN_TEST(FNC(1.l, 1.), long double) && \
245*5eed1abaSSascha Wildner RUN_TEST(FNC(1.l, 1.f), long double) && \
246*5eed1abaSSascha Wildner RUN_TEST(FNC(1.l, 1), long double) && \
247*5eed1abaSSascha Wildner RUN_TEST(FNC(1.l, (_Bool)0), long double) && \
248*5eed1abaSSascha Wildner RUN_TEST(FNC(1.l, ld), long double) && \
249*5eed1abaSSascha Wildner RUN_TEST(FNC(1., ld), long double) && \
250*5eed1abaSSascha Wildner RUN_TEST(FNC(1.f, ld), long double) && \
251*5eed1abaSSascha Wildner RUN_TEST(FNC(1, ld), long double) && \
252*5eed1abaSSascha Wildner RUN_TEST(FNC((_Bool)0, ld), long double) && \
253*5eed1abaSSascha Wildner n_long_double == 10 && \
254*5eed1abaSSascha Wildner RUN_TEST(FNC(d, 1.), double) && \
255*5eed1abaSSascha Wildner RUN_TEST(FNC(d, 1.f), double) && \
256*5eed1abaSSascha Wildner RUN_TEST(FNC(d, 1l), double) && \
257*5eed1abaSSascha Wildner RUN_TEST(FNC(d, (_Bool)0), double) && \
258*5eed1abaSSascha Wildner RUN_TEST(FNC(1., 1.), double) && \
259*5eed1abaSSascha Wildner RUN_TEST(FNC(1.f, 1.), double) && \
260*5eed1abaSSascha Wildner RUN_TEST(FNC(1l, 1.), double) && \
261*5eed1abaSSascha Wildner RUN_TEST(FNC((_Bool)0, 1.), double) && \
262*5eed1abaSSascha Wildner RUN_TEST(FNC(1ull, f), double) && \
263*5eed1abaSSascha Wildner RUN_TEST(FNC(1.f, ull), double) && \
264*5eed1abaSSascha Wildner RUN_TEST(FNC(1, 1l), double) && \
265*5eed1abaSSascha Wildner RUN_TEST(FNC(1u, i), double) && \
266*5eed1abaSSascha Wildner RUN_TEST(FNC((_Bool)0, 1.f), double) && \
267*5eed1abaSSascha Wildner RUN_TEST(FNC(1.f, b), double) && \
268*5eed1abaSSascha Wildner n_double == 14 && \
269*5eed1abaSSascha Wildner RUN_TEST(FNC(1.f, 1.f), float) && \
270*5eed1abaSSascha Wildner RUN_TEST(FNC(1.f, 1.f), float) && \
271*5eed1abaSSascha Wildner RUN_TEST(FNC(f, 1.f), float) && \
272*5eed1abaSSascha Wildner RUN_TEST(FNC(f, f), float) && \
273*5eed1abaSSascha Wildner n_float == 4
274*5eed1abaSSascha Wildner
275*5eed1abaSSascha Wildner #define PASS_REAL_REAL_FIXED_ARG_REAL_RET(FNC, ARG3) \
276*5eed1abaSSascha Wildner CLEAR_COUNTERS && \
277*5eed1abaSSascha Wildner RUN_TEST(FNC(1.l, 1.l, ARG3), long double) && \
278*5eed1abaSSascha Wildner RUN_TEST(FNC(1.l, 1., ARG3), long double) && \
279*5eed1abaSSascha Wildner RUN_TEST(FNC(1.l, 1.f, ARG3), long double) && \
280*5eed1abaSSascha Wildner RUN_TEST(FNC(1.l, 1, ARG3), long double) && \
281*5eed1abaSSascha Wildner RUN_TEST(FNC(1.l, (_Bool)0, ARG3), long double) && \
282*5eed1abaSSascha Wildner RUN_TEST(FNC(1.l, ld, ARG3), long double) && \
283*5eed1abaSSascha Wildner RUN_TEST(FNC(1., ld, ARG3), long double) && \
284*5eed1abaSSascha Wildner RUN_TEST(FNC(1.f, ld, ARG3), long double) && \
285*5eed1abaSSascha Wildner RUN_TEST(FNC(1, ld, ARG3), long double) && \
286*5eed1abaSSascha Wildner RUN_TEST(FNC((_Bool)0, ld, ARG3), long double) && \
287*5eed1abaSSascha Wildner n_long_double == 10 && \
288*5eed1abaSSascha Wildner RUN_TEST(FNC(d, 1., ARG3), double) && \
289*5eed1abaSSascha Wildner RUN_TEST(FNC(d, 1.f, ARG3), double) && \
290*5eed1abaSSascha Wildner RUN_TEST(FNC(d, 1l, ARG3), double) && \
291*5eed1abaSSascha Wildner RUN_TEST(FNC(d, (_Bool)0, ARG3), double) && \
292*5eed1abaSSascha Wildner RUN_TEST(FNC(1., 1., ARG3), double) && \
293*5eed1abaSSascha Wildner RUN_TEST(FNC(1.f, 1., ARG3), double) && \
294*5eed1abaSSascha Wildner RUN_TEST(FNC(1l, 1., ARG3), double) && \
295*5eed1abaSSascha Wildner RUN_TEST(FNC((_Bool)0, 1., ARG3), double) && \
296*5eed1abaSSascha Wildner RUN_TEST(FNC(1ull, f, ARG3), double) && \
297*5eed1abaSSascha Wildner RUN_TEST(FNC(1.f, ull, ARG3), double) && \
298*5eed1abaSSascha Wildner RUN_TEST(FNC(1, 1l, ARG3), double) && \
299*5eed1abaSSascha Wildner RUN_TEST(FNC(1u, i, ARG3), double) && \
300*5eed1abaSSascha Wildner RUN_TEST(FNC((_Bool)0, 1.f, ARG3), double) && \
301*5eed1abaSSascha Wildner RUN_TEST(FNC(1.f, b, ARG3), double) && \
302*5eed1abaSSascha Wildner n_double == 14 && \
303*5eed1abaSSascha Wildner RUN_TEST(FNC(1.f, 1.f, ARG3), float) && \
304*5eed1abaSSascha Wildner RUN_TEST(FNC(1.f, 1.f, ARG3), float) && \
305*5eed1abaSSascha Wildner RUN_TEST(FNC(f, 1.f, ARG3), float) && \
306*5eed1abaSSascha Wildner RUN_TEST(FNC(f, f, ARG3), float) && \
307*5eed1abaSSascha Wildner n_float == 4
308*5eed1abaSSascha Wildner
309*5eed1abaSSascha Wildner #define PASS_REAL_REAL_REAL_ARG_REAL_RET(FNC) \
310*5eed1abaSSascha Wildner CLEAR_COUNTERS && \
311*5eed1abaSSascha Wildner RUN_TEST(FNC(ld, d, f), long double) && \
312*5eed1abaSSascha Wildner RUN_TEST(FNC(1, ld, ld), long double) && \
313*5eed1abaSSascha Wildner RUN_TEST(FNC(1, d, ld), long double) && \
314*5eed1abaSSascha Wildner n_long_double == 3 && \
315*5eed1abaSSascha Wildner RUN_TEST(FNC(1, f, 1.f), double) && \
316*5eed1abaSSascha Wildner RUN_TEST(FNC(f, d, 1.f), double) && \
317*5eed1abaSSascha Wildner RUN_TEST(FNC(f, 1.f, 1.), double) && \
318*5eed1abaSSascha Wildner n_double == 3 && \
319*5eed1abaSSascha Wildner RUN_TEST(FNC(f, 1.f, f), float) && \
320*5eed1abaSSascha Wildner n_float == 1
321*5eed1abaSSascha Wildner
322*5eed1abaSSascha Wildner #define PASS_REAL_ARG_COMPLEX_RET(FNC) \
323*5eed1abaSSascha Wildner CLEAR_COUNTERS && \
324*5eed1abaSSascha Wildner RUN_TEST(FNC(1.l), long double complex) && \
325*5eed1abaSSascha Wildner RUN_TEST(FNC(ld), long double complex) && \
326*5eed1abaSSascha Wildner n_long_double_complex == 2 && \
327*5eed1abaSSascha Wildner RUN_TEST(FNC(1.), double complex) && \
328*5eed1abaSSascha Wildner RUN_TEST(FNC(d), double complex) && \
329*5eed1abaSSascha Wildner RUN_TEST(FNC(1l), double complex) && \
330*5eed1abaSSascha Wildner RUN_TEST(FNC(i), double complex) && \
331*5eed1abaSSascha Wildner RUN_TEST(FNC(b), double complex) && \
332*5eed1abaSSascha Wildner n_double_complex == 5 && \
333*5eed1abaSSascha Wildner RUN_TEST(FNC(1.f), float complex) && \
334*5eed1abaSSascha Wildner RUN_TEST(FNC(f), float complex) && \
335*5eed1abaSSascha Wildner n_float_complex == 2
336*5eed1abaSSascha Wildner
337*5eed1abaSSascha Wildner #define PASS_COMPLEX_ARG_COMPLEX_RET(FNC) \
338*5eed1abaSSascha Wildner CLEAR_COUNTERS && \
339*5eed1abaSSascha Wildner RUN_TEST(FNC(ldc), long double complex) && \
340*5eed1abaSSascha Wildner n_long_double_complex == 1 && \
341*5eed1abaSSascha Wildner RUN_TEST(FNC(dc), double complex) && \
342*5eed1abaSSascha Wildner n_double_complex == 1 && \
343*5eed1abaSSascha Wildner RUN_TEST(FNC(fc), float complex) && \
344*5eed1abaSSascha Wildner RUN_TEST(FNC(I), float complex) && \
345*5eed1abaSSascha Wildner n_float_complex == 2
346*5eed1abaSSascha Wildner
347*5eed1abaSSascha Wildner #define PASS_COMPLEX_ARG_REAL_RET(FNC) \
348*5eed1abaSSascha Wildner CLEAR_COUNTERS && \
349*5eed1abaSSascha Wildner RUN_TEST(FNC(ldc), long double) && \
350*5eed1abaSSascha Wildner n_long_double_complex == 1 && \
351*5eed1abaSSascha Wildner RUN_TEST(FNC(dc), double) && \
352*5eed1abaSSascha Wildner n_double_complex == 1 && \
353*5eed1abaSSascha Wildner RUN_TEST(FNC(fc), float) && \
354*5eed1abaSSascha Wildner RUN_TEST(FNC(I), float) && \
355*5eed1abaSSascha Wildner n_float_complex == 2
356*5eed1abaSSascha Wildner
357*5eed1abaSSascha Wildner #define PASS_COMPLEX_COMPLEX_ARG_COMPLEX_RET(FNC) \
358*5eed1abaSSascha Wildner CLEAR_COUNTERS && \
359*5eed1abaSSascha Wildner RUN_TEST(FNC(ldc, ldc), long double complex) && \
360*5eed1abaSSascha Wildner RUN_TEST(FNC(ldc, dc), long double complex) && \
361*5eed1abaSSascha Wildner RUN_TEST(FNC(ldc, fc), long double complex) && \
362*5eed1abaSSascha Wildner RUN_TEST(FNC(ldc, ld), long double complex) && \
363*5eed1abaSSascha Wildner RUN_TEST(FNC(ldc, d), long double complex) && \
364*5eed1abaSSascha Wildner RUN_TEST(FNC(ldc, f), long double complex) && \
365*5eed1abaSSascha Wildner RUN_TEST(FNC(ldc, i), long double complex) && \
366*5eed1abaSSascha Wildner RUN_TEST(FNC(dc, ldc), long double complex) && \
367*5eed1abaSSascha Wildner RUN_TEST(FNC(I, ldc), long double complex) && \
368*5eed1abaSSascha Wildner RUN_TEST(FNC(1.l, ldc), long double complex) && \
369*5eed1abaSSascha Wildner RUN_TEST(FNC(1., ldc), long double complex) && \
370*5eed1abaSSascha Wildner RUN_TEST(FNC(1.f, ldc), long double complex) && \
371*5eed1abaSSascha Wildner RUN_TEST(FNC(1, ldc), long double complex) && \
372*5eed1abaSSascha Wildner RUN_TEST(FNC(ld, dc), long double complex) && \
373*5eed1abaSSascha Wildner RUN_TEST(FNC(ld, fc), long double complex) && \
374*5eed1abaSSascha Wildner RUN_TEST(FNC(I, 1.l), long double complex) && \
375*5eed1abaSSascha Wildner RUN_TEST(FNC(dc, 1.l), long double complex) && \
376*5eed1abaSSascha Wildner n_long_double_complex == 17 && \
377*5eed1abaSSascha Wildner RUN_TEST(FNC(dc, dc), double complex) && \
378*5eed1abaSSascha Wildner RUN_TEST(FNC(dc, fc), double complex) && \
379*5eed1abaSSascha Wildner RUN_TEST(FNC(dc, d), double complex) && \
380*5eed1abaSSascha Wildner RUN_TEST(FNC(dc, f), double complex) && \
381*5eed1abaSSascha Wildner RUN_TEST(FNC(dc, ull), double complex) && \
382*5eed1abaSSascha Wildner RUN_TEST(FNC(I, dc), double complex) && \
383*5eed1abaSSascha Wildner RUN_TEST(FNC(1., dc), double complex) && \
384*5eed1abaSSascha Wildner RUN_TEST(FNC(1, dc), double complex) && \
385*5eed1abaSSascha Wildner RUN_TEST(FNC(fc, d), double complex) && \
386*5eed1abaSSascha Wildner RUN_TEST(FNC(1, I), double complex) && \
387*5eed1abaSSascha Wildner n_double_complex == 10 && \
388*5eed1abaSSascha Wildner RUN_TEST(FNC(fc, fc), float complex) && \
389*5eed1abaSSascha Wildner RUN_TEST(FNC(fc, I), float complex) && \
390*5eed1abaSSascha Wildner RUN_TEST(FNC(1.f, fc), float complex) && \
391*5eed1abaSSascha Wildner n_float_complex == 3
392*5eed1abaSSascha Wildner
393*5eed1abaSSascha Wildner int failed = 0;
394*5eed1abaSSascha Wildner #define PRINT(STR, X) do { \
395*5eed1abaSSascha Wildner currtest++; \
396*5eed1abaSSascha Wildner int result = (X); \
397*5eed1abaSSascha Wildner if (!result) \
398*5eed1abaSSascha Wildner failed = 1; \
399*5eed1abaSSascha Wildner printf("%s %d - %s\n", result ? "ok" : "not ok", currtest, (STR)); \
400*5eed1abaSSascha Wildner fflush(stdout); \
401*5eed1abaSSascha Wildner } while (0)
402*5eed1abaSSascha Wildner
403*5eed1abaSSascha Wildner int
main(void)404*5eed1abaSSascha Wildner main(void)
405*5eed1abaSSascha Wildner {
406*5eed1abaSSascha Wildner printf("1..60\n");
407*5eed1abaSSascha Wildner
408*5eed1abaSSascha Wildner /* 7.22#4 */
409*5eed1abaSSascha Wildner PRINT("acos",
410*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET(acos) &&
411*5eed1abaSSascha Wildner PASS_COMPLEX_ARG_COMPLEX_RET(acos));
412*5eed1abaSSascha Wildner
413*5eed1abaSSascha Wildner PRINT("asin",
414*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET(asin) &&
415*5eed1abaSSascha Wildner PASS_COMPLEX_ARG_COMPLEX_RET(asin));
416*5eed1abaSSascha Wildner
417*5eed1abaSSascha Wildner PRINT("atan",
418*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET(atan) &&
419*5eed1abaSSascha Wildner PASS_COMPLEX_ARG_COMPLEX_RET(atan));
420*5eed1abaSSascha Wildner
421*5eed1abaSSascha Wildner PRINT("acosh",
422*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET(acosh) &&
423*5eed1abaSSascha Wildner PASS_COMPLEX_ARG_COMPLEX_RET(acosh));
424*5eed1abaSSascha Wildner
425*5eed1abaSSascha Wildner PRINT("asinh",
426*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET(asinh) &&
427*5eed1abaSSascha Wildner PASS_COMPLEX_ARG_COMPLEX_RET(asinh));
428*5eed1abaSSascha Wildner
429*5eed1abaSSascha Wildner PRINT("atanh",
430*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET(atanh) &&
431*5eed1abaSSascha Wildner PASS_COMPLEX_ARG_COMPLEX_RET(atanh));
432*5eed1abaSSascha Wildner
433*5eed1abaSSascha Wildner PRINT("cos",
434*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET(cos) &&
435*5eed1abaSSascha Wildner PASS_COMPLEX_ARG_COMPLEX_RET(cos));
436*5eed1abaSSascha Wildner
437*5eed1abaSSascha Wildner PRINT("sin",
438*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET(sin) &&
439*5eed1abaSSascha Wildner PASS_COMPLEX_ARG_COMPLEX_RET(sin));
440*5eed1abaSSascha Wildner
441*5eed1abaSSascha Wildner PRINT("tan",
442*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET(tan) &&
443*5eed1abaSSascha Wildner PASS_COMPLEX_ARG_COMPLEX_RET(tan));
444*5eed1abaSSascha Wildner
445*5eed1abaSSascha Wildner PRINT("cosh",
446*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET(cosh) &&
447*5eed1abaSSascha Wildner PASS_COMPLEX_ARG_COMPLEX_RET(cosh));
448*5eed1abaSSascha Wildner
449*5eed1abaSSascha Wildner PRINT("sinh",
450*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET(sinh) &&
451*5eed1abaSSascha Wildner PASS_COMPLEX_ARG_COMPLEX_RET(sinh));
452*5eed1abaSSascha Wildner
453*5eed1abaSSascha Wildner PRINT("tanh",
454*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET(tanh) &&
455*5eed1abaSSascha Wildner PASS_COMPLEX_ARG_COMPLEX_RET(tanh));
456*5eed1abaSSascha Wildner
457*5eed1abaSSascha Wildner PRINT("exp",
458*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET(exp) &&
459*5eed1abaSSascha Wildner PASS_COMPLEX_ARG_COMPLEX_RET(exp));
460*5eed1abaSSascha Wildner
461*5eed1abaSSascha Wildner PRINT("log",
462*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET(log) &&
463*5eed1abaSSascha Wildner PASS_COMPLEX_ARG_COMPLEX_RET(log));
464*5eed1abaSSascha Wildner
465*5eed1abaSSascha Wildner PRINT("pow",
466*5eed1abaSSascha Wildner PASS_REAL_REAL_ARG_REAL_RET(pow) &&
467*5eed1abaSSascha Wildner PASS_COMPLEX_COMPLEX_ARG_COMPLEX_RET(pow));
468*5eed1abaSSascha Wildner
469*5eed1abaSSascha Wildner PRINT("sqrt",
470*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET(sqrt) &&
471*5eed1abaSSascha Wildner PASS_COMPLEX_ARG_COMPLEX_RET(sqrt));
472*5eed1abaSSascha Wildner
473*5eed1abaSSascha Wildner PRINT("fabs",
474*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET(fabs) &&
475*5eed1abaSSascha Wildner PASS_COMPLEX_ARG_REAL_RET(fabs));
476*5eed1abaSSascha Wildner
477*5eed1abaSSascha Wildner /* 7.22#5 */
478*5eed1abaSSascha Wildner PRINT("atan2",
479*5eed1abaSSascha Wildner PASS_REAL_REAL_ARG_REAL_RET(atan2));
480*5eed1abaSSascha Wildner
481*5eed1abaSSascha Wildner PRINT("cbrt",
482*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET(cbrt));
483*5eed1abaSSascha Wildner
484*5eed1abaSSascha Wildner PRINT("ceil",
485*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET(ceil));
486*5eed1abaSSascha Wildner
487*5eed1abaSSascha Wildner PRINT("copysign",
488*5eed1abaSSascha Wildner PASS_REAL_REAL_ARG_REAL_RET(copysign));
489*5eed1abaSSascha Wildner
490*5eed1abaSSascha Wildner PRINT("erf",
491*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET(erf));
492*5eed1abaSSascha Wildner
493*5eed1abaSSascha Wildner PRINT("erfc",
494*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET(erfc));
495*5eed1abaSSascha Wildner
496*5eed1abaSSascha Wildner PRINT("exp2",
497*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET(exp2));
498*5eed1abaSSascha Wildner
499*5eed1abaSSascha Wildner PRINT("expm1",
500*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET(expm1));
501*5eed1abaSSascha Wildner
502*5eed1abaSSascha Wildner PRINT("fdim",
503*5eed1abaSSascha Wildner PASS_REAL_REAL_ARG_REAL_RET(fdim));
504*5eed1abaSSascha Wildner
505*5eed1abaSSascha Wildner PRINT("floor",
506*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET(floor));
507*5eed1abaSSascha Wildner
508*5eed1abaSSascha Wildner PRINT("fma",
509*5eed1abaSSascha Wildner PASS_REAL_REAL_REAL_ARG_REAL_RET(fma));
510*5eed1abaSSascha Wildner
511*5eed1abaSSascha Wildner PRINT("fmax",
512*5eed1abaSSascha Wildner PASS_REAL_REAL_ARG_REAL_RET(fmax));
513*5eed1abaSSascha Wildner
514*5eed1abaSSascha Wildner PRINT("fmin",
515*5eed1abaSSascha Wildner PASS_REAL_REAL_ARG_REAL_RET(fmin));
516*5eed1abaSSascha Wildner
517*5eed1abaSSascha Wildner PRINT("fmod",
518*5eed1abaSSascha Wildner PASS_REAL_REAL_ARG_REAL_RET(fmod));
519*5eed1abaSSascha Wildner
520*5eed1abaSSascha Wildner PRINT("frexp",
521*5eed1abaSSascha Wildner PASS_REAL_FIXED_ARG_REAL_RET(frexp, &i));
522*5eed1abaSSascha Wildner
523*5eed1abaSSascha Wildner PRINT("hypot",
524*5eed1abaSSascha Wildner PASS_REAL_REAL_ARG_REAL_RET(hypot));
525*5eed1abaSSascha Wildner
526*5eed1abaSSascha Wildner PRINT("ilogb",
527*5eed1abaSSascha Wildner PASS_REAL_ARG_FIXED_RET(ilogb, int));
528*5eed1abaSSascha Wildner
529*5eed1abaSSascha Wildner PRINT("ldexp",
530*5eed1abaSSascha Wildner PASS_REAL_FIXED_ARG_REAL_RET(ldexp, 1) &&
531*5eed1abaSSascha Wildner PASS_REAL_FIXED_ARG_REAL_RET(ldexp, ld) &&
532*5eed1abaSSascha Wildner PASS_REAL_FIXED_ARG_REAL_RET(ldexp, ldc));
533*5eed1abaSSascha Wildner
534*5eed1abaSSascha Wildner PRINT("lgamma",
535*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET(lgamma));
536*5eed1abaSSascha Wildner
537*5eed1abaSSascha Wildner PRINT("llrint",
538*5eed1abaSSascha Wildner PASS_REAL_ARG_FIXED_RET(llrint, long long));
539*5eed1abaSSascha Wildner
540*5eed1abaSSascha Wildner PRINT("llround",
541*5eed1abaSSascha Wildner PASS_REAL_ARG_FIXED_RET(llround, long long));
542*5eed1abaSSascha Wildner
543*5eed1abaSSascha Wildner PRINT("log10",
544*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET(log10));
545*5eed1abaSSascha Wildner
546*5eed1abaSSascha Wildner PRINT("log1p",
547*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET(log1p));
548*5eed1abaSSascha Wildner
549*5eed1abaSSascha Wildner PRINT("log2",
550*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET(log2));
551*5eed1abaSSascha Wildner
552*5eed1abaSSascha Wildner PRINT("logb",
553*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET(logb));
554*5eed1abaSSascha Wildner
555*5eed1abaSSascha Wildner PRINT("lrint",
556*5eed1abaSSascha Wildner PASS_REAL_ARG_FIXED_RET(lrint, long));
557*5eed1abaSSascha Wildner
558*5eed1abaSSascha Wildner PRINT("lround",
559*5eed1abaSSascha Wildner PASS_REAL_ARG_FIXED_RET(lround, long));
560*5eed1abaSSascha Wildner
561*5eed1abaSSascha Wildner PRINT("nearbyint",
562*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET(nearbyint));
563*5eed1abaSSascha Wildner
564*5eed1abaSSascha Wildner PRINT("nextafter",
565*5eed1abaSSascha Wildner PASS_REAL_REAL_ARG_REAL_RET(nextafter));
566*5eed1abaSSascha Wildner
567*5eed1abaSSascha Wildner PRINT("nexttoward",
568*5eed1abaSSascha Wildner PASS_REAL_FIXED_ARG_REAL_RET(nexttoward, 1) &&
569*5eed1abaSSascha Wildner PASS_REAL_FIXED_ARG_REAL_RET(nexttoward, ull) &&
570*5eed1abaSSascha Wildner PASS_REAL_FIXED_ARG_REAL_RET(nexttoward, d) &&
571*5eed1abaSSascha Wildner PASS_REAL_FIXED_ARG_REAL_RET(nexttoward, fc));
572*5eed1abaSSascha Wildner
573*5eed1abaSSascha Wildner PRINT("remainder",
574*5eed1abaSSascha Wildner PASS_REAL_REAL_ARG_REAL_RET(remainder));
575*5eed1abaSSascha Wildner
576*5eed1abaSSascha Wildner PRINT("remquo",
577*5eed1abaSSascha Wildner PASS_REAL_REAL_FIXED_ARG_REAL_RET(remquo, &i));
578*5eed1abaSSascha Wildner
579*5eed1abaSSascha Wildner PRINT("rint",
580*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET(rint));
581*5eed1abaSSascha Wildner
582*5eed1abaSSascha Wildner PRINT("round",
583*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET(round));
584*5eed1abaSSascha Wildner
585*5eed1abaSSascha Wildner PRINT("scalbn",
586*5eed1abaSSascha Wildner PASS_REAL_FIXED_ARG_REAL_RET(scalbn, 1) &&
587*5eed1abaSSascha Wildner PASS_REAL_FIXED_ARG_REAL_RET(scalbn, b) &&
588*5eed1abaSSascha Wildner PASS_REAL_FIXED_ARG_REAL_RET(scalbn, I));
589*5eed1abaSSascha Wildner
590*5eed1abaSSascha Wildner PRINT("scalbln",
591*5eed1abaSSascha Wildner PASS_REAL_FIXED_ARG_REAL_RET(scalbln, i) &&
592*5eed1abaSSascha Wildner PASS_REAL_FIXED_ARG_REAL_RET(scalbln, 1.l) &&
593*5eed1abaSSascha Wildner PASS_REAL_FIXED_ARG_REAL_RET(scalbln, dc));
594*5eed1abaSSascha Wildner
595*5eed1abaSSascha Wildner PRINT("tgamma",
596*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET(tgamma));
597*5eed1abaSSascha Wildner
598*5eed1abaSSascha Wildner PRINT("trunc",
599*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET(trunc));
600*5eed1abaSSascha Wildner
601*5eed1abaSSascha Wildner /* 7.22#6 */
602*5eed1abaSSascha Wildner PRINT("carg",
603*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET_(carg, _complex) &&
604*5eed1abaSSascha Wildner PASS_COMPLEX_ARG_REAL_RET(carg));
605*5eed1abaSSascha Wildner
606*5eed1abaSSascha Wildner PRINT("cimag",
607*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET_(cimag, _complex) &&
608*5eed1abaSSascha Wildner PASS_COMPLEX_ARG_REAL_RET(cimag));
609*5eed1abaSSascha Wildner
610*5eed1abaSSascha Wildner PRINT("conj",
611*5eed1abaSSascha Wildner PASS_REAL_ARG_COMPLEX_RET(conj) &&
612*5eed1abaSSascha Wildner PASS_COMPLEX_ARG_COMPLEX_RET(conj));
613*5eed1abaSSascha Wildner
614*5eed1abaSSascha Wildner PRINT("cproj",
615*5eed1abaSSascha Wildner PASS_REAL_ARG_COMPLEX_RET(cproj) &&
616*5eed1abaSSascha Wildner PASS_COMPLEX_ARG_COMPLEX_RET(cproj));
617*5eed1abaSSascha Wildner
618*5eed1abaSSascha Wildner PRINT("creal",
619*5eed1abaSSascha Wildner PASS_REAL_ARG_REAL_RET_(creal, _complex) &&
620*5eed1abaSSascha Wildner PASS_COMPLEX_ARG_REAL_RET(creal));
621*5eed1abaSSascha Wildner }
622