Version 0.1.24: (Posted 26 June 2006)
--twin sieves for twin primes.

Version 0.1.23:
If the order of b is found in the baby steps then skip the giant steps.

Version 0.1.22:
Added support for NewPGen type 19 and 20 sieve files (b^n+k, b^n-k) when
 using --newpgen or --prp. LLR version 3.7.0 can read these formats, but PRP
 version 24.14 can't (it incorrectly tests k*b^n+/-1 instead of b^n+/-k).
NOTE NEW FILE NAMES: A NewPGen type T sieve for K*B^n+/-1 or B^n+/-K is now
 written to file t<T>_b<B>_k<K>.npg with --newpgen or to file t<T>_b<B>.prp
 with --prp. T is one of 16,17,19,20.
If k=1 then the sequence k*b^n+c can be written as b^n+c.
Increased the small sieve limit proportional to the sieve range (nmax-nmin).
 This should greatly improve the sieve speed for very small p whan starting
 a large new sieve.

Version 0.1.21: (Posted 22 June 2006)
Added PPC assembler versions of mulmod and powmod supplied by Mark Rodenkirch.
Re-arranged the Makefile so that extra CFLAGS can be passed on the make
 command line, e.g. 'make CFLAGS=-O3' just adds -O3 to the other flags
 instead of replacing them.

Version 0.1.20: (Posted 20 June 2006)
Set prime sieve limits at runtime so all primes up to p_max can be generated.
If --pmax is not specified, then default to p_min + 4 trillion.
Use bitmaps instead of byte arrays in prime sieve.
Made the reporting period independent of the sieve block size.
Command line arguments can be given in exponential notation, 1e6=1000000 etc.
--hashtable X now limits the maximum hashtable density to X (default 0.8).
 (Use lower densities to increase hashtable size).
Actual hashtable density and size is reported when --verbose is used.

Version 0.1.19: (Posted 17 June 2006)
Leave small prime terms in the sieve.
--no-base prevents base-specific mulmods being used.

Version 0.1.18: (Posted 14 June 2006)
Much improved hashtable code. When SHORT_HASHTABLE=1 the number of baby
 steps is limited to 2^15-1, which allows the memory used in both the main
 table and overflow list to be halved. References to the overflow list are
 avoided unless there is a collision. All this helps to keep the main table
 in cache longer, resulting in speedups on my P4 of about 60% for larger
 sieves and 5-10% for small sieves. For very large sieves a warning is given
 that it may be best to recompile with SHORT_HASHTABLE=0.
Hashtable size is reported when the --verbose switch is specified.
Reduced prime sieve block sizes as large blocks don't seem to gain anything.

Version 0.1.17:
Delete the checkpoint file if the sieving job is complete.
Fixed a potential bug in the assembler version of mulmod64() present since
 it was inlined in version 0.0.15. GCC could have re-ordered mulmod64() to
 put it before mod64_init() or after mod64_fini(). I don't think this ever
 actually happened in any released version of srsieve, as it would probably
 have been caught by 'make check'.

Version 0.1.16:
Added base specific mulmods for bases 2 and 3. There are probably gains to
 be had for other small bases too, I will add them if requested.

Version 0.1.15: (Posted 7 June 2006)
Added base five specific functions mul5mod32(a,p) and mul5mod64(a,p). They
 are employed in the baby steps only. The 32/64 bit base 5 sieve is approx.
 30%/10% faster than the general sieve on my P3, and 40%/30% faster on my P4.

Version 0.1.14: (Posted 6 June 2006)
Implemented pre2_mulmod64(a,b,p) which uses a pre-computed value of b/p held
 on the FPU stack. This is exploited in bsgs() where b/p is constant through
 the baby steps and (with a different b) the giant steps, resulting in a
 small speedup for the 64 bit sieve. (About 7% on my P3/450 for 20 sequences
 over 50K < n < 150K, perhaps a little more for larger sieves).

Version 0.1.13: (Posted 3 June 2006)
Added srfile --delete option to delete a sequence from the sieve.
Only report the total number of terms removed with srfile --known-factors
 unless --verbose is also specified.

Version 0.1.12: (Posted 2 June 2006)
Added --abcd switch to write a multiple header ABCD format sieve file.
Added --checkpoint switch which causes a one line checkpoint.txt file
 contining the current sieve prime to be written, and causes srsieve to
 resume sieving from checkpoint.txt if it exists. If both --checkpoint and
 --factors are given then no sieve file will be written unless explicitly
 requested. This will be useful when the input sieve is very large.

Version 0.1.11: (Posted 1 June 2006)
Allow blank lines and comments in input files. Lines with all whitespace
 characters or whose first non-whitespace character is '#' are ignored.
Report the line number where the error occured in input error reports.

Version 0.1.10: (Posted 30 May 2006)
Converted printf/scanf formats to use macros in <inttypes.h> for
 compatibility with mingw32.

Version 0.1.9:
Avoid using alarms, poll every time p increases by 1 million instead.
Misc other changes to compile cleanly with the Debian mingw32 cross compiler.

Version 0.1.8:
Added config.h option HAVE_ALARMS and code for systems that don't have them.

Version 0.1.7: (Posted 29 May 2006)
Avoid excessive memory use when writing sorted --prp or --pfgw files.
Rewrite of the generic C mulmod64() based on simpler code by Phil Carmody. I
 expect it to be better suited to non-x86 architectures.
Define limits for a,b,p along with the definition of mulmod64(a,b,p).

Version 0.1.6: (Posted 27 May 2006)
Minimised MAX_PRIMES_IN_TABLE in sieve.c to avoid unnecessary memory use,
 and fixed an array bounds bug and a bug that caused some small primes to be
 sieved twice.
