test copysign of 0
| 10 | |
| 11 | // test copysign of 0 |
| 12 | int __attribute__((noinline)) |
| 13 | copysign_bug (double x) |
| 14 | { |
| 15 | if (x != 0.0 && (x * 0.5 == x)) { |
| 16 | printf("1\n"); |
| 17 | return 1; |
| 18 | } |
| 19 | printf("f: %f\n", x); |
| 20 | if (__builtin_copysign(1.0, x) < 0.0) { |
| 21 | printf("2\n"); |
| 22 | return 2; |
| 23 | } else { |
| 24 | printf("3\n"); |
| 25 | return 3; |
| 26 | } |
| 27 | } |
| 28 | |
| 29 | int main() { |
| 30 | #define TEST(x, y) printf("%.2f, %.2f ==> %.2f\n", x, y, copysign(x, y)); |