Paul.Zimmermann at inria.fr
Mon Dec 16 22:23:37 UTC 2013
it would make sense that mpn_set_str requires that the space allocated at RP
contains at least:
a = the exact number of limbs needed to store the input number,
or b = the number of limbs needed to store the maximal possible input number
of base BASE with STRSIZE chars, i.e., BASE^STRSIZE-1,
where of course a <= b.
The bug is that in some cases, the required space is even b + 1!
For example on a 64-bit computer with BASE=3 and STRSIZE=1815 limbs,
mpn_set_str might require up to 46 limbs, whereas 3^1815-1 has 45 limbs only.
As a consequence, it is not possible to know how much space needs to be
allocated at RP before calling mpn_set_str.
More information about the gmp-bugs