Made USE_PRIME_SIEVE the default, define USE_PP_SIEVE to use the old
 probable prime code instead.

Version 0.1.5: (Posted 26 May 2006)
Reverted to original default sieve file format, as pfgw can't parse multiple
 header ABC files, only ABCD files, and these are not nice for hand editing.
Don't report each individual NewPGen file written unless --verbose is used.
Removed gcd functions from arithmetic.h as they are not critical.

Version 0.1.4: (Posted 25 May 2006)
Makefile option USE_PRIME_SIEVE uses Mark Rodenkirch's sieve code in sieve.c
 instead of the probable prime code, now in pp_sieve.c.

Version 0.1.3:
Allow c in k*b^n+c to be any number relatively prime to b and k, not just
 +1,-1.
Added --pfgw option to write the sieve in a format (abc, sorted by n)
 suitable for input to pfgw, as the --newpgen and --prp formats do not allow
 k*b^n+c with c other than +1,-1. Updated srfile to match.
Write a multiple-header abc format sieve file by default. This format is
 almost identical to the old srsieve format but can be read by pfgw and maybe
 other programs. Old format can still be read, but will not be written.

Version 0.1.2:
Put inline assembler functions in files asm-<architecture>-<compiler>.h.

Version 0.1.1: (Posted 22 May 2006)
Fixed a potential bug in the GCC assembler version of mulmod32 (it could
 only strike if explicitly invoked as mulmod32(a,b,b) which didn't happen).
Assembler versions of submod32/64().

Version 0.1.0:
Translated mulmod62() from assembler to C, GMP no longer required.
Removed sqrmod(a,p) as GCC generates the same code from inline mulmod(a,a,p).

Version 0.0.15: (Posted 18 May 2006)
Inlined the mulmod62() assembler for GCC, this speeds up the 64 bit sieve by
 about 5% on my P3/450.
Run 'make check' to perform two simple tests of the srsieve binary.

Version 0.0.14:
Changed "%ju" back to "%llu" in printf()/scanf().
--pmin was being ignored when starting a new sieve.

Version 0.0.13: (Posted 15 May 2006)
Allow command line --pmin to override pmin from input files.
Prefix underscores to global labels when compiling for Cygwin (define
 NEED_UNDERSCORE in config.h for other machines that need this) Thanks to
 Greenbank for fixing this.
Alternative millisec_clock() function for machines lacking getrusage().

Version 0.0.12: (Posted 13 May 2006)
Report the rate at which factors are being found (seconds per factor).
--stop-rate X stops sieving when the rate reaches X seconds per factor.
Added a new program srfile for converting between file formats and removing
 factors, other functions will be added later. Not well tested yet.

Version 0.0.11:
Fixed an incorrect assertation (j == count) in write_prp_file().
Replaced "%llu" with "%ju" which should work with 32 and 64 bit systems.
Included a .zip verison of the source archive as well as .tar.gz
Added MD5SUM.txt and README.txt for the yahoo directory.

Version 0.0.10: (Posted 10 May 2006)
If every term of a sequence is eliminated then the sequence is removed from
 the sieve. If there are no more sequences left then the program ends. These
 events are logged in srsieve.log.

Version 0.0.9: (Posted 9 May 2006)
The previous bug fix didn't work in all cases, fixed now.

Version 0.0.8: (Posted 8 May 2006)
Fixed a bug where composite p might have a common factor with k.
Removed --benchmark, it is too simplistic to be accurate.

Version 0.0.7:
Inlined the mulmod32() assembler for GCC, thanks to Anand Nair for his help
with this, it speeds up the 32 bit sieve by about 10% on my P3/450.
Removed powmod32.S as the C version is just as fast with mulmod32() inline.
Inlined common cases for insert() and lookup().
--hashtable allows a larger hashtable to be used.

Version 0.0.6: (Posted 6 May 2006)
--prp writes the sieve as two files suitable as input to PRP (sorted by n).
Simplified giant steps for the common case of p large relative to (nmax-nmin).
Fully buffer the factors file when p is small.
--babystep adjusts the ratio of baby steps to giant steps.

Version 0.0.5: (Posted 4 May 2006)
Added i386 assembler versions of mulmod32(), powmod32() and mulmod64() (now
 mulmod62()) supplied by Mark Rodenkirch. On my P3/450 mulmod32/62 are twice
 and five times faster respectively compared to the C/GMP versions.
Added a --benchmark command line option to time some critical functions.
Added --duplicates and --order options to help with debugging and tuning.

Version 0.0.4: (Posted 2 May 2006)
Added a missing bitmap sentinal bit to prevent a segfault caused by an
 unbounded next_bit(). Thanks to Mark Rodenkirch for spotting this bug.
Added a compile option BSGS_HASH to select a hash function as the residue
 modulo a prime or (Mark Rodenkirch's suggestion) modulo a power of 2.
 The latter seems to be faster.
--report R makes a simple timing report (p/cpu.sec) every R seconds.
Block signals while writing save files.

Version 0.0.3: (Posted 1 May 2006).
Added a more compact save file format, in addition to the NewPGen
 one-candidate-sequence-per-file format.
Use next_prime() instead of getprime(), which takes too long to initialise
 at large pmin. next_prime() needs tuning (or rewriting).

Version 0.0.2:
GMP (mpn) arithmetic for primes above 2^32. This is just a temporary measure
 until proper 64 bit arithmetic is implemented.
Simple signal handling to write save files and screen progress reports.
Hashtable only stores indices into an existing array of data, not the data
 itself.

Version 0.0.1: (Posted 27 April 2006).
Baby steps giant steps algorithm seems to work.
