| 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]); |