Even on a 64-bit system it seems that the exp argument of mpz_pow_ui cannot be 2^32 or larger. To prove this really is a 64-bit build, first n is successfully set to 2^32. The second code block tries to calculate 2^(2^32) but apparently calculates 2^0 instead.
Is this intended or a bug? ~~~ mpir_ui two32 = 65536ULL * 65536; mpz_t n; mpz_init(n); mpz_init_set_ui(n, two32); // correctly prints: init_set_ui 4294967296 10 printf("init_set_ui %zd %zd\r\n", two32, mpz_sizeinbase(n, 10)); mpz_set_ui(n, 2); mpz_pow_ui(n, n, two32); // because 2^0 equals 1 this prints: mpz_pow_ui 4294967296 1 printf("mpz_pow_ui %zd %zd\r\n", two32, mpz_sizeinbase(n, 10)); ~~~ -- You received this message because you are subscribed to the Google Groups "mpir-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to mpir-devel+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/mpir-devel/CAB8Mfh0XroFTd_%3Dc5O6HDteS9KE9mCMsTnny9jSd%3DyJFZxejRA%40mail.gmail.com.