lua-users home
lua-l archive

Re: largest number possible?

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


On 06/13/2014 04:15 PM, Mayuresh Kathe wrote:
> hello,
>
> i wrote the following snippet (my first attempt at lua code);
> -- power generator begin
> function power(n)
> local x = 2
> for i = 2, n do
> x = x * 2
> end
> return x
> end
>
> print(power(1024))
> -- power generator end
>
> i ran it with 'lua52 square.lua' which gave me an output of "inf".
>
> is there any way to find out the largest number lua can handle?
>
> thanks,
>
> ~mayuresh
>
>
By default Lua uses C's "double" for its number type. On most platforms
it is going to be a 64-bit binary IEEE754 floating point number. As
already pointed out by Luiz, in that case it is about
1.797693134862315708145274237317043567981e+308.
However in some exceptional cases Lua might be compiled with integer
arithmetic instead, and then the largest value will be of a different
nature.
Here's a snippet that should work with both overflowing (signed int,
unsigned int), and saturated (single, double), both sign-bit and 2's
complement arithmetics:
 local x = 1.0
 while x * 4 > x * 2 do
 x = x * 2
 end
 if x * 4 < x * 2 then
 x = x * 2
 end
 local d = x / 2
 while x + d ~= x do
 if x + d > x and x + d + d ~= x + d then
 x = x + d
 end
 d = d / 2
 end
 print(x)
To test it with 5.3's integers change 1.0 to 1 and / to //

AltStyle によって変換されたページ (->オリジナル) /