Version 1.0.23:
Use VEC8_* and VEC16_* macros instead of VEC4_* macros in SSE2 code path.

Version 1.0.22: (Posted 17 April 2007)
Fixed a bad CPUID parameter in the non-intel cache detection code (cpu.c).

Version 1.0.21: (Posted 16 April 2007)
Let C16 point to the pre-computed list of candidates that survive the power
 residue tests rather than duplicating the list (bsgs.c).
Use VEC4_* macros instead of vec4_* inline functions.

Version 1.0.20: (Posted 7 April 2007)
New vec4_* functions to fill arrays 4 elements at a time in SSE2 code path.

Version 1.0.19: (Posted 27 March 2007)
Fixed `-C --cache-file' switch broken in version 1.0.14. Using `-c FILE'
 would have worked, but not `-C FILE' or `--cache-file FILE'.
Warn if output file cannot be opened instead of stopping with an error.

Version 1.0.18: (Posted 24 March 2007, source only)
Added missing definition of CPU_DIR_NAME for ppc64/Linux in cpu.c

Version 1.0.17: (Posted 20 March 2007, source only)
Fixed a problem with the source: end-of-line Makefile comments were not
 being stripped. Thanks Ed for finding this bug.

Version 1.0.16: (Posted 18 March 2007)
Fixed the cpuid cache size detection code on AMD machines. Thanks
 `Flatlander' for reporting this bug.

Version 1.0.15: (Posted 17 March 2007)
Replaced some 64-bit variables with 32-bit ones in the Sieve of Eratosthenes
 main sieving loop. Performance on 32-bit machines is a little better,
 hopefully not at a cost to 64-bit machines.
ppc64/Linux cache detection now checks directories in /proc/device-tree/cpus
 for cache size files and sets the cache size from the first one found.
Modified the Sieve of Eratosthenes to sieve just for primes p of the form
 p=1 (mod 2^y) with y chosen during initialisation. This is much more
 efficient for sieving Generalised Fermat sequences when p is large.
Fixed a bug that caused the L2 cache size given by the -L switch to be 1024
 times too large. Thanks `Flatlander' for reporting this.

Version 1.0.14: (Posted 15 March 2007)
Save output file whenever SIGUSR1 is received.
Detect L1/L2 data cache size using sysctl on ppc64/MacOS X. Thanks Alex for
 the code.
Detect L1/L2 data cache size by reading /proc on ppc64/Linux. Thanks Ed for
 the code.
Added SSE2 detection and a seperate SSE2 code path selectable at runtime.
 `--sse2' or `--no-sse2' can be used to override automatic detection.
Added Makefile targets x86-intel/x86-amd to create binaries that will run on
 any Pentium compatible, but with base code path tuned for Pentium2/Athlon
 and SSE2 code path tuned for Pentium4/Athlon64.
Changed `-c --cache FILE' switch to `-C --cache-file FILE' for consistency
 with sr5sieve.

Version 1.0.13: (Posted 9 March 2007)
Detect L1/L2 data cache size using cpuid instruction on x86/x86_64.

Version 1.0.12: (Posted 7 March 2007)
If no command line arguments are given, read them from a file called
 `sr1sieve-command-line.txt' if one exists in the current directory.
Report and log the number of found factors even if the range is not complete
 when the program is stopped.
Set LOG_STATS=1 to write some more detailed stats to the log file at the end
 of the run. (Also report them to the console when run with `-v --verbose').
Once a factor has been found, alternate status line between reporting ETA
 and factor rate.
Truncate the status line to 80 characters.

Version 1.0.11: (Posted 28 February 2007)
Replaced the huge switch in setup64() with an if-elif-else construct using a
 runtime-computed table. This may be slightly slower on some machines, but
 avoids the need for manually constructing the switch, which was tedious and
 susceptible to human error. It should now be possible to set a different
 value for POWER_RESIDUE_LCM without any other changes to the source.
Extended power residue tests to include 16-th powers (POWER_RESIDUE_LCM=720).
Added switches `-z --idle' to start at idle priority, the default, and
 `-Z --no-idle' to not alter the priority level.

Version 1.0.10:
Pre-compute addition ladders for each subsequence congruence table entry.
 Faster for most sequences, but slower for some lightweight sequences.

Version 1.0.9:
Decoupled the power residue test limit from the subsequence base exponent.
Extended power residue tests to include 9-th powers.
Replaced the power residue bitmaps with pre-computed tables indexing
 subsequences by parity and congruence class mod divisors of BASE_MULTIPLE.

Version 1.0.8: (Posted 14 February 2007)
After writing a new Legendre symbol cache file, immediately reload it (if
 HAVE_MMAP is set) to allow memory to be shared with other processes.
Set HAVE_MALLOPT=1 in config.h to reduce the threshold below which malloc()
 allocates blocks using anonymous mmap(). This reduces heap fragmentation
 during init and allows more memory to be released before the sieve starts.
If mmap() fails, warn and fall back to using malloc()/read() instead.

Version 1.0.7: (Posted 11 February 2007)
The short form `-s' command-line switch was being ignored. (The long form
 `--save' still worked). Thanks `Flatlander' for reporting this bug.
Added -l -L -H -Q command line switches.
Reduced HASH_MIN/MAX_DENSITY from 0.15-0.85 to 0.10-0.60
If not enough memory can be allocated to build pre-computed Legendre symbol
 lookup tables, compute the Legendre symbols while sieving instead.
When `-c FILE' switch is given, load Legendre symbol tables from FILE if it
 exists, or save the Legendre symbol tables to FILE if not.
Define HAVE_MMAP in config.h to load the legendre symbol tables from cache
 using mmap(), allowing multiple processes to share one copy of the tables.
 Unfortuntely mingw32 does not seem to have mmap().

Version 1.0.6: (Posted 8 February 2007)
Try to minimise the maximum hashtable density in the range 0.15 to 0.85,
 depending on L1_CACHE_SHIFT.
Added progress reporting while building the Legendre symbol lookup tables,
 as this can take a long time when core(k) is large.
If core(k)*core(b) is too large, compute the Legendre symbols as needed
 instead of generating a pre-computed lookup table. This allows any k up to
 2^63 to be sieved regardless of the value the squarefree part of k or b.
Added the -x command line switch to prevent the use of pre-computed lookup
 tables even when the squarefree part of k is small enough.

Version 1.0.5: (Posted 5 February 2007)
The sieve limit for ppc64 is 2^63 when using assembler mulmods, not 2^52.
Added an x86-64 assembler powmod (powmod-k8.S)
Use an addition ladder to fill the (1/b^d) (mod p) array. May be slower for
 some sequences. Set USE_SETUP_LADDER=0 in sr1sieve.h to disable.
Delay filling the 1/b^d (mod p) array until it is known that it is needed.
 Use the divisor pattern information to fill the array if the divisor is
 greater than the ladder efficiency.

Version 1.0.4: (Posted 25 January 2007)
Generalised to work with any NewPGen type 16 or 17 sieve file, i.e. any
 fixed-k sieve for k*b^n+/-1.
Added option to save the output sieve file, don't write a checkpoint file.
Recognise certain sequences of Generalised Fermat numbers.
Extended range of k to 1 < k < 2^64.
Renamed from rpssieve to sr1sieve.

Version 1.0.3:
L2 cache usage in prime_sieve() was double what it should have been. Fixed.

Version 1.0.2: (Posted 20 January 2007)
Added sieves for sequences 99*2^n-1 and 13*2^n-1.

Version 1.0.1: (Posted 15 January 2007)
Initial adaptation from 321sieve version 1.0.1 (sr5sieve version 1.4.19).
