------- Comment #13 from jan at epgmod dot phys dot tue dot nl  2010-02-17 
22:54 -------
(In reply to comment #10)
> Regarding the specific semantics, Richard, there is little to say: we want the
> C99 semantics, by and large. Maybe there are some missing details, but we
> decided already that, when we switched the complex multiplication to be the
> slow, C99 annex, by default. Thus, in a first, and second too, approx, the C++
> standard doesn't count, really, this is just, sketched:
> 
>    __complex__ double val;
>    double d;
>    val *= d;
> 
But the point in question is that gcc *does not implement Annex G-4.1 (item 2)
correctly*. That clearly states that u*(x+iy) = (ux)+i(uy), whereas gcc does
(u+0i)*(x+iy), leading to wrongly signed zeros. The patch fixes exactly that
(for C++) by circumventing gcc's flawed implementation of mixed arithmetic
involving C99's complex type.

Paolo, Richard, thank you for your time and patience. In view of the above, I
hope you reconsider this issue. 

PS: could you (or Gabriel dos Reis, if he reads this) also comment on the last
bullit of my original message (From the C++0x working draft...)? As indicated,
the standard differs from what libstdc++ implements.

Thank you in advance


-- 


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

Reply via email to