[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: Slightly weird request about numbers
- From: Duck <duck@...>
- Date: Tue, 24 Jul 2007 21:35:15 +1000 (EST)
Is there a "built-in" C number type (even if it isn't proper ANSI C, and
is some kind of gcc extension weirdness) which is big enough, or which is
arranged in such a way, that I can easily rebuila Lua with this as my
intrinsic representation of number, can still enjoy the fruits of floating
point, yet still have more than 64 bits of integer accuracy under Windows
and Linux under both 32-bit and 64-bit OSes.
Actually, I think I mean 65 bits, as I want to be able to do addition and
subtraction of any two 64-bit integers, signed _or_ unsigned, and get the
correct result. Actually, I probably mean 66 bits :) What do I mean? I
want to be able to add and subtract correctly _all_pairs of numbers which
I might get out of 8 bytes, regardless of whether I have an S64 and a U64,
or a U64 and a U64, or an S64 and an S64.
Is this easy to do with a (non-standard) build of (standard) Lua and
libraries? I don't care about the numbers mapping directly into Intel
registers. Performance is only very mildly important.
I'm not very good at floating point, but IIRC the IEEE "long double"
(80-bit "doubles") can only represent integers exactly with absolute
values up to 2^63.
A truly general-purpose "bigint" system is not necessary, but I don't mind
doing it that way if I can still use "regular" Lua code and libraries.
I have explained this terribly badly, but am still hoping someone will [a]
understand and [b] have a "change these 5 lines in luaconf.h and rebuild"
answer for me.