[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: Re: Some small requests for the next release
- From: Rici Lake <lua@...>
- Date: Wed, 2 Mar 2005 13:15:47 -0500
On 2-Mar-05, at 12:28 PM, Roberto Ierusalimschy wrote:
What is wrong with the following code?
math.nan = 0/0
math.inf = 1/0
If you've compiled Lua with integer Numbers rather than floating point
ones, this will crash and burn, probably.
Is there any reason why anyone would use such library in that case?
If they haven't, then the assignment will crash and burn, which is not
However, I do tend to use "a" math library (called "math") even in
integer installs; it contains compatible integer implementations of the
non-floating point dependent math library standard functions (random,
min, max, mod, and a few others).
It is not clear to me under what circumstances you might actually want
to use a math.nan constant since you cannot actually compare it to
anything, but it would be useful to have the math.inf constants, even
with integer arithmetic. (They're convenient initial values for max and
min, for example).
With that sort of use case in mind, one could argue that math.infinity
(and possibly math.minusinfinity) might be useful additions to the
(specification of) a standard math library interface.
math.nan is rather a different category, though, since technically
math.nan ~= math.nan, which renders the whole thing somewhat academic.
On the other hand, if a nan had a boolean coercion to false, you could
write, for example:
a = assert(math.sqrt(x), "Negatives only have round roots")