Version 1.3.4:
Exchange %ebx,%ebp in powmod64().
Set CONST_EMPTY_SLOT in hashtable.h to use a constant value to mark empty
 hashtable slots. This requires one extra 16-bit register/constant comparison
 in lookup(), but avoids a 64-bit register/memory comparison when the slot is
 in fact empty. A 3% gain for P2/P3 machines, 1% for the P4.

Version 1.3.3: (Posted 31 October 2006)
When range is complete write the number of factors found to sr5sieve.log.

Version 1.3.2: (Posted 28 October 2006)
Save the factor count to the checkpoint file so that status line reports
 total factors found since the start of the current range. Thanks `tnerual'
 for the suggestion.

Version 1.3.1: (Posted 24 October 2006)
Assembler powmod64() for i586.
Check whether -ckb^n is a quintic residue.

Version 1.3.0: (Posted 20 October 2006)
Check whether -ckb^n is a cubic or quartic residue before adding k*b^n+c to
 the BSGS list.
Assembler powmod64() for i686 (just hand tweaking of the GCC output).
Removed redundant SUBSEQ[].mcount field when not debugging.
Allow sieving with p < 2^32 provided p is greater than the greatest k value.
 (pmin is automatically increased to kmax+1 with a warning if necessary).
Ensure that the number of baby steps cannot exceed maximum hash table size.

Version 1.2.7: (Posted 20 October 2006)
Compute (p/2)%m instead of [p%(2*m)]/2 in setup64().
Added -r and -s command line switches to read SoB.dat and riesel.dat when
 compiled with BASE=2.

Version 1.2.6: (Posted 1 October 2006)
Fixed yet another division by zero, this one in progress_report() occurs if
 more than one factor is found per millisecond. Thanks to Micha for
 reporting this bug.
Removed a redundant call to fill_bits() in prime_sieve().
Added memset_fast32() to replace memset() in prime_sieve() and make_bitmap().

Version 1.2.5: (Posted 28 September 2006)
Fixed an array bound bug introduced in version 1.2.4. Only affected GCC 3.4,
 and then only when sr5data.txt contained more than 320 sequences.
Fixed a division by zero in print_status() that occurs in versions 1.2.[34]
 if a factor is found before one calendar second has elapsed. Thanks to
 Carlos for reporting this bug.

Version 1.2.4: (Posted 27 September 2006)
Use uint_fast32_t type for bitmap words. This should give ideal results on
 both 32-bit and 64-bit machines.
Error instead of warning if there is a problem writing to the factors file.
Write all warning and error messages to the log file.
Added code for i386 to avoid computing some 64->32 remainders (which require
 a library call) by computing some extra 32->32 remainders (which can be
 done inline). However the gain is slight, 0.5% at best.

Version 1.2.3: (Posted 25 September 2006)
Precompute Legendre(-ckb^n,p) for each sequence k*b^n+c and store the
 positive results in a bitmap. This increases memory use and initialisation
 time significantly, but also increases throughput by 3-12% depending on
 machine (3% for P4/Celeron, 8% for Katmai P3, 12% for Coppermine P3).
Print some progress messages during the initialisation step.
Use non-scrolling output for progress reports.

Version 1.2.2: (Posted 17 September 2006)
Variable sized local arrays are slower with GCC 3.4, faster with other GCC
 versions. Use fixed size local arrays when compiling with GCC 3.4.

Version 1.2.1: (Posted 13 September 2006)
Reduce HASH_MAX_DENSITY from 0.8 to 0.65.
setup64() routine now efficiently handles sequences with both odd and even n.

Version 1.2.0: (Posted 10 September 2006)
For each sequence k*5^n+c, check whether -ck (or -5ck if n is odd) is a
 quadratic residue with respect to p. If not, don't apply BSGS to this
 sequence for p. This increases throughput by 28% on my P3.

Version 1.1.6:
Use uniformly sized bitmaps for each subsequence so .m_low and .m_high
 fields are no longer needed.
Removed unnecessary sequence .type field.

Version 1.1.5: (Posted 6 September 2006)
New invmod32_64() function taken from Jason Papadopoulos's Msieve 1.10
 results in a 10% speedup on my P3.
Removed unused mod64(), addmod64(), submod64() functions.

Version 1.1.4: (Posted 3 September 2006)
Uncommented changes to assembler verions of memset32_8() which were
 accidentally left commented out in version 1.1.3.
Take advantage of the fact that all our sequences k*b^n+c have c=+/-1 to
 save one mulmod when computing -c/k (mod p).

Version 1.1.3: (Posted 1 September 2006)
Relaxed asm constraints on i386 memset32_8(). Added x86-64 version.
Small improvement to powmod64() saves one mulmod per call.
Removed unused sieve_high variable.
Use invmod32_64(a,p) instead of invmod64(a,p), gives 10% speedup on my P3.

Version 1.1.2: (Posted 27 August 2006)
Removed unused lmod64().
Unrolled clear_hashtable() loop, optimising seperately for 32 or 64 bit
 machines, with inline assembler version for i386 (about 5% faster on P3).

Version 1.1.1: (Posted 12 August 2006)
Adjusted the formula for choosing b^Q to favour slightly lower Q. sieving in
 base 5^60 is a little faster than in base 5^240 with the current (309
 sequences) sr5data.txt.

Version 1.1.0: (Posted 9 August 2006)
Changed the way that Q is chosen for sieving in base b^Q, uses the same
 method as srsieve 0.4.1 allowing more Q values to be considered.

Version 1.0.1:
Added ARCH=k8 entry in Makefile.
Removed unused remaining_terms variable.
Changed pre2_mulmod64_init() to make use of stack created by mod64_init().

Version 1.0.0: (Posted 28 July 2006)
Split from srsieve source archive srsieve-0.3.13.tar.gz.
Made many variables into compile-time constants.
Removed sections of the code that never get used, e.g. 32 bit arithmetic.
