
Chad Nelson wrote:
On 03/28/2010 02:37 PM, Jeffrey Lee Hellrung, Jr. wrote:
[...]
NaNs might have a valid use case to simply represent indeterminates, but it also might be convenient to guarantee that every xint::integer object actually represents an actual integer. Seems simpler (semantics, implementation) to just forego any NaN representation, and throw on operations that produce indeterminate, complex, or infinite results.
Which would defeat the primary purpose of the NaN value in the XInt library, which is to have something to return instead of throwing an exception when exceptions are blocked. :-)
If that's the purpose of your NaN, why limit your set of "special" values to just { NaN }, when under some circumstances returning some representation of infinity (or +infinity or -infinity if you make such a distinction) would be more informative? For example, you can make n/0 for n != 0 result in infinity, and 0/0 result in NaN.
By the same token, specific infinity values aren't needed either. The library will represent, exactly, any value that it can access enough memory for, and will throw an exception on any value with a greater magnitude than that.
What if "exceptions are blocked" in this case? Do you return an NaN here as well? - Jeff