mini-gmp "bug" missing mpz_fits_sint_p / mpz_fits_uint_p
Marco Bodrato
bodrato at mail.dm.unipi.it
Mon Apr 20 13:25:54 UTC 2020
Ciao,
Il 2020-04-20 11:08 Vincent Lefevre ha scritto:
> I think that in general, you should not write code that depends on
> whether INT_MAX + INT_MIN == 0 or not (the constant INT_MAX + INT_MIN
> might be useful in some rare cases, but I think that testing whether
> this constant is 0 or not should be forbidden). This can mean that
Forbidden? Really! :-D
Anyway, using the numerical constant INT_MAX + INT_MIN is a good idea.
What about the following version of the function? :-D
int
mpz_fits_sint_p (const mpz_t u)
{
return mpz_cmpabs_ui (u, (unsigned long) INT_MAX + (unsigned long)
(u->_mp_size < 0 ? -(INT_MAX + INT_MIN) : 0)) <= 0;
}
By the way, jokes apart, Niels is right: we do not need to optimise this
function.
Please Niels, choose the implementation you prefer and change also
mpz_fits_slong_p accordingly.
Ĝis,
m
More information about the gmp-devel
mailing list