diff --git a/mpz/remove.c b/mpz/remove.c --- a/mpz/remove.c +++ b/mpz/remove.c @@ -23,7 +23,7 @@ unsigned long int mpz_remove (mpz_ptr dest, mpz_srcptr src, mpz_srcptr f) { - mpz_t fpow[40]; /* inexhaustible...until year 2020 or so */ + mpz_t fpow[GMP_LIMB_BITS]; /* Really MP_SIZE_T_BITS */ mpz_t x, rem; unsigned long int pwr; int p; @@ -69,7 +69,7 @@ mpz_set (dest, x); } - pwr = (1 << p) - 1; + pwr = (1L << p) - 1; mpz_clear (fpow[p]); diff --git a/mpz/remove.c b/mpz/remove.c --- a/mpz/remove.c +++ b/mpz/remove.c @@ -80,7 +80,7 @@ mpz_tdiv_qr (x, rem, dest, fpow[p]); if (SIZ (rem) == 0) { - pwr += 1 << p; + pwr += 1L << p; mpz_set (dest, x); } mpz_clear (fpow[p]);