Author: boemmels
Date: Sun Apr 17 10:08:45 2005
New Revision: 7858

Modified:
   trunk/config/auto/gmp.pl
   trunk/config/auto/gmp/gmp.in
Log:
Fix gmp detection on 64bit architectures:
Calculate the 13th Mersenne-Prime 2^521-1. This
is big enough to not fit into any register


Modified: trunk/config/auto/gmp.pl
==============================================================================
--- trunk/config/auto/gmp.pl    (original)
+++ trunk/config/auto/gmp.pl    Sun Apr 17 10:08:45 2005
@@ -55,7 +55,7 @@
     my $has_gmp = 0;
     if (! $@) {
        my $test = cc_run();
-       if ($test eq "499999500000 0\n") {
+       if ($test eq 
"6864797660130609714981900799081393217269435300143305409394463459185543183397656052122559640661454554977296311391480858037121987999716643812574028291115057151
 0\n") {
             $has_gmp = 1;
            print " (yes) " if $verbose;
             $Configure::Step::result = 'yes';

Modified: trunk/config/auto/gmp/gmp.in
==============================================================================
--- trunk/config/auto/gmp/gmp.in        (original)
+++ trunk/config/auto/gmp/gmp.in        Sun Apr 17 10:08:45 2005
@@ -7,21 +7,17 @@
 
 int main(int argc, char *argv[])
 {
-    mpz_t i, j, k;
+    mpz_t prime;
     char *s; int y;
 
-    mpz_init(i);
-    mpz_set_si(i, 999999);
-    mpz_init(j);
-    mpz_set_si(j, 1000000);
-    mpz_init(k);
-    mpz_mul(k, i, j);
-    mpz_set_si(i, 2);
-    mpz_div(k, k, i);
+    /* Calculate the 13th Mersenne prime 2^521 - 1 */
+    mpz_init(prime);
+    mpz_ui_pow_ui(prime, 2, 521);
+    mpz_sub_ui(prime, prime, 1);
 
-    y = mpz_fits_slong_p(k);
+    y = mpz_fits_slong_p(prime);
 
-    s = mpz_get_str(NULL, 10, k);
+    s = mpz_get_str(NULL, 10, prime);
     printf("%s %d\n", s, y);
     free(s);
     return 0;

Reply via email to