Sorting floating-point values, and NaN
Walter Bright
newshound2 at digitalmars.com
Tue Nov 12 12:39:38 PST 2013
On 11/12/2013 12:24 PM, Andrei Alexandrescu wrote:
> You're young. I guarantee you were to hit NaN whether or not D had anything to
> do with it.
I want to add that NaN has been a reality on x86 machines since about 1983. C
(and C++) compilers for decades have utterly ignored its existence - but that
didn't make it go away. It just meant that things like the fp functions in the
Standard library exhibited undefined behavior with NaNs, which is far worse than
at least having sensible documented behavior.
The C compilers I wrote (and C++) always made an effort to handle NaN correctly
(and overflows, underflows, and subnormals), and I often felt that I was the
only one who cared about it :-)
What D does is simply recognize that NaNs are an inevitable characteristic of
the floating point hardware, and deal with them in the most straightforward
manner practical. Deciding and documenting what .sort should do with NaNs is
part of that. Trying to pretend that NaNs aren't a fact of life with IEEE
floating point hardware is not going to work.
Note:
http://dlang.org/phobos/std_math.html#.exp
and how the behavior with NaN arguments is all carefully documented.
More information about the Digitalmars-d
mailing list