Always false float comparisons
Tobias Müller via Digitalmars-d
digitalmars-d at puremagic.com
Fri May 20 05:32:40 PDT 2016
On Friday, 20 May 2016 at 06:12:44 UTC, Walter Bright wrote:
> On 5/19/2016 1:26 PM, Timon Gehr wrote:
>> Those two lines producing different results is unexpected,
>> because you are
>> explicitly saying that y is a double, and the first line also
>> does implicit
>> rounding (probably -- on all compilers and targets that will
>> be relevant in the
>> near future -- to double).
> > [...]
>> It's obviously bad language design on multiple levels.
>
> Floating point semantics simply are not that simple, on any
> compiler, language or hardware. I recommend reading what the
> C/C++ Standards say about it, and look at the plethora of
> compiler switches for VC++/g++/clang++.
>
> The people who design these things are not fools, and there are
> good reasons for the way things are.
>
> Sorry, I don't agree.
Let me cite Prof. John L Gustafson from his Book "The End of
Error" (it's worth reading):
---
The lesson taught by all these attempts at clever hidden
scratchpad work is that computer users want *consistent* answers,
and want to be *permitted the trade-of between speed and
accuracy* depending on the situation. There is a subtle arrogance
in any computer system that takes the position "You asked for a
quick, cheap, approximate calculation, but I know what is good
for you and will instead do a better job even if it takes more
time and storage and energy and gives you a different answer.
You're welcome."
---
More information about the Digitalmars-d
mailing list