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