Gerhard Niklasch on Sat, 1 Aug 1998 17:45:43 +0200 (MET DST) |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
3E12 != 3E-12, I hope. :) |
The patchlet below (against 2.0.11.beta) fixes the following: ---8<--- (15:20) gp > 1E3 %14 = 1000.000000000000000000000000 (15:20) gp > 1E-12 %15 = 9.999999999999999999999999999 E-13 (15:20) gp > 1E3 %16 = 0.0009999999999999999999999999999 --->8--- which may or may not have bitten you, depending on O/S, compiler and C libraries. (I saw it on Linux with gcc, but not on Solaris with gcc, neither on Solaris PCs nor on Solaris Sparcs. It's always the one-liner and two-liner bugs that cause the largest amount of gray/torn hair...) Cheers, Gerhard PS Another patch for mpqs.c to follow shortly; whilst removing a rare file descriptor leak I had inadvertently introduced another not-so-rare one, so that 2.0.11.beta's gp as distributed will not factor more than about 250 numbers with MPQS before running out of fd's on many systems. (The larger the numbers you are trying to factor, the less often this will happen: if you're testing it on 100-digit numbers, you probably wouldn't have noticed a problem by the time 2.0.12 comes out. ;^). PPS Monolith services seem to be down at the minute, so the pari.home.ml.org website may be unreachable under that name for a little while. The long form http://hasse.mathematik.tu-muenchen.de/ntsw/pari/ ought to work as usual. bash$ diff -u src/language/anal.c.orig src/language/anal.c --- src/language/anal.c.orig Sat Aug 1 17:27:38 1998 +++ src/language/anal.c Sat Aug 1 17:29:19 1998 @@ -1481,11 +1481,11 @@ case 'E': case 'e': { char *old = analyseur; - int plus; + int plus = 1; switch(*++analyseur) { case '-': plus=0; analyseur++; break; - case '+': plus=1; analyseur++; + case '+': analyseur++; } m = number(&nb); if (plus) n += m; else n -= m; if (nb > 8) err(talker2,"exponent too large: ",old,mark.start);