summaryrefslogtreecommitdiff
path: root/source/kit/mersenne_twister_64.h
diff options
context:
space:
mode:
Diffstat (limited to 'source/kit/mersenne_twister_64.h')
-rw-r--r--source/kit/mersenne_twister_64.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/source/kit/mersenne_twister_64.h b/source/kit/mersenne_twister_64.h
new file mode 100644
index 0000000..605a25f
--- /dev/null
+++ b/source/kit/mersenne_twister_64.h
@@ -0,0 +1,37 @@
+#ifndef KIT_MERSENNE_TWISTER_64_H
+#define KIT_MERSENNE_TWISTER_64_H
+
+#include <stddef.h>
+#include <stdint.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+enum {
+ KIT_MT64_N = 312,
+};
+
+typedef struct {
+ uint64_t mt[KIT_MT64_N];
+ uint64_t index;
+} kit_mt64_state_t;
+
+void kit_mt64_init(kit_mt64_state_t *state, uint64_t seed);
+
+uint64_t kit_mt64_generate(kit_mt64_state_t *state);
+
+uint64_t kit_mt64_seed();
+
+#ifndef LAPLACE_DISABLE_SHORT_NAMES
+# define mt64_state_t kit_mt64_state_t
+# define mt64_init kit_mt64_init
+# define mt64_generate kit_mt64_generate
+# define mt64_seed kit_mt64_seed
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif