
On 2 April 2010 13:43, Chad Nelson <chad.thecomfychair@gmail.com> wrote:
Yes, by that definition it's definitely a number. But it's not a *countable* number, which is the definition that I was using. :-) In relation to the XInt library, I'd say that an infinity value should also be counted as a not-a-number, in that an is_nan function should return true for it
Well, iirc some infinities are countable and others are not, but... I think is_nan(Inf) should be false, but is_finite(Inf) should also be false.
it's not something that can be calculated with, generally.
[...]
If I don't add an infinity value, I could. I'm leaning toward adding one (with sign), but it will act exactly like a NaN except for comparisons.
Actually, you *can* calculate with infinity. That's the reason for having it separate from NaN, and why it needs a sign. Any operation with NaN gives a NaN, but at least the following for Infs don't give NaNs (for any x, y where is_finite(x) && !is_nan(y)): -(Inf) => -Inf -(-Inf) => Inf x + Inf => Inf x - Inf => -Inf x % Inf => x Inf + Inf => Inf -Inf - Inf => -Inf x < Inf => true x > -Inf => true y <= Inf => true y >= -Inf => true x / Inf => 0 x / -Inf => 0 if (y != 0) y * Inf => sign(y)Inf if (y != 0) y * -Inf => sign(-y)Inf But the indeterminate forms do, of course, give NaNs: Inf - Inf => NaN -Inf + Inf => NaN 0 * Inf => NaN 0 * -Inf => NaN Inf / Inf => NaN Inf / -Inf => NaN Inf % y => NaN Hopefully that'll make you lean further :P