Whoops , found this old email on my other computer :(
If there are any other emails that I should of have answered please repost them.
Thanks
Jason
--
You received this message because you are subscribed to the Google Groups
"mpir-devel" group.
To post to this group, send email to mpir-devel@googlegroups.com.
To unsubscribe from this group, send email to
mpir-devel+unsubscr...@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/mpir-devel?hl=en.
--- Begin Message ---
MPIR-2.5.1 bug
#include <stdio.h>
#include <stdlib.h>
#include <gmp.h>
int main(int argc, char *argv[])
{
// Demonstrates a MPIR bug probably with mpz_mul
//
// Need a computer with at least 60G of memory
//
// % foo
// 3^(2^36) mod 3 equals 0
// 3^(2^37) mod 3 does NOT equal 0 - Error
unsigned long p;
unsigned long e=68719476736; // 2^36
mpz_t pp, b;
p = 3; // bug does not happen with p = 2
mpz_init(pp);
mpz_init(b);
// p^(2^36)
mpz_ui_pow_ui(pp,p,e);
// p^(2^36) mod p
mpz_mod_ui(b,pp,p);
printf("%d^(2^36) mod %d ", p, p);
if (mpz_cmp_ui(b,0) == 0) {
printf("equals 0\n");
} else {
printf("does NOT equal 0 - Error\n");
exit(0);
}
fflush(stdout);
// square - (p^(2^36))^2 = p^(2^37)
mpz_mul(pp,pp,pp);
// p^(2^37) mod p
mpz_mod_ui(b,pp,p);
printf("%d^(2^37) mod %d ", p, p);
if (mpz_cmp_ui(b,0) == 0) {
printf("equals 0\n");
} else {
printf("does NOT equal 0 - Error\n");
exit(0);
}
fflush(stdout);
}
--
Kate Minola
--- End Message ---