1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#![crate_name = "smolprng"]
#![warn(missing_docs)]
pub mod algorithms;
pub mod distributions;
pub mod smol_core;
pub use algorithms::*;
pub use distributions::*;
#[cfg(test)]
mod tests {
use crate::*;
macro_rules! prng_gen {
($generator:ident) => {
let mut prng = PRNG {
generator: $generator,
};
prng.gen_u8();
prng.gen_u16();
prng.gen_u32();
prng.gen_u64();
prng.gen_u128();
prng.gen_f64();
prng.gen_f32();
prng.gen_bool();
let _v = prng.generator.next();
};
}
#[test]
fn test_step_generator_8() {
let step = StepGenerator8::default();
prng_gen!(step);
}
#[test]
fn test_step_generator_16() {
let step = StepGenerator16::default();
prng_gen!(step);
}
#[test]
fn test_step_generator_32() {
let step = StepGenerator32::default();
prng_gen!(step);
}
#[test]
fn test_step_generator_64() {
let step = StepGenerator64::default();
prng_gen!(step);
}
#[test]
fn test_step_generator_128() {
let step = StepGenerator128::default();
prng_gen!(step);
}
#[test]
fn test_jsf() {
let jsf = JsfLarge::default();
prng_gen!(jsf);
}
#[test]
fn middle_square_test() {
let middle_square = MiddleSquare::default();
prng_gen!(middle_square);
}
#[test]
fn lcg_test() {
let lcg = LCG::default();
prng_gen!(lcg);
}
#[test]
fn scf32_test() {
let scf32 = Sfc32::default();
prng_gen!(scf32);
}
#[test]
fn scf32_small_test() {
let scf32_small = Sfc32Small::default();
prng_gen!(scf32_small);
}
#[test]
fn xor32_test() {
let xor32 = XorShift32::default();
prng_gen!(xor32);
}
#[test]
fn xor64_test() {
let xor64 = XorShift64::default();
prng_gen!(xor64);
}
#[test]
fn xor128_test() {
let xor128 = XorShift128::default();
prng_gen!(xor128);
}
#[test]
fn xor128_plus_test() {
let xor128plus = XorShift128Plus::default();
prng_gen!(xor128plus);
}
#[test]
fn xoshiro256_super_star_test() {
let xor128plus = XoShiro256SuperStar::default();
prng_gen!(xor128plus);
}
#[test]
fn splitmix_32_test() {
let splitmix = SplitMix32::default();
prng_gen!(splitmix);
}
}