Bill Allombert on Tue, 4 Mar 2003 16:14:33 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: znstar() bug (gmp kernel) |
On Mon, Mar 03, 2003 at 01:57:18AM -0500, Igor Schein wrote: > Hi, > > > GP/PARI CALCULATOR Version 2.2.6 (development CHANGES-1.685) > i686 running linux (ix86/GMP-4.1 kernel) 32-bit version -- debugging > (readline v4.3 enabled, extended help available) > > ? znstar(35962368471727496841722887); > *** impossible assignment I-->S > > I coudn't reproduce it without gmp or on Solaris. Well spotted! You found the only line in Gerhart code that assume that integers are MSW! Here the patch (commited to CVS). Index: src/basemath/ifactor1.c =================================================================== RCS file: /home/megrez/cvsroot/pari/src/basemath/ifactor1.c,v retrieving revision 1.46 diff -u -r1.46 ifactor1.c --- src/basemath/ifactor1.c 2003/02/08 18:03:35 1.46 +++ src/basemath/ifactor1.c 2003/03/04 15:05:55 @@ -2087,10 +2087,10 @@ if (cmpis(n,5) <= 0) return NULL; /* input n <= 5 */ #ifdef LONG_IS_64BIT - if (tf > 3 || (tf == 3 && bfffo((ulong)n[2]) < 5)) /* n too large */ + if (tf > 3 || (tf == 3 && bfffo(int_MSW(n)) < 5)) /* n too large */ return NULL; #else /* 32 bits */ - if (tf > 4 || (tf == 4 && bfffo((ulong)n[2]) < 5)) /* n too large */ + if (tf > 4 || (tf == 4 && bfffo(int_MSW(n)) < 5)) /* n too large */ return NULL; #endif /* now we have 5 < n < 2^59 */ Cheers, Bill