[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
**Subject**: **Re: Lua 5.3 work1 Considering math.isinteger or type()**
**From**: Jay Carlson <nop@...>
**Date**: Wed, 24 Jul 2013 19:53:29 -0400

On Jul 24, 2013, at 6:39 PM, Petite Abeille wrote:
> On Jul 17, 2013, at 10:10 AM, David Demelier <demelier.david@gmail.com> wrote:
>
>> I just hope that one of these 2 solutions will be approved and added
>> for the final Lua 5.3
>
> What about neither?
>
> Out of curiosity… as the 46 (and counting) messages in this thread haven't made it very clear, at least to me… why do we even care if a number is an integer, float, real, double, whatnot? Isn't the purpose of that int vs. float dichotomy to be purely an implementation detail? Wholly transparent?
No. For some numbers n>0, n+1==n. For other numbers, n+1<0.
In general, you can't tell by static inspection what will happen when the "+" operator is used.
> And a number stays a number? Irrespectively of internal representation? Or?
Yes, numbers stay numbers. Sometimes their behavior between the maximum precise integral float (probably 2^53) and the maximum unsigned int interpreted as a 2s complement number (probably 2^63-1) may produce unexpectedly precise results compared to Lua 5.2. The behavior above that range is...well, not intuitive to me.
I would guess just about all integer-oriented Lua 5.2 code starts blowing up at around 2^53, since if n+1==n, then (n+1)-1~=n, etc etc etc.
OpenWrt does have a "transparent, except for the ability to precisely represent [2^53+1, 2^63-1]" patch.
Jay