Libecoli 0.5.0
Extensible COmmand LIne library
Loading...
Searching...
No Matches
ecoli_murmurhash.h
1/* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright 2016, Olivier MATZ <zer0@droids-corp.org>
3 */
4
15
16#ifndef ECOLI_MURMURHASH_H_
17#define ECOLI_MURMURHASH_H_
18
19#include <stdint.h>
20
22static inline uint32_t ec_murmurhash_rotl32(uint32_t x, int8_t r)
23{
24 return (x << r) | (x >> (32 - r));
25}
26
28static inline uint32_t ec_murmurhash3_add32(uint32_t h, uint32_t data)
29{
30 data *= 0xcc9e2d51;
31 data = ec_murmurhash_rotl32(data, 15);
32 data *= 0x1b873593;
33 h ^= data;
34 return h;
35}
36
38static inline uint32_t ec_murmurhash3_mix32(uint32_t h)
39{
40 h = ec_murmurhash_rotl32(h,13);
41 h = h * 5 +0xe6546b64;
42 return h;
43}
44
46static inline uint32_t ec_murmurhash3_fmix32(uint32_t h)
47{
48 h ^= h >> 16;
49 h *= 0x85ebca6b;
50 h ^= h >> 13;
51 h *= 0xc2b2ae35;
52 h ^= h >> 16;
53
54 return h;
55}
56
69uint32_t ec_murmurhash3(const void *key, int len, uint32_t seed);
70
71#endif /* ECOLI_MURMURHASH_H_ */
72
static uint32_t ec_murmurhash3_fmix32(uint32_t h)
static uint32_t ec_murmurhash3_mix32(uint32_t h)
static uint32_t ec_murmurhash_rotl32(uint32_t x, int8_t r)
uint32_t ec_murmurhash3(const void *key, int len, uint32_t seed)
static uint32_t ec_murmurhash3_add32(uint32_t h, uint32_t data)