summaryrefslogtreecommitdiffhomepage
path: root/examples
diff options
context:
space:
mode:
authorTylo <[email protected]>2020-06-24 16:41:11 +0200
committerTylo <[email protected]>2020-06-24 16:41:11 +0200
commit258bf942f635da5709902b96d84b952d5e588c8c (patch)
treea666ac54f641e4c40bef2e149369bd36bffc659b /examples
parent54da34796941dae3990870a98fc6bb28c80ae522 (diff)
downloadSTC-modified-258bf942f635da5709902b96d84b952d5e588c8c.tar.gz
STC-modified-258bf942f635da5709902b96d84b952d5e588c8c.zip
Removed Mersenne Twister and xoroshiro functions. Added PGC32. Refactored carray.
Diffstat (limited to 'examples')
-rw-r--r--examples/benchmark.c7
-rw-r--r--examples/rngtest.c39
2 files changed, 12 insertions, 34 deletions
diff --git a/examples/benchmark.c b/examples/benchmark.c
index b6e31a22..a8c4fb86 100644
--- a/examples/benchmark.c
+++ b/examples/benchmark.c
@@ -26,12 +26,9 @@ KHASH_MAP_INIT_INT64(ii, uint64_t)
size_t seed = 1234;
static const double maxLoadFactor = 0.77;
-sfc64_t rng;
+sfc64_random_t rng;
#define SEED(s) rng = sfc64_seed(seed)
-#define RAND(N) (sfc64_rand(&rng) & ((1 << N) - 1))
-//mt19937_t rng;
-//#define SEED(s) rng = mt19937_seed(s)
-//#define RAND(N) (mt19937_rand(&rng) & ((1 << N) - 1))
+#define RAND(N) (sfc64_random(&rng) & ((1 << N) - 1))
#define CMAP_SETUP(tag, Key, Value) CHash_##tag map = chash_init; \
diff --git a/examples/rngtest.c b/examples/rngtest.c
index f13306b0..d88d1fab 100644
--- a/examples/rngtest.c
+++ b/examples/rngtest.c
@@ -14,45 +14,26 @@ int main(void)
uint64_t v;
printf("start\n");
- mt19937_t state = mt19937_default();
- uint32_t k = mt19937_rand(&state);
- printf("%u - %g\n", k, c_randToFloat(k));
-
+ pcg32_random_t pcg = pcg32_seed(time(NULL), 1);
before = clock(); \
v = 0;
for (size_t i=0; i<NN; i++) {
- v += mt19937_rand(&state);
+ v += pcg32_random(&pcg) & 0xffffffff;
}
difference = clock() - before;
- printf("my-mt: %.02f, %zu\n", (float) difference / CLOCKS_PER_SEC, v);
-
-#ifdef __cplusplus
- std::mt19937 mt_rand;
- before = clock(); \
- v = 0;
- for (size_t i=0; i<NN; i++) {
- v += mt_rand();
- }
- difference = clock() - before;
- printf("c++mt: %.02f, %zu\n", (float) difference / CLOCKS_PER_SEC, v);
-#endif
+ printf("pcg32: %.02f, %zu\n", (float) difference / CLOCKS_PER_SEC, v);
- xoroshiro128ss_t xo = xoroshiro128ss_seed(1234);
+ sfc64_random_t sfc = sfc64_seed(time(NULL));
before = clock(); \
v = 0;
for (size_t i=0; i<NN; i++) {
- v += xoroshiro128ss_rand(&xo) & 0xffffffff;
- }
- difference = clock() - before;
- printf("xoros: %.02f, %zu\n", (float) difference / CLOCKS_PER_SEC, v);
-
-
- sfc64_t sfc = sfc64_seed(1234);
- before = clock(); \
- v = 0;
- for (size_t i=0; i<NN; i++) {
- v += sfc64_rand(&sfc) & 0xffffffff;
+ v += sfc64_random(&sfc) & 0xffffffff;
}
difference = clock() - before;
printf("sfc64: %.02f, %zu\n", (float) difference / CLOCKS_PER_SEC, v);
+
+ for (int i=0; i<8; ++i) printf("%f ", sfc64_fRandom(&sfc));
+ puts("");
+ for (int i=0; i<8; ++i) printf("%f ", pcg32_fRandom(&pcg));
+ puts("");
} \ No newline at end of file