bug in t-perfpow for mingw64
Torbjorn Granlund
tg at gmplib.org
Mon Sep 13 18:21:46 CEST 2010
Alexander Maly <a.a.maly at gmail.com> writes:
gmp-5.0.1 "Current performance release"
Test program is tests/mpz/t-perfpow.c in the source tree.
It reports "n was destroyed, but perfpow_p still believes n is a perfect
power".
N is really the perfect power. What is wrong - when function 'check_random'
tries to "destroy" n,
that is to make powers for primes to be with gcd=1, it calls internal
function 'mpn_gcd_1', giving it (as the first argument) pointer to the
variable g, that is defined to be unsigned long int. But mpn_gcd_1 requies a
pointer to the mp_limb_t, that is 64-bit wide. So I guess in mingw64 long is
32-bit wide, that is quite unusual for 64-bit ABI. Correcting the variable g
type definition to mp_limb_t makes the test pass well.
Please try the patch from the status section of the GMP webpage:
http://gmplib.org:8000/gmp-5.0/raw-rev/794410151f5f
--
Torbjörn
More information about the gmp-bugs
mailing list