Skip to content
Newer
Older
100644 170 lines (114 sloc) 5.4 KB
cc00b1f @jj1bdx README.md reformatted from README
authored
1 # sfmt-erlang: SIMD-oriented Fast Mersenne Twister (SFMT) for Erlang
2
fbcc5a7 @jj1bdx Modified README.md for 0.8.2_RELEASE
authored
3 * Version 0.8.2_RELEASE 28-MAY-2012
cc00b1f @jj1bdx README.md reformatted from README
authored
4 * Edited and written by Kenji Rikitake (Kyoto University)
2999a79 @jj1bdx README.md cleaned up
authored
5 * Email contact: <kenji.rikitake@acm.org>
cc00b1f @jj1bdx README.md reformatted from README
authored
6
85cb08b @jj1bdx README.md updated for R15B
authored
7 Copyright (c) 2010-2012 Kenji Rikitake and Kyoto University. All rights
cc00b1f @jj1bdx README.md reformatted from README
authored
8 reserved.
9
10 Copyright (c) 2006,2007 Mutsuo Saito, Makoto Matsumoto and Hiroshima
11 University. All rights reserved.
12
2999a79 @jj1bdx README.md cleaned up
authored
13 See LICENSE.txt for the license (new/simplified BSD license). (Note:
14 license of rebar is Apache 2.0 License.)
cc00b1f @jj1bdx README.md reformatted from README
authored
15
2999a79 @jj1bdx README.md cleaned up
authored
16 This software is based on SFMT ver. 1.3.3 (SIMD oriented Fast Mersenne
17 Twister(SFMT)) by Mutsuo Saito (Hiroshima University) and Makoto
18 Matsumoto (Hiroshima University)
cc00b1f @jj1bdx README.md reformatted from README
authored
19
f2a0853 @jj1bdx README.md now includes explanation of random_wh06 module; added Richa…
authored
20 ## Details of SFMT algorithm
2999a79 @jj1bdx README.md cleaned up
authored
21
22 See <http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/index.html>
cc00b1f @jj1bdx README.md reformatted from README
authored
23
35d1fad @jj1bdx 0.5.3_RELEASE: sfmt4253 module added
authored
24 * new module sfmt607 and sfmt216091 added (from 0.5.1_RELEASE)
25 * new module sfmt4253 added (from 0.5.3_RELEASE)
4858648 @jj1bdx 0.6.1_BETA: README.md changed
authored
26 * new module sfmt86243 added (from 0.6.1_BETA)
5f07a83 @jj1bdx modified README.md to reflect 0.8.0 changes
authored
27 * Pure SFMT module now added as working code by request (from 0.8.0_RELEASE)
1ff7877 @jj1bdx 0.5.0_BETA: sfmt607 for period ((2^607) - 1) added
authored
28
fbcc5a7 @jj1bdx Modified README.md for 0.8.2_RELEASE
authored
29 ## Seeding algorithm changed for `seed(integer())` functions
b15bf08 @jj1bdx Modified README.md to show changes of seeding
authored
30
fbcc5a7 @jj1bdx Modified README.md for 0.8.2_RELEASE
authored
31 * The old `seed/1` function called `init_gen_rand/1` (up to 0.8.0_RELEASE)
f410d5d @jj1bdx Modified README.md for typo fix and streamlined THANKS entries
authored
32 * The internal state generated by `init_gen_rand/1` is predictable,
b15bf08 @jj1bdx Modified README.md to show changes of seeding
authored
33 especially when the value of the 1st element of the state list is
34 very close to the given seed value.
35 (Michael Gebetsroither discovered this behavior)
36 * The new `seed/1` function calls `init_by_list32/1` (from 0.8.1_RELEASE)
37 and the seed is given as `[integer()]`,
38 to reduce predictability of the 1st element of the state list.
39
f2a0853 @jj1bdx README.md now includes explanation of random_wh06 module; added Richa…
authored
40 ## Supported SFMT PRNG periods
41
4858648 @jj1bdx 0.6.1_BETA: README.md changed
authored
42 * sfmt607: (2^607 - 1)
43 * sfmt4253: (2^4253 - 1)
5f07a83 @jj1bdx modified README.md to reflect 0.8.0 changes
authored
44 * sfmt: (2^19937 - 1) (also on sfmt_pure)
4858648 @jj1bdx 0.6.1_BETA: README.md changed
authored
45 * sfmt86243: (2^86243 - 1)
46 * sfmt216091: (2^216091 - 1)
35d1fad @jj1bdx 0.5.3_RELEASE: sfmt4253 module added
authored
47
f2a0853 @jj1bdx README.md now includes explanation of random_wh06 module; added Richa…
authored
48 ## C NIFs based on SFMT 1.3.3 added (from 0.3.0_RELEASE)
cc00b1f @jj1bdx README.md reformatted from README
authored
49
5b91cb4 @jj1bdx README.md updated for 0.4.1_RELEASE
authored
50 * See `c_src/sfmt_nif.c` for the details
51 * Also refer to sfmt-extstate at <http://github.com/jj1bdx/sfmt-extstate>
84d36dd @jj1bdx README.md modified for 0.3.4_RELEASE
authored
52 * The version number of this NIF is 101 (see `NIF_LOAD_INFO` macro value)
cc00b1f @jj1bdx README.md reformatted from README
authored
53
f2a0853 @jj1bdx README.md now includes explanation of random_wh06 module; added Richa…
authored
54 ## Wichmann-Hill 2006 algorithm code also included (from 0.6.0_RELEASE)
55
56 * See `src/random_wh06.erl` for the details
57 * Reference for the algorithm:
58
59 B. A. Wichmann and I. D. Hill,
60 "Generating good pseudo-random numbers",
61 Computational Statistics & Data Analysis 51 (2006) 1614-1622.
62
bca97f8 @jj1bdx modified README.md for documentation update to 0.7-RELEASE
authored
63 * See `src/random_wh06_int.erl` for a bigint version (by Michael Truog)
64
65 Note: this bigint version is not tested yet (no eunit test case)
66
5e4758d @jj1bdx README.md updated for 0.6.2_RELEASE
authored
67 ## Simple test of 512x512 pixmap included (from 0.6.2_RELEASE)
68
69 * see the files under `reference_texts/pbm_512_512/` for the details
70
f2a0853 @jj1bdx README.md now includes explanation of random_wh06 module; added Richa…
authored
71 ## Notable bugfixes
72
fbcc5a7 @jj1bdx Modified README.md for 0.8.2_RELEASE
authored
73 * `gen_rand_all/1` is now properly applied in `sfmt_pure` module when `gen_rand32/1` was first invoked (from 0.8.2_RELEASE)
7e7ae6a @jj1bdx changed README.md to fix typo of 0.7_RELEASE
authored
74 * Catched up with the latest rebar configuration file (from 0.7.0_RELEASE)
75 * Dynamically building ebin/sfmt.app (from 0.7.0_RELEASE)
f2a0853 @jj1bdx README.md now includes explanation of random_wh06 module; added Richa…
authored
76 * PDIC_SEED now named differently for each period (bugfix, from 0.5.2_RELEASE)
77
78 ## Tested platforms
cc00b1f @jj1bdx README.md reformatted from README
authored
79
5f07a83 @jj1bdx modified README.md to reflect 0.8.0 changes
authored
80 * FreeBSD/amd64 9.0-STABLE with Erlang/OTP R15B01
81 * FreeBSD/i386 8.3-RELEASE with Erlang/OTP R15B01
fbcc5a7 @jj1bdx Modified README.md for 0.8.2_RELEASE
authored
82 * RedHat Enterprise Linux 6 of x86_64 with Erlang/OTP R15B01
83 (Subsystem B of the Kyoto University ACCMS Supercomputer System)
cc00b1f @jj1bdx README.md reformatted from README
authored
84
f2a0853 @jj1bdx README.md now includes explanation of random_wh06 module; added Richa…
authored
85 ## Building
cc00b1f @jj1bdx README.md reformatted from README
authored
86
5f07a83 @jj1bdx modified README.md to reflect 0.8.0 changes
authored
87 * Use GNU/BSD make and then
c0221c2 @jj1bdx support/getrebar script added from Tuncer Ayaz's re2; Makefile accord…
authored
88
2999a79 @jj1bdx README.md cleaned up
authored
89 make compile
90
f2a0853 @jj1bdx README.md now includes explanation of random_wh06 module; added Richa…
authored
91 The build script is Basho's rebar at <https://github.com/basho/rebar>,
dd09666 @jj1bdx 0.4.0_RELEASE; README.md also reorganized
authored
92 which will be automatically fetched under the directory `support/`.
93
f2a0853 @jj1bdx README.md now includes explanation of random_wh06 module; added Richa…
authored
94 ## Documentation
dd09666 @jj1bdx 0.4.0_RELEASE; README.md also reorganized
authored
95
5b91cb4 @jj1bdx README.md updated for 0.4.1_RELEASE
authored
96 * For the HTML documentation files of the Erlang source
dd09666 @jj1bdx 0.4.0_RELEASE; README.md also reorganized
authored
97
98 make doc
99
100 The documentation will be accessible at `doc/index.html`.
cc00b1f @jj1bdx README.md reformatted from README
authored
101
5b91cb4 @jj1bdx README.md updated for 0.4.1_RELEASE
authored
102 * For the HTML documentation files of the C NIF source (Note: Doxygen required)
103
104 make c_doc
105
106 The documentation will be accessible at `c_doc/index.html`.
107
f2a0853 @jj1bdx README.md now includes explanation of random_wh06 module; added Richa…
authored
108 ## Testing
84d36dd @jj1bdx README.md modified for 0.3.4_RELEASE
authored
109
110 * For unit testing with EUnit, do
111
112 make eunit
113
dd09666 @jj1bdx 0.4.0_RELEASE; README.md also reorganized
authored
114 * For testing the speed of 100 times of invoking 100000 `gen_rand32/1` function, do
84d36dd @jj1bdx README.md modified for 0.3.4_RELEASE
authored
115
116 make speed
117
dd09666 @jj1bdx 0.4.0_RELEASE; README.md also reorganized
authored
118 (Previously this was 1000 times x 100000 invocations, but that was practically too slow.)
119
f2a0853 @jj1bdx README.md now includes explanation of random_wh06 module; added Richa…
authored
120 ## API compatible with the random module
cc00b1f @jj1bdx README.md reformatted from README
authored
121
122 seed0, seed/0, seed/3, uniform/0, uniform/1, uniform_s/1, uniform_s/3
123
f2a0853 @jj1bdx README.md now includes explanation of random_wh06 module; added Richa…
authored
124 ## TODO
cc00b1f @jj1bdx README.md reformatted from README
authored
125
edc41dd @jj1bdx Declared 'no more new feature' on README.md
authored
126 * No more new feature; more load testing needed
dd09666 @jj1bdx 0.4.0_RELEASE; README.md also reorganized
authored
127 * More documentation
5b91cb4 @jj1bdx README.md updated for 0.4.1_RELEASE
authored
128 * Code upgrading/reloading behavior check
cc00b1f @jj1bdx README.md reformatted from README
authored
129
f2a0853 @jj1bdx README.md now includes explanation of random_wh06 module; added Richa…
authored
130 ## Code authors:
cc00b1f @jj1bdx README.md reformatted from README
authored
131
dd09666 @jj1bdx 0.4.0_RELEASE; README.md also reorganized
authored
132 * Kenji Rikitake
cc00b1f @jj1bdx README.md reformatted from README
authored
133 * Mutsuo Saito
134 * Makoto Matsumoto
135 * Dan Gudmundsson
5ebc308 @jj1bdx Added Michael Truog as an author to README.md
authored
136 * Michael Truog
cc00b1f @jj1bdx README.md reformatted from README
authored
137
f2a0853 @jj1bdx README.md now includes explanation of random_wh06 module; added Richa…
authored
138 ## THANKS to:
cc00b1f @jj1bdx README.md reformatted from README
authored
139
140 * Dave "dizzyd" Smith
141 * Tuncer Ayaz
dd09666 @jj1bdx 0.4.0_RELEASE; README.md also reorganized
authored
142 * Tim Bates (random_mt.erl implementator of Mersenne Twister)
cc00b1f @jj1bdx README.md reformatted from README
authored
143 * Dan Gudmundsson
f2a0853 @jj1bdx README.md now includes explanation of random_wh06 module; added Richa…
authored
144 * Richard O'Keefe
85cb08b @jj1bdx README.md updated for R15B
authored
145 * Yurii Rashkovskii
f410d5d @jj1bdx Modified README.md for typo fix and streamlined THANKS entries
authored
146 * Kostis Sagonas
147 * Michael Gebetsroither
cc00b1f @jj1bdx README.md reformatted from README
authored
148
7f8cbb1 @jj1bdx Acknowledgment to Erlang Solutions added to README.md
authored
149 ## ACKNOWLEDGMENTS
cc00b1f @jj1bdx README.md reformatted from README
authored
150
151 During the compatibility test of this software, Kenji Rikitake
152 used the supercomputer service provided by Academic Center for
153 Computing and Media Studies (ACCMS), Kyoto University.
dd09666 @jj1bdx 0.4.0_RELEASE; README.md also reorganized
authored
154
7f8cbb1 @jj1bdx Acknowledgment to Erlang Solutions added to README.md
authored
155 Erlang Solutions kindly gave Kenji Rikitake
156 an opportunity to give a presentation
157 about this software at Erlang Factory SF Bay 2011.
158
f2a0853 @jj1bdx README.md now includes explanation of random_wh06 module; added Richa…
authored
159 ## Notes on refactoring
dd09666 @jj1bdx 0.4.0_RELEASE; README.md also reorganized
authored
160
161 * Speedup by NIF: ~40 times faster than the pure Erlang code
162 (when fully inline-optimized (see rebar.config))
8bbf1ae @jj1bdx typo fix on README.md
authored
163 * For the pure-Erlang code: writing `++` (append) operators by ring buffer loops
dd09666 @jj1bdx 0.4.0_RELEASE; README.md also reorganized
authored
164 (as a pair of lists consuming the head elements, and the corresponding accumulators)
165 made the code ~50% faster; the pure Erlang code available under `reference_texts/`
166 * `gen_rand32/1`, `gen_rand32_max/2`, and `gen_rand_float/1` use Erlang lists
167 (Dan Gudmudsson showed the list version is faster)
168 * SSE2 code and options in sfmt-extstate were removed due to causing crash of Erlang BEAM
169 (and even if the SSE2 code was enabled the performance increase would be minimal)
Something went wrong with that request. Please try again.