Hi,
developer!
I installed MinGW, then 'mingw-get install mingw32-gmp' , got the gmp 5.1.2
properly.
mpz_powm_ui () give a wrong calculation as below (compared and confirmed by
Python):
// 2^(c-1) = 1 mod c^2, c = ?
#include <stdio.h>
#include <time.h>
#include <gmp.h>
int main()
{ printf("hello, world! \n");
unsigned long long c = 10307e7 - 1; // change c,start point
printf("c reach %llu \n",c);
mpz_t a,b,d;
mpz_inits(a,b,d,NULL);
mpz_set_ui(a,2);
for (; ;c += 2)
{ if (c % 100000000 == 1)
{ printf("c reach %llu, %llu \n",c,(unsigned long long)time(NULL));
}
mpz_set_ui(b,c);
mpz_mul_ui(b,b,c);
mpz_powm_ui(d,a,c-1,b );
if (mpz_cmp_ui(d,1) == 0) // c = 1093,3511 are solutions. why
103079216179 ?
{ printf("found %llu \n",c);
return 0;
}
}
}
I saw a bug report for the mpz_powm_ui () in 5.1.1. from https://gmplib.org.
Regards,
shen lixing
2017/3/8
GNU Multiple Precision Arithmetic Library - gmplib<https://gmplib.org/>
gmplib.org
What is GMP? GMP is a free library for arbitrary precision arithmetic,
operating on signed integers, rational numbers, and floating-point numbers.
_______________________________________________
gmp-bugs mailing list
[email protected]
https://gmplib.org/mailman/listinfo/gmp-bugs