Sorting floating-point values, and NaN

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Tue Nov 12 08:51:49 PST 2013


On 11/12/13 8:05 AM, Vladimir Panteleev wrote:
> On Tuesday, 12 November 2013 at 15:56:25 UTC, Andrei Alexandrescu wrote:
>> I think NaNs are singular unordered values that make invalid inputs
>> for either sort or isSorted. We should simply add an assert to isSorted.
>
> Considering their effect on the program state, NaNs can be seen as
> invalid input, and asserts are not suitable for input validation.

I should know, since I dedicated a chapter to the topic in TDPL :o). 
It's all a matter of boundaries, i.e. what you consider "input" and what 
you consider "precondition". When user code reads floating point data 
off of disk, they should do real validation. For isSorted we could say 
that the output is only defined for inputs that are comparable. Or 
indeed we could specify that isSorted throws if unordered data is 
presented, and verify everything at runtime, at a cost in efficiency. 
It's a judgment call, not a cut and dried decision. In this case I think 
assert is the better call.

Andrei



More information about the Digitalmars-d mailing list