With GMP 6.2.0 (Debian's package libgmp10:i386) on x86_64 in the 32-bit ABI, i.e. when compiling with -m32, I get the following error:
cventin:~> cat tst.c #include <stdio.h> #include <gmp.h> int main (void) { mpz_t z; mpz_init_set_ui (z, 17); mpz_mul_2exp (z, z, 0xffffffbc); printf ("OK\n"); mpz_add_ui (z, z, 1); return 0; } cventin:~> gcc -m32 tst.c -o tst -lgmp cventin:~> ./tst OK gmp: overflow in mpz type So the overflow occurs in "mpz_add_ui (z, z, 1);", though this operation doesn't need a larger mpz_t and could even be done in place: no carry occurs here, and note that a carry for a huge number is very unlikely to occur. -- Vincent Lefèvre <vinc...@vinc17.net> - Web: <https://www.vinc17.net/> 100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/> Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon) _______________________________________________ gmp-bugs mailing list gmp-bugs@gmplib.org https://gmplib.org/mailman/listinfo/gmp-bugs