2007-01-28  Brian Gough  <bjg@network-theory.co.uk>

	* knuthran2002.c: added revised version from 9th printing

2007-01-04  Brian Gough  <bjg@network-theory.co.uk>

	* default.c (gsl_rng_env_setup): send newline to stderr not stdout

2006-04-13  Brian Gough  <bjg@network-theory.co.uk>

	* default.c (gsl_rng_env_setup): print a newline after list of
	generators in error message

2006-03-16  Brian Gough  <bjg@network-theory.co.uk>

	* test.c (main): added taus2 test

2006-02-19  Brian Gough  <bjg@network-theory.co.uk>

	* rng.c: added note about why range=max-min not max-min+1

2005-12-16  Brian Gough  <bjg@network-theory.co.uk>

	* rng.c (gsl_rng_uniform_int): catch the case n = 0 and return an
	error

2003-07-23  Brian Gough  <bjg@network-theory.co.uk>

	* file.c: added fwrite/fread functions

2003-06-12  Brian Gough  <bjg@network-theory.co.uk>

	* Makefile.am: removed benchmark programs from default build

2003-06-02  Brian Gough  <bjg@network-theory.co.uk>

	* waterman14.c: increased RAND_MIN to 1

	* lecuyer21.c: corrections to RAND_MIN, RAND_MAX, floating point
	denominator and seeding modulus

	* fishman20.c (ran_get): use schrage multiplication to avoid
	overflow

	* coveyou.c: corrected value of RAND_MIN to 1 and RAND_MAX to 2^32-1

	* borosh13.c: increased RAND_MIN to 1

	* knuthran2.c (ran_get): use schrage multiplication to avoid
	overflow in intermediate results

	* fishman2x.c (ran_get): use schrage multiplication to avoid
	overflow in intermediate results

	* fishman18.c (ran_get): use schrage multiplication to avoid
	overflow in intermediate results

	* schrage.c (schrage): utility functions for multiplication of
	long integers

	* test.c (main): updated incorrect test values for
	gsl_rng_fishman18 gsl_rng_fishman2x gsl_rng_knuthran2

Mon Nov 25 19:27:10 2002  Brian Gough  <bjg@network-theory.co.uk>

	* taus.c (taus2_set): fixed bug in seeding for s3 (test should be
 	for s3<16, not s3<8)

Sun Nov  3 14:40:43 2002  Brian Gough  <bjg@network-theory.co.uk>

	* taus.c (taus2_set): fixed bug in seeding for s2 < 8

Mon Jun 17 21:04:10 2002  Brian Gough  <bjg@network-theory.co.uk>

	* mt.c (mt_set): ensure state counter mti is initialised by
 	seeding routine

Wed May 29 21:52:11 2002  Brian Gough  <bjg@network-theory.co.uk>

	* randu.c: removed unused variable m

Tue May  7 22:34:52 2002  Brian Gough  <bjg@network-theory.co.uk>

	* mt.c (mt_1999_set): updated seeding procedure according to new
 	release of MT19937 from the original authors.

Fri Apr 26 21:17:05 2002  Brian Gough  <bjg@network-theory.co.uk>

	* taus.c (taus2_set): added alternate seeding procedure as
 	described in erratum to P.L'Ecuyer's paper.

Wed Apr 17 19:37:49 2002  Brian Gough  <bjg@network-theory.co.uk>

	* test.c (main): added missing test for gsl_rng_mt19937_1998

	* gsl_rng.h: added missing declaration for gsl_rng_mt19937_1998

Sun Dec  2 15:45:24 2001  Brian Gough  <bjg@network-theory.co.uk>

	* Added new generators borosh13, coveyou, fishman18, fishman20,
 	fishman2x, knuthran, knuthran2, lecuyer21, waterman14 from Knuth's
 	Seminumerical Algorithms 3rd Ed.  Implemented by Carlo Perassi.

	* gfsr4.c (gfsr4_get_double): increased divisor for double to
 	2^32, avoids generating exact result of 1.0 as specified in the
 	documentation

Mon Sep  3 10:32:01 2001  Brian Gough  <bjg@network-theory.co.uk>

	* mt.c (mt_1998_set): renamed macro to avoid duplicate definition

Fri Aug 31 17:49:37 2001  Brian Gough  <bjg@network-theory.co.uk>

	* mt.c (mt_1998_set): added the original (buggy) MT19937 seeding
 	routine as mt19937_1998 for compatibility.

