http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48760
--- Comment #7 from John Maddock <john at johnmaddock dot co.uk> 2011-04-25 17:21:15 UTC --- Sorry to be dumb, but doesn't the result of the C code violate section G.5.2 in C99 - which is to say that no matter what the value of the imaginary part of an expression, it never changes the real part - even if that is a NaN?