1 2007-01-28 Brian Gough <bjg@network-theory.co.uk>
3 * knuthran2002.c: added revised version from 9th printing
5 2007-01-04 Brian Gough <bjg@network-theory.co.uk>
7 * default.c (gsl_rng_env_setup): send newline to stderr not stdout
9 2006-04-13 Brian Gough <bjg@network-theory.co.uk>
11 * default.c (gsl_rng_env_setup): print a newline after list of
12 generators in error message
14 2006-03-16 Brian Gough <bjg@network-theory.co.uk>
16 * test.c (main): added taus2 test
18 2006-02-19 Brian Gough <bjg@network-theory.co.uk>
20 * rng.c: added note about why range=max-min not max-min+1
22 2005-12-16 Brian Gough <bjg@network-theory.co.uk>
24 * rng.c (gsl_rng_uniform_int): catch the case n = 0 and return an
27 2003-07-23 Brian Gough <bjg@network-theory.co.uk>
29 * file.c: added fwrite/fread functions
31 2003-06-12 Brian Gough <bjg@network-theory.co.uk>
33 * Makefile.am: removed benchmark programs from default build
35 2003-06-02 Brian Gough <bjg@network-theory.co.uk>
37 * waterman14.c: increased RAND_MIN to 1
39 * lecuyer21.c: corrections to RAND_MIN, RAND_MAX, floating point
40 denominator and seeding modulus
42 * fishman20.c (ran_get): use schrage multiplication to avoid
45 * coveyou.c: corrected value of RAND_MIN to 1 and RAND_MAX to 2^32-1
47 * borosh13.c: increased RAND_MIN to 1
49 * knuthran2.c (ran_get): use schrage multiplication to avoid
50 overflow in intermediate results
52 * fishman2x.c (ran_get): use schrage multiplication to avoid
53 overflow in intermediate results
55 * fishman18.c (ran_get): use schrage multiplication to avoid
56 overflow in intermediate results
58 * schrage.c (schrage): utility functions for multiplication of
61 * test.c (main): updated incorrect test values for
62 gsl_rng_fishman18 gsl_rng_fishman2x gsl_rng_knuthran2
64 Mon Nov 25 19:27:10 2002 Brian Gough <bjg@network-theory.co.uk>
66 * taus.c (taus2_set): fixed bug in seeding for s3 (test should be
69 Sun Nov 3 14:40:43 2002 Brian Gough <bjg@network-theory.co.uk>
71 * taus.c (taus2_set): fixed bug in seeding for s2 < 8
73 Mon Jun 17 21:04:10 2002 Brian Gough <bjg@network-theory.co.uk>
75 * mt.c (mt_set): ensure state counter mti is initialised by
78 Wed May 29 21:52:11 2002 Brian Gough <bjg@network-theory.co.uk>
80 * randu.c: removed unused variable m
82 Tue May 7 22:34:52 2002 Brian Gough <bjg@network-theory.co.uk>
84 * mt.c (mt_1999_set): updated seeding procedure according to new
85 release of MT19937 from the original authors.
87 Fri Apr 26 21:17:05 2002 Brian Gough <bjg@network-theory.co.uk>
89 * taus.c (taus2_set): added alternate seeding procedure as
90 described in erratum to P.L'Ecuyer's paper.
92 Wed Apr 17 19:37:49 2002 Brian Gough <bjg@network-theory.co.uk>
94 * test.c (main): added missing test for gsl_rng_mt19937_1998
96 * gsl_rng.h: added missing declaration for gsl_rng_mt19937_1998
98 Sun Dec 2 15:45:24 2001 Brian Gough <bjg@network-theory.co.uk>
100 * Added new generators borosh13, coveyou, fishman18, fishman20,
101 fishman2x, knuthran, knuthran2, lecuyer21, waterman14 from Knuth's
102 Seminumerical Algorithms 3rd Ed. Implemented by Carlo Perassi.
104 * gfsr4.c (gfsr4_get_double): increased divisor for double to
105 2^32, avoids generating exact result of 1.0 as specified in the
108 Mon Sep 3 10:32:01 2001 Brian Gough <bjg@network-theory.co.uk>
110 * mt.c (mt_1998_set): renamed macro to avoid duplicate definition
112 Fri Aug 31 17:49:37 2001 Brian Gough <bjg@network-theory.co.uk>
114 * mt.c (mt_1998_set): added the original (buggy) MT19937 seeding
115 routine as mt19937_1998 for compatibility.
117 Wed May 2 15:35:38 2001 Brian Gough <bjg@network-theory.co.uk>
119 * ran1.c (ran1_get_double): use float constants for comparison
120 for compatibility with original Numerical Recipes routines
122 * ran2.c (ran2_get_double): ditto
124 Fri Apr 27 18:47:07 2001 Brian Gough <bjg@network-theory.co.uk>
126 * types.c (gsl_rng_types_setup): added void to make prototype
129 Mon Apr 16 20:03:07 2001 Brian Gough <bjg@network-theory.co.uk>
131 * default.c (gsl_rng_env_setup): removed spurious argument to
134 Tue Jan 23 13:24:26 2001 Brian Gough <bjg@network-theory.co.uk>
136 * types.c (gsl_rng_types_setup): provide a function that returns a
137 list of all the generator types
139 * default.c (gsl_rng_env_setup): get the list of generators from a
140 function rather than having a list in the code itself. Display a
141 list of the valid generators if the user provides an incorrect one.
143 Fri Dec 8 20:30:58 2000 Brian Gough <bjg@network-theory.co.uk>
145 * ranlxs.c: renamed internal function ranlxs_set_impl to
148 * ranlxd.c: renamed internal function ranlxd_set_impl to
151 * ranlux.c: renamed internal function ranlux_set_impl to
154 * random.c: renamed internal function random_get_impl function to
157 Sat Jul 29 14:29:54 2000 Brian Gough <bjg@network-theory.co.uk>
159 * test.c (main): updated test value for MT19937 for new seeding
162 * mt.c: The seeding procedure has been updated to match the 10/99
165 Wed Mar 8 16:04:34 2000 Brian Gough <bjg@network-theory.co.uk>
167 * rng.c (gsl_rng_memcpy): generators must now be of the same type
168 for a copy from one to the other to work.
170 Thu Feb 24 16:41:48 2000 Brian Gough <bjg@network-theory.co.uk>
172 * ran3.c (ran3_set): initialize unused zeroth element of state to
173 zero for consistency.
175 Mon Feb 14 13:28:26 2000 Brian Gough <bjg@network-theory.co.uk>
177 * made all internal functions static
179 Mon Dec 6 16:21:05 1999 Brian Gough <bjg@network-theory.co.uk>
181 * test.c (main): rewrote the tests to loop over all the generators
183 Wed Aug 11 20:57:10 1999 Brian Gough <bjg@network-theory.co.uk>
185 * ranlxd.c, ranlxs.c: added ranlxd and ranlxs, second generation
186 RANLUX generators from Martin Luescher.
188 Mon Mar 1 21:12:28 1999 Brian Gough <bjg@netsci.freeserve.co.uk>
190 * test.c (rng_parallel_state_test): added some extra tests to fill
191 a few holes in the net
193 * gsl_rng.h: moved static class information (max, min, etc) out of
194 the instance data. Originally I avoided this because of the
195 overhead of the extra indirection (r->type->get vs r->get) for
196 every get function call, but that turns out to be only about 10%
197 at worst so it's worth the slight speed cost to make the code
200 Tue Nov 17 17:09:31 1998 Brian Gough <bjg@vvv.lanl.gov>
202 * gfsr4.c: added #include <config.h> which was missing
204 1998-11-04 <bjg@ancho.lanl.gov>
206 * ranf.c: fix portability problems on alpha, by ensuring that
207 shorts are correctly promoted to longs at the appropriate points
209 * rand48.c: fix portability problems by ensuring that shorts are
210 correctly promoted to longs at the appropriate points
212 * rng-dump.c (main): write out file correctly by using chars
213 instead of unsigned long ints, since these can vary in size on
214 different architectures
216 Wed Oct 28 15:02:22 1998 Brian Gough <bjg@vvv.lanl.gov>
218 * rng.c: added #include <string.h> to get prototype for memcpy
220 Mon Sep 14 20:53:09 1998 Brian Gough <bjg@vvv.lanl.gov>
222 * default.c (gsl_rng_env_setup): added gfsr4
224 1998-09-10 James Theiler <jt@lanl.gov>
226 * gfsr4.c: added new random number generator
228 * Makefile.am: added gfsr4.c to SOURCES list
230 * gsl_rng.h: added gfsr4
232 * test.c: added gfsr4
234 * benchmark.c: added gfsr4
236 Mon Aug 10 22:12:13 1998 Brian Gough <bjg@vvv.lanl.gov>
238 * rng-dump.c: program to write out 3 million random numbers,
239 suitable for testing with DIEHARD.
241 Tue Aug 4 19:51:57 1998 Brian Gough <bjg@vvv.lanl.gov>
243 * default.c (gsl_rng_env_setup): send default/enviroment output to
246 Mon Aug 3 18:25:52 1998 Brian Gough <bjg@vvv.lanl.gov>
248 * mt.c: made constants static since they shouldn't be exported,
249 added some speed improvements from Cokus' code (not all of them
250 since they seemed to use more registers than available on the
253 Thu Jul 9 13:56:20 1998 Brian Gough <bjg@vvv.lanl.gov>
255 * slatec.c: renamed cmlib.c to slatec.c
257 * transputer.c: renamed tds.c to transputer.c so the name is a bit
260 * random.c: renamed random0 functions to random8, since obviously
261 we can't have 0 bytes of state
263 * default.c (gsl_rng_env_setup): made gsl_rng_mt19937 the default
266 Wed Jul 8 17:06:54 1998 Brian Gough <bjg@vvv.lanl.gov>
268 * added random() functions. There are three(!) versions: the
269 original BSD, linux libc5 (had a typo in the multiplier, but got
270 installed on millions of machines so is now a defacto standard)
271 and GNU glibc2 (fixes the typo and has an improved seeding
274 Sun Jul 5 15:59:29 1998 Brian Gough <bjg@vvv.lanl.gov>
276 * rand.c: renamed rand.c to cmlib.c and bsdrand.c to rand.c.
278 * ranf.c: added CRAY RANF, 48 bit generator
280 * rand48.c: added the standard unix rand48()
282 * changed all the routines to allow an additional callback for
283 returning doubles. Now we can implement numerical recipes with its
284 non-standard checks on the floating point results and also access
285 the full state for getting 48-bit doubles out of rand48.
287 Sat Jul 4 11:14:49 1998 Brian Gough <bjg@vvv.lanl.gov>
289 * ranmar.c: added the RANMAR generator
291 * tds.c: added the INMOS Transputer RNG
293 * test.c (rng_min_test): added a test for RAND_MIN, to make sure
294 none of the generators go below it. Statistically the test is not
295 much good since it's very unlikely that an off-by-one error would
296 show up unless we ran the test for > 4 billion numbers. However,
297 the test might detect a gross error like a typo in RAND_MIN or a
298 degeneracy 0,0,0,... for a multiplicative generator.
300 * uni.c: fixed RAND_MAX here too
302 * uni32.c: fixed RAND_MAX to m1-1, not m1 (since it's modulo m1 so
303 m1 can't occur, only m1-1)
305 Fri Jul 3 15:55:34 1998 Brian Gough <bjg@vvv.lanl.gov>
307 * rng.c (gsl_rng_uniform_gt0_lt1): added a function which returns
308 numbers in the range (0,1), i.e. excluding 0.0 and 1.0
310 * renamed bad_randu.c to randu.c
312 * renamed bad_rand.c to bsdrand.c
314 Mon Jun 29 18:11:08 1998 Brian Gough <bjg@vvv.lanl.gov>
316 * added implementations of the numerical recipes algorithms ran0,
319 Sun Jun 28 11:51:48 1998 Brian Gough <bjg@vvv.lanl.gov>
321 * gsl_rng.h: added gsl_rng_uniform_pos which guarantees positive
324 * added a RAND_MIN entry to the gsl_rng/gsl_rng_type structs
326 * gsl_rng.h: renamed gsl_rng_get_uni to gsl_rng_uniform
328 Wed Jun 24 12:10:23 1998 Brian Gough <bjg@vvv.lanl.gov>
330 * gsl_rng.h: added inline versions of gsl_rng_get and
333 * benchmark.c: added a simple benchmark program to measure rng's
336 * test.c (N2): reduced the number of tests from 1 million to 100k
337 to speed things up a bit
339 * changed the generic seeding algorithm to s -> (69069*s) &
340 0xFFFFFFFF which covers all 32 bits.
342 Sun Jun 21 23:24:36 1998 Brian Gough <bjg@vvv.lanl.gov>
344 * added the MT19937 and TT880 mersenne prime generators
346 Sat Jun 20 13:58:40 1998 Brian Gough <bjg@vvv.lanl.gov>
348 * ensured that 32 bit quantities are defined as 'long', as
349 required by ANSI. On a 16 bit platform 'int' is usually just 16
352 * ranlux.c: added the RANLUX generator
354 Fri Jun 19 11:12:06 1998 Brian Gough <bjg@vvv.lanl.gov>
356 * removed the gsl- prefix from generator name strings
358 Thu Jun 18 12:17:16 1998 Brian Gough <bjg@vvv.lanl.gov>
360 * test.c: added a 10000 iteration check for cmrg
362 * got rid of init_state values. It's simpler to generate them
363 directly from the seed, the cost of creating an rng is not usually
366 * rng.c: eliminated the gsl_rng_internal struct since it was not
369 Wed Jun 17 17:31:27 1998 Brian Gough <bjg@vvv.lanl.gov>
371 * minstd.c: added Park and Millers MINSTD generator
373 Thu Jun 11 18:08:40 1998 Brian Gough <bjg@vvv.lanl.gov>
375 * this will be an alternate, thread-safe interface to the random