source: trunk/SISCone/ranlux.h@ 23

Last change on this file since 23 was 20, checked in by Pavel Demin, 16 years ago

add SISCone library

File size: 1.4 KB
Line 
1//! \file ranlux.h
2
3#ifndef __RANLUX_H__
4#define __RANLUX_H__
5
6/* This is a lagged fibonacci generator with skipping developed by Luescher.
7 The sequence is a series of 24-bit integers, x_n,
8
9 x_n = d_n + b_n
10
11 where d_n = x_{n-10} - x_{n-24} - c_{n-1}, b_n = 0 if d_n >= 0 and
12 b_n = 2^24 if d_n < 0, c_n = 0 if d_n >= 0 and c_n = 1 if d_n < 0,
13 where after 24 samples a group of p integers are "skipped", to
14 reduce correlations. By default p = 199, but can be increased to
15 365.
16
17 The period of the generator is around 10^171.
18
19 From: M. Luescher, "A portable high-quality random number generator
20 for lattice field theory calculations", Computer Physics
21 Communications, 79 (1994) 100-110.
22
23 Available on the net as hep-lat/9309020 at http://xxx.lanl.gov/
24
25 See also,
26
27 F. James, "RANLUX: A Fortran implementation of the high-quality
28 pseudo-random number generator of Luscher", Computer Physics
29 Communications, 79 (1994) 111-114
30
31 Kenneth G. Hamilton, F. James, "Acceleration of RANLUX", Computer
32 Physics Communications, 101 (1997) 241-248
33
34 Kenneth G. Hamilton, "Assembler RANLUX for PCs", Computer Physics
35 Communications, 101 (1997) 249-253 */
36
37namespace siscone{
38
39/// initialize 'ranlux' generator
40void ranlux_init();
41
42/// generate random value (24 bits)
43unsigned long int ranlux_get();
44
45/// save state of the generator
46void ranlux_print_state();
47
48}
49#endif
Note: See TracBrowser for help on using the repository browser.