When is min(a, b) != min(b, a)?
steve at REMOVE-THIS-cybersource.com.au
Fri Jan 25 00:40:34 CET 2008
On Thu, 24 Jan 2008 13:34:56 +0000, Antoon Pardon wrote:
> On 2008-01-21, Steven D'Aprano <steven at REMOVE.THIS.cybersource.com.au>
>> On Sun, 20 Jan 2008 21:15:02 -0600, Albert Hopkins wrote:
>> According to the IEEE-754 standard the usual trichotomy of "x is less
>> than y, x is equal to y, or x is greater than y" has to be extended to
>> include "x and y are unordered". Comparisons with NaNs are unordered,
>> and so expressions like "x < nan" should signal an exception.
> That doesn't follow. The problem is not that x < nan returns False
> because that is correct since x isn't smaller than nan.
Comparisons between things which are not comparable risk being terribly
misleading, and depend very much on how you define "less than" and
"greater than". If you insist that everything must have a boolean yes/no
answer ("Does the colour red have a better chance of becoming President
than a kick to the head?") then False is not an entirely unreasonable
result to return.
But if you consider that having "x is not smaller than y" be equivalent
to "x is greater than or equal to y" is more important than forcing a
boolean answer in the first place, then you need something to signal
Undefined, and an exception is the right solution unless you have multi-
valued logic system (True, False, Maybe, Undefined, ...)
SANE (Standard Apple Numerics Environment) explicitly states that it
signals an exception when doing ordered comparisons against NaNs because
to return False would be misleading. Apple went on to use the same rule
in their PowerPC Numerics. That's straight out of the Zen: Practicality
More information about the Python-list