Libecoli 0.11.1
Extensible COmmand LIne library
Loading...
Searching...
No Matches
murmurhash.h
1/* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright 2016, Olivier MATZ <zer0@droids-corp.org>
3 */
4
15
16#pragma once
17
18#include <stdint.h>
19
21static inline uint32_t ec_murmurhash_rotl32(uint32_t x, int8_t r)
22{
23 return (x << r) | (x >> (32 - r));
24}
25
27static 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
37static 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
45static 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
68uint32_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