Libecoli  0.11.3
Extensible COmmand LIne library
murmurhash.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright 2016, Olivier MATZ <zer0@droids-corp.org>
3  */
4 
16 #pragma once
17 
18 #include <stdint.h>
19 
21 static inline uint32_t ec_murmurhash_rotl32(uint32_t x, int8_t r)
22 {
23  return (x << r) | (x >> (32 - r));
24 }
25 
27 static inline uint32_t ec_murmurhash3_add32(uint32_t h, uint32_t data)
28 {
29  data *= 0xcc9e2d51;
30  data = ec_murmurhash_rotl32(data, 15);
31  data *= 0x1b873593;
32  h ^= data;
33  return h;
34 }
35 
37 static inline uint32_t ec_murmurhash3_mix32(uint32_t h)
38 {
39  h = ec_murmurhash_rotl32(h, 13);
40  h = h * 5 + 0xe6546b64;
41  return h;
42 }
43 
45 static inline uint32_t ec_murmurhash3_fmix32(uint32_t h)
46 {
47  h ^= h >> 16;
48  h *= 0x85ebca6b;
49  h ^= h >> 13;
50  h *= 0xc2b2ae35;
51  h ^= h >> 16;
52 
53  return h;
54 }
55 
68 uint32_t ec_murmurhash3(const void *key, int len, uint32_t seed);
69 
static uint32_t ec_murmurhash3_fmix32(uint32_t h)
Definition: murmurhash.h:45
static uint32_t ec_murmurhash3_mix32(uint32_t h)
Definition: murmurhash.h:37
static uint32_t ec_murmurhash_rotl32(uint32_t x, int8_t r)
Definition: murmurhash.h:21
uint32_t ec_murmurhash3(const void *key, int len, uint32_t seed)
static uint32_t ec_murmurhash3_add32(uint32_t h, uint32_t data)
Definition: murmurhash.h:27