Wed May  2 15:35:38 2001  Brian Gough  <bjg@network-theory.co.uk>

	* ran1.c (ran1_get_double): use float constants for comparison
	for compatibility with original Numerical Recipes routines

	* ran2.c (ran2_get_double): ditto
	
Fri Apr 27 18:47:07 2001  Brian Gough  <bjg@network-theory.co.uk>

	* types.c (gsl_rng_types_setup): added void to make prototype
 	valid in ansi c

Mon Apr 16 20:03:07 2001  Brian Gough  <bjg@network-theory.co.uk>

	* default.c (gsl_rng_env_setup): removed spurious argument to
 	fprintf

Tue Jan 23 13:24:26 2001  Brian Gough  <bjg@network-theory.co.uk>

	* types.c (gsl_rng_types_setup): provide a function that returns a
 	list of all the generator types

	* default.c (gsl_rng_env_setup): get the list of generators from a
 	function rather than having a list in the code itself.  Display a
 	list of the valid generators if the user provides an incorrect one.

Fri Dec  8 20:30:58 2000  Brian Gough  <bjg@network-theory.co.uk>

	* ranlxs.c: renamed internal function ranlxs_set_impl to
 	ranlxs_set
	
	* ranlxd.c: renamed internal function ranlxd_set_impl to
 	ranlxd_set

	* ranlux.c: renamed internal function ranlux_set_impl to
 	ranlux_set

	* random.c: renamed internal function random_get_impl function to
 	random_get

Sat Jul 29 14:29:54 2000  Brian Gough  <bjg@network-theory.co.uk>

	* test.c (main): updated test value for MT19937 for new seeding
 	procedure

	* mt.c: The seeding procedure has been updated to match the 10/99
 	release of MT19937.

Wed Mar  8 16:04:34 2000  Brian Gough  <bjg@network-theory.co.uk>

	* rng.c (gsl_rng_memcpy): generators must now be of the same type
 	for a copy from one to the other to work.

Thu Feb 24 16:41:48 2000  Brian Gough  <bjg@network-theory.co.uk>

	* ran3.c (ran3_set): initialize unused zeroth element of state to
 	zero for consistency.

Mon Feb 14 13:28:26 2000  Brian Gough  <bjg@network-theory.co.uk>

	* made all internal functions static

Mon Dec  6 16:21:05 1999  Brian Gough  <bjg@network-theory.co.uk>

	* test.c (main): rewrote the tests to loop over all the generators

Wed Aug 11 20:57:10 1999  Brian Gough  <bjg@network-theory.co.uk>

	* ranlxd.c, ranlxs.c: added ranlxd and ranlxs, second generation
 	RANLUX generators from Martin Luescher.

Mon Mar  1 21:12:28 1999  Brian Gough  <bjg@netsci.freeserve.co.uk>

	* test.c (rng_parallel_state_test): added some extra tests to fill
 	a few holes in the net

	* gsl_rng.h: moved static class information (max, min, etc) out of
 	the instance data. Originally I avoided this because of the
 	overhead of the extra indirection (r->type->get vs r->get) for
 	every get function call, but that turns out to be only about 10%
 	at worst so it's worth the slight speed cost to make the code
 	safer.

Tue Nov 17 17:09:31 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* gfsr4.c: added #include <config.h> which was missing

1998-11-04    <bjg@ancho.lanl.gov>

	* ranf.c: fix portability problems on alpha, by ensuring that
	shorts are correctly promoted to longs at the appropriate points

	* rand48.c: fix portability problems by ensuring that shorts are
	correctly promoted to longs at the appropriate points

	* rng-dump.c (main): write out file correctly by using chars
	instead of unsigned long ints, since these can vary in size on
	different architectures

Wed Oct 28 15:02:22 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* rng.c: added #include <string.h> to get prototype for memcpy

Mon Sep 14 20:53:09 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* default.c (gsl_rng_env_setup): added gfsr4

1998-09-10  James Theiler  <jt@lanl.gov>

	* gfsr4.c: added new random number generator

	* Makefile.am: added gfsr4.c to SOURCES list

	* gsl_rng.h: added gfsr4

	* test.c: added gfsr4

	* benchmark.c: added gfsr4

Mon Aug 10 22:12:13 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* rng-dump.c: program to write out 3 million random numbers,
 	suitable for testing with DIEHARD.

