]>
Commit | Line | Data |
---|---|---|
2ca862e9 JM |
1 | /* Test complex arithmetic with signed zeros. Mixed real/complex |
2 | multiplication. */ | |
3 | /* { dg-do run } */ | |
1ff6b2c8 | 4 | /* { dg-options "-std=gnu99" { target c } } */ |
2ca862e9 JM |
5 | |
6 | #include "complex-sign.h" | |
7 | ||
8 | #define CHECK_MUL(TYPE, COPY, ZERO, ZEROI) \ | |
9 | do { \ | |
10 | CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, *, +, +, +, +, +); \ | |
11 | CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, *, +, +, -, +, -); \ | |
12 | CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, *, +, -, +, -, +); \ | |
13 | CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, *, +, -, -, -, -); \ | |
14 | CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, *, -, +, +, -, -); \ | |
15 | CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, *, -, +, -, -, +); \ | |
16 | CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, *, -, -, +, +, -); \ | |
17 | CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, *, -, -, -, +, +); \ | |
18 | CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, *, +, +, +, ZERO, +, +); \ | |
19 | CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, *, +, +, -, ZERO, -, -); \ | |
20 | CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, *, +, -, +, ZERO, +, -); \ | |
21 | CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, *, +, -, -, ZERO, -, +); \ | |
22 | CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, *, -, +, +, ZERO, -, +); \ | |
23 | CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, *, -, +, -, ZERO, +, -); \ | |
24 | CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, *, -, -, +, ZERO, -, -); \ | |
25 | CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, *, -, -, -, ZERO, +, +); \ | |
26 | } while (0) | |
27 | ||
28 | void | |
29 | check_mul_float (void) | |
30 | { | |
31 | CHECK_MUL (float, __builtin_copysignf, 0.0f, 0.0if); | |
32 | } | |
33 | ||
34 | void | |
35 | check_mul_double (void) | |
36 | { | |
37 | CHECK_MUL (double, __builtin_copysign, 0.0, 0.0i); | |
38 | } | |
39 | ||
40 | void | |
41 | check_mul_long_double (void) | |
42 | { | |
43 | CHECK_MUL (long double, __builtin_copysignl, 0.0l, 0.0il); | |
44 | } | |
45 | ||
46 | int | |
47 | main (void) | |
48 | { | |
49 | check_mul_float (); | |
50 | check_mul_double (); | |
51 | check_mul_long_double (); | |
52 | exit (0); | |
53 | } |