@@ -57,43 +57,58 @@ static_assert(((1.25 + 0.5j) / (0.25 - 0.75j)) == (-0.1 + 1.7j));
5757static_assert (((1.25 + 0 .5j) / 0.25 ) == (5.0 + 2 .0j));
5858static_assert ((1.25 / (0.25 - 0 .75j)) == (0.5 + 1 .5j));
5959
60- // Test that infinities are preserved, don't turn into NaNs, and do form zeros
61- // when the divisor.
60+
6261static_assert (__builtin_isinf_sign(__real__((__builtin_inf() + 1 .0j) * 1.0 )) == 1 );
63- static_assert (__builtin_isinf_sign(__imag__((1.0 + __builtin_inf() * 1 .0j) * 1.0 )) == 1 );
62+ static_assert (__builtin_isinf_sign(__imag__((1.0 + __builtin_inf() * 1 .0j) * 1.0 )) == 1 ); // expected-error {{static assertion}} \
63+ // expected-note {{produces a NaN}}
6464static_assert (__builtin_isinf_sign(__real__(1.0 * (__builtin_inf() + 1 .0j))) == 1 );
65- static_assert (__builtin_isinf_sign(__imag__(1.0 * (1.0 + __builtin_inf() * 1 .0j))) == 1 );
66-
65+ static_assert (__builtin_isinf_sign(__imag__(1.0 * (1.0 + __builtin_inf() * 1 .0j))) == 1 ); // expected-error {{static assertion}} \
66+ // expected-note {{produces a NaN}}
6767static_assert (__builtin_isinf_sign(__real__((__builtin_inf() + 1 .0j) * (1.0 + 1 .0j))) == 1 );
6868static_assert (__builtin_isinf_sign(__real__((1.0 + 1 .0j) * (__builtin_inf() + 1 .0j))) == 1 );
6969static_assert (__builtin_isinf_sign(__real__((__builtin_inf() + 1 .0j) * (__builtin_inf() + 1 .0j))) == 1 );
70-
71- static_assert (__builtin_isinf_sign(__real__((1.0 + __builtin_inf() * 1 .0j) * (1.0 + 1 .0j))) == -1 );
72- static_assert (__builtin_isinf_sign(__imag__((1.0 + __builtin_inf() * 1 .0j) * (1.0 + 1 .0j))) == 1 );
73- static_assert (__builtin_isinf_sign(__real__((1.0 + 1 .0j) * (1.0 + __builtin_inf() * 1 .0j))) == -1 );
74- static_assert (__builtin_isinf_sign(__imag__((1.0 + 1 .0j) * (1.0 + __builtin_inf() * 1 .0j))) == 1 );
75-
76- static_assert (__builtin_isinf_sign(__real__((1.0 + __builtin_inf() * 1 .0j) * (1.0 + __builtin_inf() * 1 .0j))) == -1 );
77- static_assert (__builtin_isinf_sign(__real__((__builtin_inf() + __builtin_inf() * 1 .0j) * (__builtin_inf() + __builtin_inf() * 1 .0j))) == -1 );
78-
70+ static_assert (__builtin_isinf_sign(__real__((1.0 + __builtin_inf() * 1 .0j) * (1.0 + 1 .0j))) == -1 ); // expected-error {{static assertion}} \
71+ // expected-note {{produces a NaN}}
72+ static_assert (__builtin_isinf_sign(__imag__((1.0 + __builtin_inf() * 1 .0j) * (1.0 + 1 .0j))) == 1 ); // expected-error {{static assertion}} \
73+ // expected-note {{produces a NaN}}
74+ static_assert (__builtin_isinf_sign(__real__((1.0 + 1 .0j) * (1.0 + __builtin_inf() * 1 .0j))) == -1 ); // expected-error {{static assertion}} \
75+ // expected-note {{produces a NaN}}
76+ static_assert (__builtin_isinf_sign(__imag__((1.0 + 1 .0j) * (1.0 + __builtin_inf() * 1 .0j))) == 1 ); // expected-error {{static assertion}} \
77+ // expected-note {{produces a NaN}}
78+ static_assert (__builtin_isinf_sign(__real__((1.0 + __builtin_inf() * 1 .0j) * (1.0 + __builtin_inf() * 1 .0j))) == -1 ); // expected-error {{static assertion}} \
79+ // expected-note {{produces a NaN}}
80+ static_assert (__builtin_isinf_sign(__real__((__builtin_inf() + __builtin_inf() * 1 .0j) * (__builtin_inf() + __builtin_inf() * 1 .0j))) == -1 ); // expected-error {{static assertion}} \
81+ // expected-note {{produces a NaN}}
7982static_assert (__builtin_isinf_sign(__real__((__builtin_inf() + 1 .0j) / (1.0 + 1 .0j))) == 1 );
80- static_assert (__builtin_isinf_sign(__imag__(1.0 + (__builtin_inf() * 1 .0j) / (1.0 + 1 .0j))) == 1 );
81- static_assert (__builtin_isinf_sign(__imag__((__builtin_inf() + __builtin_inf() * 1 .0j) / (1.0 + 1 .0j))) == 1 );
83+ static_assert (__builtin_isinf_sign(__imag__(1.0 + (__builtin_inf() * 1 .0j) / (1.0 + 1 .0j))) == 1 ); // expected-error {{static assertion}} \
84+ // expected-note {{produces a NaN}}
85+ static_assert (__builtin_isinf_sign(__imag__((__builtin_inf() + __builtin_inf() * 1 .0j) / (1.0 + 1 .0j))) == 1 ); // expected-error {{static assertion}} \
86+ // expected-note {{produces a NaN}}
8287static_assert (__builtin_isinf_sign(__real__((__builtin_inf() + 1 .0j) / 1.0 )) == 1 );
83- static_assert (__builtin_isinf_sign(__imag__(1.0 + (__builtin_inf() * 1 .0j) / 1.0 )) == 1 );
84- static_assert (__builtin_isinf_sign(__imag__((__builtin_inf() + __builtin_inf() * 1 .0j) / 1.0 )) == 1 );
85-
88+ static_assert (__builtin_isinf_sign(__imag__(1.0 + (__builtin_inf() * 1 .0j) / 1.0 )) == 1 ); // expected-error {{static assertion}} \
89+ // expected-note {{produces a NaN}}
90+ static_assert (__builtin_isinf_sign(__imag__((__builtin_inf() + __builtin_inf() * 1 .0j) / 1.0 )) == 1 ); // expected-error {{static assertion}} \
91+ // expected-note {{produces a NaN}}
8692static_assert (((1.0 + 1 .0j) / (__builtin_inf() + 1 .0j)) == (0.0 + 0 .0j));
87- static_assert (((1.0 + 1 .0j) / (1.0 + __builtin_inf() * 1 .0j)) == (0.0 + 0 .0j));
88- static_assert (((1.0 + 1 .0j) / (__builtin_inf() + __builtin_inf() * 1 .0j)) == (0.0 + 0 .0j));
93+ static_assert (((1.0 + 1 .0j) / (1.0 + __builtin_inf() * 1 .0j)) == (0.0 + 0 .0j)); // expected-error {{static assertion}} \
94+ // expected-note {{produces a NaN}}
95+ static_assert (((1.0 + 1 .0j) / (__builtin_inf() + __builtin_inf() * 1 .0j)) == (0.0 + 0 .0j)); // expected-error {{static assertion}} \
96+ // expected-note {{produces a NaN}}
8997static_assert (((1.0 + 1 .0j) / __builtin_inf()) == (0.0 + 0 .0j));
90-
98+ static_assert (1 .0j / 0.0 == 1 ); // expected-error {{static assertion}} \
99+ // expected-note {{division by zero}}
91100static_assert (__builtin_isinf_sign(__real__((1.0 + 1 .0j) / (0.0 + 0 .0j))) == 1 );
92- static_assert (__builtin_isinf_sign(__real__((1.0 + 1 .0j) / 0.0 )) == 1 );
93-
101+ static_assert (__builtin_isinf_sign(__real__((1.0 + 1 .0j) / 0.0 )) == 1 ); // expected-error {{static assertion}} \
102+ // expected-note {{division by zero}}
94103static_assert (__builtin_isinf_sign(__real__((__builtin_inf() + 1 .0j) / (0.0 + 0 .0j))) == 1 );
95- static_assert (__builtin_isinf_sign(__imag__((1.0 + __builtin_inf() * 1 .0j) / (0.0 + 0 .0j))) == 1 );
96- static_assert (__builtin_isinf_sign(__imag__((__builtin_inf() + __builtin_inf() * 1 .0j) / (0.0 + 0 .0j))) == 1 );
97- static_assert (__builtin_isinf_sign(__real__((__builtin_inf() + 1 .0j) / 0.0 )) == 1 );
98- static_assert (__builtin_isinf_sign(__imag__((1.0 + __builtin_inf() * 1 .0j) / 0.0 )) == 1 );
99- static_assert (__builtin_isinf_sign(__imag__((__builtin_inf() + __builtin_inf() * 1 .0j) / 0.0 )) == 1 );
104+ static_assert (__builtin_isinf_sign(__imag__((1.0 + __builtin_inf() * 1 .0j) / (0.0 + 0 .0j))) == 1 ); // expected-error {{static assertion}} \
105+ // expected-note {{produces a NaN}}
106+ static_assert (__builtin_isinf_sign(__imag__((__builtin_inf() + __builtin_inf() * 1 .0j) / (0.0 + 0 .0j))) == 1 ); // expected-error {{static assertion}} \
107+ // expected-note {{produces a NaN}}
108+ static_assert (__builtin_isinf_sign(__real__((__builtin_inf() + 1 .0j) / 0.0 )) == 1 ); // expected-error {{static assertion}} \
109+ // expected-note {{division by zero}}
110+ static_assert (__builtin_isinf_sign(__imag__((1.0 + __builtin_inf() * 1 .0j) / 0.0 )) == 1 ); // expected-error {{static assertion}} \
111+ // expected-note {{produces a NaN}}
112+ static_assert (__builtin_isinf_sign(__imag__((__builtin_inf() + __builtin_inf() * 1 .0j) / 0.0 )) == 1 ); // expected-error {{static assertion}} \
113+ // expected-note {{produces a NaN}}
114+
0 commit comments