summaryrefslogtreecommitdiff
path: root/kit/mersenne_twister_64.h
diff options
context:
space:
mode:
Diffstat (limited to 'kit/mersenne_twister_64.h')
-rw-r--r--kit/mersenne_twister_64.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/kit/mersenne_twister_64.h b/kit/mersenne_twister_64.h
new file mode 100644
index 0000000..2709dd7
--- /dev/null
+++ b/kit/mersenne_twister_64.h
@@ -0,0 +1,35 @@
+#ifndef KIT_MERSENNE_TWISTER_64_H
+#define KIT_MERSENNE_TWISTER_64_H
+
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+enum {
+ KIT_MT64_N = 312,
+};
+
+typedef struct {
+ u64 mt[KIT_MT64_N];
+ u64 index;
+} kit_mt64_state_t;
+
+void kit_mt64_init_array(kit_mt64_state_t *state, i64 size,
+ u64 *seed);
+void kit_mt64_init(kit_mt64_state_t *state, u64 seed);
+void kit_mt64_rotate(kit_mt64_state_t *state);
+u64 kit_mt64_generate(kit_mt64_state_t *state);
+
+#ifdef __cplusplus
+}
+#endif
+
+#define mt64_state_t kit_mt64_state_t
+#define mt64_init_array kit_mt64_init_array
+#define mt64_init kit_mt64_init
+#define mt64_rotate kit_mt64_rotate
+#define mt64_generate kit_mt64_generate
+
+#endif