mpz_mod inside loop

Paul Underwood paulunderwood at
Fri May 17 13:02:26 UTC 2019

> I suppressed one line which made my suggested shift-up solution hard to
> read.  Here is more complete code, with assignment of s:
>   unsigned long s = mpz_sizeinbase (a, 2);
>   mpz_mul_2exp (a, a, (GMP_NUMB_BITS - s) % GMP_NUMB_BITS);
> Of course, this is equivalent to (-s) % GMP_NUMB_BITS as GMP_NUMB_BITS
> divides GMP_NUMB_BITS...

Thanks for the change to my post. However, I am now finding the greatest efficiency by using GMP_NUMB_BITS/2 not just GMP_NUMB_BITS:

  unsigned long S = mpz_sizeinbase (n, 2);
  mpz_mul_2exp (align, n, (GMP_NUMB_BITS/2 - S) % GMP_NUMB_BITS/2);



More information about the gmp-discuss mailing list