1 #include <stdio.h>
2 #include <tgmath.h>
3 
4 
5 int
main(void)6 main (void)
7 {
8   int retval = 0;
9 
10 #define TEST(expr, res) \
11   if (sizeof (expr) != res)						      \
12     {									      \
13       printf ("sizeof(%s) == %zu, expected %zu\n", #expr,		      \
14 	      sizeof (expr), (size_t) (res));				      \
15       retval = 1;								      \
16     }
17 
18   TEST (creal (1.0), sizeof (double));
19   TEST (creal (1.0 + 1.0i), sizeof (double));
20   TEST (creal (1.0l), sizeof (long double));
21   TEST (creal (1.0l + 1.0li), sizeof (long double));
22   TEST (creal (1.0f), sizeof (float));
23   TEST (creal (1.0f + 1.0fi), sizeof (float));
24 
25   TEST (cimag (1.0), sizeof (double));
26   TEST (cimag (1.0 + 1.0i), sizeof (double));
27   TEST (cimag (1.0l), sizeof (long double));
28   TEST (cimag (1.0l + 1.0li), sizeof (long double));
29   TEST (cimag (1.0f), sizeof (float));
30   TEST (cimag (1.0f + 1.0fi), sizeof (float));
31 
32   TEST (fabs (1.0), sizeof (double));
33   TEST (fabs (1.0 + 1.0i), sizeof (double));
34   TEST (fabs (1.0l), sizeof (long double));
35   TEST (fabs (1.0l + 1.0li), sizeof (long double));
36   TEST (fabs (1.0f), sizeof (float));
37   TEST (fabs (1.0f + 1.0fi), sizeof (float));
38 
39   TEST (carg (1.0), sizeof (double));
40   TEST (carg (1.0 + 1.0i), sizeof (double));
41   TEST (carg (1.0l), sizeof (long double));
42   TEST (carg (1.0l + 1.0li), sizeof (long double));
43   TEST (carg (1.0f), sizeof (float));
44   TEST (carg (1.0f + 1.0fi), sizeof (float));
45 
46   return retval;
47 }
48