Tue Aug  4 19:51:57 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* default.c (gsl_rng_env_setup): send default/enviroment output to
 	stderr

Mon Aug  3 18:25:52 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* mt.c: made constants static since they shouldn't be exported,
 	added some speed improvements from Cokus' code (not all of them
 	since they seemed to use more registers than available on the
 	pentium).

Thu Jul  9 13:56:20 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* slatec.c: renamed cmlib.c to slatec.c

	* transputer.c: renamed tds.c to transputer.c so the name is a bit
 	more obvious

	* random.c: renamed random0 functions to random8, since obviously
 	we can't have 0 bytes of state
	
	* default.c (gsl_rng_env_setup): made gsl_rng_mt19937 the default
 	generator

Wed Jul  8 17:06:54 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* added random() functions. There are three(!) versions: the
 	original BSD, linux libc5 (had a typo in the multiplier, but got
 	installed on millions of machines so is now a defacto standard)
 	and GNU glibc2 (fixes the typo and has an improved seeding
 	procedure)

Sun Jul  5 15:59:29 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* rand.c: renamed rand.c to cmlib.c and bsdrand.c to rand.c.

	* ranf.c: added CRAY RANF, 48 bit generator

	* rand48.c: added the standard unix rand48()

	* changed all the routines to allow an additional callback for
 	returning doubles. Now we can implement numerical recipes with its
 	non-standard checks on the floating point results and also access
 	the full state for getting 48-bit doubles out of rand48.
	
Sat Jul  4 11:14:49 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* ranmar.c: added the RANMAR generator

	* tds.c: added the INMOS Transputer RNG

	* test.c (rng_min_test): added a test for RAND_MIN, to make sure
 	none of the generators go below it. Statistically the test is not
 	much good since it's very unlikely that an off-by-one error would
 	show up unless we ran the test for > 4 billion numbers. However,
 	the test might detect a gross error like a typo in RAND_MIN or a
 	degeneracy 0,0,0,... for a multiplicative generator.

	* uni.c: fixed RAND_MAX here too

	* uni32.c: fixed RAND_MAX to m1-1, not m1 (since it's modulo m1 so
 	m1 can't occur, only m1-1)

Fri Jul  3 15:55:34 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* rng.c (gsl_rng_uniform_gt0_lt1): added a function which returns
 	numbers in the range (0,1), i.e. excluding 0.0 and 1.0

	* renamed bad_randu.c to randu.c

	* renamed bad_rand.c to bsdrand.c

Mon Jun 29 18:11:08 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* added implementations of the numerical recipes algorithms ran0,
 	ran1, ran2, ran3
	
Sun Jun 28 11:51:48 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* gsl_rng.h: added gsl_rng_uniform_pos which guarantees positive
 	numbers, (0,1]

	* added a RAND_MIN entry to the gsl_rng/gsl_rng_type structs

	* gsl_rng.h: renamed gsl_rng_get_uni to gsl_rng_uniform

Wed Jun 24 12:10:23 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* gsl_rng.h: added inline versions of gsl_rng_get and
 	gsl_rng_get_uni

	* benchmark.c: added a simple benchmark program to measure rng's
 	per second

	* test.c (N2): reduced the number of tests from 1 million to 100k
 	to speed things up a bit

	* changed the generic seeding algorithm to s -> (69069*s) &
 	0xFFFFFFFF which covers all 32 bits.

Sun Jun 21 23:24:36 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* added the MT19937 and TT880 mersenne prime generators

Sat Jun 20 13:58:40 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* ensured that 32 bit quantities are defined as 'long', as
 	required by ANSI. On a 16 bit platform 'int' is usually just 16
 	bits.
	
	* ranlux.c: added the RANLUX generator

Fri Jun 19 11:12:06 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* removed the gsl- prefix from generator name strings

Thu Jun 18 12:17:16 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* test.c: added a 10000 iteration check for cmrg

	* got rid of init_state values. It's simpler to generate them
 	directly from the seed, the cost of creating an rng is not usually
 	a big deal.
	
	* rng.c: eliminated the gsl_rng_internal struct since it was not
 	really necessary

Wed Jun 17 17:31:27 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* minstd.c: added Park and Millers MINSTD generator

Thu Jun 11 18:08:40 1998  Brian Gough  <bjg@vvv.lanl.gov>

	* this will be an alternate, thread-safe interface to the random
 	number generators.

