Re: Big Integer Atoms
- Posted by "Carl R. White" <euphoria at cyreksoft.yorks.com> Jul 12, 2004
- 595 views
Igor Kachan wrote: > > Hi, dear Euphorians, > > The EU manual says: > > "... Those declared with type integer must be atoms > with integer values from -1073741824 to +1073741823 > inclusive. > You can perform exact calculations on larger integer > values, up to about 15 decimal digits, but declare > them as atom, rather than integer ..." > > This "up to about 15 decimal digits" seems to be not > enough concrete thing for some cases. > > Couldn't someone tell me about more precise > bounds of these "larger integer values"? The IEEE 64-bit floating point number, known to us as the Euphoria atom, is made up from one sign bit, ten exponent bits, and 53 mantissa bits. This means (IIRC) that you can accurately represent all the integers from -power(2^53) to +power(2,53) (-9007199254740992 to 9007199254740992). The fact that power(2,53) is representable is a bit of a fluke as the last bit of its binary representation isn't stored (54 bits are needed, yet it is stored in 53). You can prove it with this little bit of code:
atom x x = power(2,53)-100 while x != x + 1 do ? x x += 1 end while
It looks like it loops forever (a number is never equal to one more than itself), but it actually stops at the largest representable integer. -- [ Carl R White == aka () = The Domain of Cyrek = ] [ Cyrek the Illogical /\ www.cyreksoft.yorks.com ]