]> www.average.org Git - psmb.git/blobdiff - src/hash64.c
add hash64 function
[psmb.git] / src / hash64.c
diff --git a/src/hash64.c b/src/hash64.c
new file mode 100644 (file)
index 0000000..fef4aa8
--- /dev/null
@@ -0,0 +1,11 @@
+/* Lifted from https://stackoverflow.com/a/13326345/2786866 */
+
+#include "hash64.h"
+
+uint64_t hash64(void *data, size_t size)
+{
+       uint64_t mix = 0, mulp = 2654435789;
+       for (int i = 0; i < size; i++)
+               mix += (((uint8_t *)data)[i] * mulp) ^ (mix >> 23);
+       return mix ^ (mix << 37);
+}