D float types operations vs C++ ones
anonymous via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu Dec 17 05:42:42 PST 2015
On 17.12.2015 12:50, drug wrote:
> I have two implementation of the same algorithm - D and C++ (that is
> port of D version). I assume that running these implementations on the
> same data should give the same results from both. But with some data the
> results differ (5th decimal digit after point). For my purpose it isn't
> important and I can ignore this difference. But I'd like to have the
> same results totally (I mean bit to bit) to easy maintanence of the
> implementations. Question is - can I rely that D and C++ float types
> operations should give the same result because D and C are similar or no
> and I should use more portable way and compare floats with some epsilon?
D explicitly allows compilers to use greater precision in calculations
than the involved types have [1]. For example, an expression involving
`float`s may be evaluated at double or real precision.
That means, you cannot rely on getting the same results even when
looking only at D. Compiler A may produce higher precision code than
compiler B; or machine X offers a larger maximum precision than machine
Y (and the compiler makes use of it).
[1] http://dlang.org/spec/float.html
More information about the Digitalmars-d-learn
mailing list