Added script front-end for primer-design code
[htsworkflow.git] / htswanalysis / MACS / lib / gsl / gsl-1.11 / rng / TODO
1 * gfsr: for consistency (Charles A. Wemple).  Make this change in 2.0
2
3  127a142
4 >   state->nd = i-1;
5 133,134c148,149
6 <   for (i=0; i<32; ++i) {
7 <       int k=7+i*3;
8 ---
9 >   for (i=0; i<32; i++) {
10 >       int k=7*i+3;
11 141d155
12 <   state->nd = i;
13
14
15 * Sort out "const" in prototypes, it looks odd since there are consts
16 for many functions which modify the state.  (Applies to both qrng and rng)
17
18 * New 64 bit generators in "Tables of 64-bit Mersenne Twisters",
19 Takuji Nishimura, ACM Transactions on Modeling and Computer
20 Simulation, Volumen 10, No 4, October 2000, p 348--357
21
22 * Need to run tests over the space of seeds, in addition to serial
23 tests (DIEHARD) for the default seed.  The congruences used for
24 seeding will give poor initial vectors for some seed values, e.g. 2^n.
25 Improve the seeding procedure by using a high-quality generator
26 (e.g. hash functions, md5 or sha) to generate the initial vectors.
27 Even if this is moderately expensive it is worthwhile since the
28 seeding is usually a one-off cost at program initialization, and the
29 results of all subsequent calls to the generator depend on it.  The
30 GSFR4 generator is particularly likely to benefit from this procedure.
31
32 * Add SWNS generator Phys.Rev.E 50 (2) p. 1607-1615 (1994), Phys.Rev.E
33 60 (6), p.7626-7628 (1999)
34
35 * Add get_array type methods which can provide optimized versions of
36 each function (?). We should offer the possibility of eliminating
37 function call overhead -- there are various possible ways to implement
38 it.
39
40 * Add ISAAC generator (??)
41
42 * Add (A)RC4 and hash based random number generators MD5, SHA.  This
43 should give crypto quality randomness, and guarantee different
44 sequences for each seed. Make the state (seed, count) where count
45 increments on each call of the generator.  Implement count as a big
46 integer stored in separate unsigned integers so that the period is
47 sufficiently long (e.g. 2^64 or 2^96). The generator would return
48 HASH(seed, count) on each call.
49
50 * Check that RANLXS will work on machines with non-standard width of
51 float/dbl (original has checks for DBL_MANT_DIG ..)
52
53 * mention more clearly why not all Cokus used (or recheck MT pages for
54 improvements)
55
56 * run the DIEHARD tests on all the generators, especially the ones we
57 are listing as "Simulation Quality" -- some of those are a bit old and
58 might fail one or two diehard tests.
59
60 * Add  NAG,       missing, gave up! 
61        CDC 48-bit missing 
62
63 * Check out the bug fix to mrand48 that was made in glibc2, pr757
64
65 * Check out  the following paper,
66
67     On the anomaly of ran1() in Monte Carlo pricing of financial
68     derivatives; Akira Tajima , Syoiti Ninomiya , and Shu Tezuka ; Winter
69     simulation , 1996, Page 360, from ACM
70
71 * The following papers have been published, I think we refer to them
72 (or could do),
73
74     Pierre L'Ecuyer, "Tables of Linear Congruential Generators of different
75     size and good lattice structure", Mathematics of Computation, Vol 68,
76     No 225, Jan 1999, p249-260
77
78     Pierre L'Ecuyer, "Tables of Maximally equidistributed combined LSFR
79     generators", ibid, p261-270
80
81 * Look at this paper: I. Vattulainen, "Framework for testing random numbers
82   in parallel calculations", Phys. Rev. E, 59, 6, June 1999, p7200
83
84 ----------------------------------------------------------------------
85 DONE
86
87 x1. Improve the seeding for routines that use the LCG seed generator.
88 It can only generate 130,000 different initial states. We should
89 change it to provide 2^31 different initial states (this will also
90 prevent the high bits being zero). DONE - we now use a 32-bit
91 generator.
92
93 x8. Get the macros from the faster MT19937 generator and use them. We
94 need to make MT be the fastest of the simulation quality generators if
95 it is the default. DONE. It didn't improve the speed on other
96 platforms, so I just used the tricks which also worked on the pentium
97 (e.g. changing mag[x&1] to x&1 ? mag[1] : mag[0])