http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57675

--- Comment #2 from joseph at codesourcery dot com <joseph at codesourcery dot 
com> ---
N1399 has a detailed analysis of issues with complex multiply and divide 
in C99.  There was no consensus to adopt requirements in that detail, but 
N1496 was adopted with a more minimal fix for (1.0+1.0*I)/(0.0+NAN*I).  It 
appears that the GCC implementation does not suffer the particular issue 
being addressed in N1496.

http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1399.txt
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1496.htm

I believe the model in N1399 (and more generally for NaNs in C99/C11 and 
the draft TS 18661 bindings to IEEE 754-2008; see e.g. how hypot(NaN, Inf) 
works) is that NaN+1.0i is considered (for a quiet NaN) to be 
<unspecified-real>+1.0i.  Dividing by zero then gives an unspecified (or 
not fully specified) infinity, so a result with one part infinity and one 
part NaN seems appropriate.

Reply via email to