## The Forum for Discussion about The Third Manifesto and Related Matters

Forum breadcrumbs - You are here:
The value `NaN` in the floating-point domain can be used as either (b) or (c); in principle, (a) is possible, but usually floats are in scientific applications where everything is either known or never going to be known.  In the interval interpretation of floats, a float f₁ represents the half-open interval [f₁ - (f₁ - f₀)/2, f1 + (f₂ - f₁)/2), where f₀ and f₂ are the floats just above and just below f, and +Inf and -Inf are the half-open intervals from the largest/smallest float to ±∞.  `NaN` represents the interval from -∞ to +∞, as in `1.0/0.0`, or else the null interval, as in `√ᵣ-2` where `√ᵣ` is the real-valued square root, so it truly is a floating-point value rather than a "mark".
However, it is off the real number line, because every affirmative comparison operator (`= < > ≤ ≥`) involving `NaN` returns false.  Thus `1 < NaN` is false, `-5 >= NaN` is false, and in particular `NaN = NaN` is false.  This means that `<` is no longer the negation of `>=` and likewise in all similar cases, which is a bit messy, but could be made easier by adding operators `≠ </ >/ ≤/ ≥/`.  This is done because we do not want to assert that `1.0/0.0 =``√ᵣ-2` is true.