D float types operations vs C++ ones

Nicholas Wilson via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Dec 17 18:58:18 PST 2015


On Thursday, 17 December 2015 at 13:30:11 UTC, drug wrote:
> On 17.12.2015 16:09, Nicholas Wilson wrote:
>>[...]
> Thanks for answer. My C++ version is tracing D version so 
> commutativity and distributivity aren't requred because order 
> of operations is the same (I guess so at least), so I hoped for 
> bit to bit equality (it simplifies comparing serialized data). 
> But I found that error between D and C++ versions grows if more 
> data processed so I should investigate it anyway.

What I mean about order of operations is that if you go
  a = b*a+c*c + e;
the compiler is free to rewrite that as
float __tmp0 = a*b;
float __tmp1 = c*c;
and then do either of
float __tmp2 = __tmp0+__tmp1;
a = __tmp2 + e;
OR
float __tmp2 = __tmp0+e;
a = __tmp2+__tmp1;


More information about the Digitalmars-d-learn mailing list