X-Git-Url: http://www.average.org/gitweb/?p=psmb.git;a=blobdiff_plain;f=src%2Fhash64.c;fp=src%2Fhash64.c;h=fef4aa85526cc15670fcf3b2b9fafe0bccec4d37;hp=0000000000000000000000000000000000000000;hb=3976435a109cf8586ecd362b2f320b0ee9044c25;hpb=4f4539e776640bc1e7d04af3f0a0b3af4b75bfcd diff --git a/src/hash64.c b/src/hash64.c new file mode 100644 index 0000000..fef4aa8 --- /dev/null +++ b/src/hash64.c @@ -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); +}