[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Yet another question about LUA_NUMBER
- From: Bogdan Marinescu <bogdan.marinescu@...>
- Date: Tue, 1 Feb 2005 13:30:13 +0200
That's so weird. I did what you suggested and this time factorial
worked. When I said "it failed", I meant that I was getting an output
similar to this (I can't remember the precise format):
-1.IND#! = -1.IND#-
-1.IND#! = -1.IND#
-1.IND#! = -1.IND#
-1.IND#! = -1.IND#
.......................... (repeated 17 times)
But now I compiled it again, with the same configration, and it
works !? And I really don't remember changing anything else. Weird.
Well, thanks anyway.
Bogdan M.
On Tue, 1 Feb 2005 12:19:04 +0100, Mike Pall <mikelu-0502@mike.de> wrote:
> Hi,
>
> Bogdan Marinescu wrote:
> > Sorry if this was answered before, I was unable to find the answer
> > in the archives. I wonder what is the relation between LUA_NUMBER and
> > LUA_UACNUMBER.
>
> LUA_UACNUMBER should be set to the 'usual argument conversion' for
> LUA_NUMBER. Unfortunately C performs some implicit typecasts when passing
> arguments. The common case is that floats get promoted to doubles.
> And this is the only case to really worry about (you can't use chars or
> shorts anyway). In all other cases use: #define LUA_UACNUMBER LUA_NUMBER
>
> > I tried to compile a LUA integer version on Win32, and
> > it worked when I defined LUA_NUMBER as "long" and LUA_UACNUMBER as
> > "long long".
>
> This does not do what you want. When you want 32 bit numbers define
> LUA_NUMBER to 'int' on 32 bit or 64 bit platforms and to 'long' on
> 16 bit platforms ('long' is possible on 32 bit platforms, too).
>
> > When I defined both LUA_NUMBER and LUA_UACNUMBER as
> > "long", the factorial test (test/factorial.lua) failed.
>
> That's because 16! = 20922789888000 and this number does not fit in 32 bit.
> The highest factorial that should work is 12! = 479001600. I.e. the behaviour
> is expected (silent overflow).
>
> BTW: I think we should put up a Wiki page that lists all possibilities for
> setting LUA_NUMBER and what defines you have to tweak depending on
> the Lua version. Any volunteers?
>
> Bye,
> Mike
>
--
Bogdan