How large are arbitrarily large integers? (Was Re: Bitfield subtlety)

paul zimmermann Paul.Zimmermann at inria.fr
Fri Mar 30 13:01:10 UTC 2018


> For some reason, I also limited the choices so that either 8 or 16 bits
> are added to the _mp_size field.  That might give a small speedup in
> some cases, perhaps, but the result is that only one balanced
> possibility  remain:
> 
> b = 2
> manstissa bits = 10
> exponent bits = 6
> 
> Let's abbreviate this as (2,10,6).
> 
> This gives an allocation range of almost 2^73 limbs, which is of course
> silly, but (2,11,5) would result in just the range 2^42 limbs.

another possibility is the "unum" type, where some bits are used to define
how many bits are used for the significand and exponent:

https://en.m.wikipedia.org/wiki/Unum_(number_format)

In the limit of unum, you could use only 1 extra bit, say for a 31-bit type
(thus with 30 remaining bits):

1) if 0, the 30 bits are interpreted as a size between 0 and 2^30-1
2) if 1, the 30	bits are split into say 24 significand bits and 6
   exponent bits, which would be enough up to 2^87 with an overhead of
   less than 1e-6

Paul


More information about the gmp-devel mailing list