[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: SNFS and gmp bug
From: |
Torbjorn Granlund |
Subject: |
Re: SNFS and gmp bug |
Date: |
27 Mar 2001 01:42:35 +0200 |
User-agent: |
Gnus/5.0807 (Gnus v5.8.7) Emacs/20.6 |
Jens Franke <address@hidden> writes:
$ cat x.c
#include <stdio.h>
#include <gmp.h>
main()
{
mpz_t x,N,rr,y;
mpz_init(x);
mpz_init(N);
mpz_init(rr);
mpz_init(y);
mpz_inp_str(x,stdin,10);
mpz_inp_str(N,stdin,10);
mpz_gcdext(rr,y,NULL,x,N);
}
$ gcc -o x x.c -lgmp
$ cat bugfile
1376177246773041037567202945557067112486428557423284805151165973753892404485721574866941
1806071196721149809296924480256219259370353533364363232400360209368572527961593852120901376184060934969941
$ x < bugfile
Abgebrochen
$ gcc -v
Reading specs from /usr/lib/gcc-lib/i486-linux/egcs-2.91.66/specs
gcc version egcs-2.91.66 19990314 (egcs-1.1.2 release)
This is indeed a real bug. I am very surprised it has remained
unnoticed for such a long time. I believed our random number testing
would have cought it by now. Your operands must be very special in
some way.
2001-03-26 Torbjorn Granlund <address@hidden>
* mpn/generic/gcdext.c: Handle carry overflow after m*n multiply code
in both arms. Partially combine multiply arms.
Index: gcdext.c
===================================================================
RCS file: /home/cvsfiles/gmp/mpn/generic/gcdext.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -c -1 -r1.19 -r1.20
*** gcdext.c 2001/01/02 08:22:24 1.19
--- gcdext.c 2001/03/26 18:58:42 1.20
***************
*** 442,450 ****
}
- if (qh != 0)
- {
- mp_limb_t cy;
- cy = mpn_add_n (tp + qsize, tp + qsize, s1p, ssize);
- if (cy != 0)
- abort ();
- }
}
--- 442,443 ----
***************
*** 459,470 ****
}
! if (qh != 0)
{
! mp_limb_t cy;
! cy = mpn_add_n (tp + qsize, tp + qsize, s1p, ssize);
! if (cy != 0)
! {
! tp[qsize + ssize] = cy;
! s1p[qsize + ssize] = 0;
! ssize++;
! }
}
--- 452,463 ----
}
! }
! if (qh != 0)
! {
! mp_limb_t cy;
! cy = mpn_add_n (tp + qsize, tp + qsize, s1p, ssize);
! if (cy != 0)
{
! tp[qsize + ssize] = cy;
! s1p[qsize + ssize] = 0;
! ssize++;
}
--
Torbjörn
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: SNFS and gmp bug,
Torbjorn Granlund <=