-
Notifications
You must be signed in to change notification settings - Fork 0
hash
github-actions[bot] edited this page Feb 12, 2026
·
1 revision
Non-cryptographic hash functions for all numeric types, generic data buffer hashing via FNV-1a, and hash combining for composite objects.
Fast hashing is needed for hash tables, deduplication, checksums, and spatial hashing. These are not suitable for cryptographic purposes.
Low-level functions that mix bits of an integer for better hash distribution.
| Function | Description |
|---|---|
lm2_hash_mix_u64(x) |
64-bit mixing |
lm2_hash_mix_u32(x) |
32-bit mixing |
| Function | Input | Output |
|---|---|---|
lm2_hash_f64(value) |
double |
uint64_t |
lm2_hash_f32(value) |
float |
uint32_t |
lm2_hash_i64(value) |
int64_t |
uint64_t |
lm2_hash_i32(value) |
int32_t |
uint32_t |
lm2_hash_i16(value) |
int16_t |
uint32_t |
lm2_hash_i8(value) |
int8_t |
uint32_t |
lm2_hash_u64(value) |
uint64_t |
uint64_t |
lm2_hash_u32(value) |
uint32_t |
uint32_t |
lm2_hash_u16(value) |
uint16_t |
uint32_t |
lm2_hash_u8(value) |
uint8_t |
uint32_t |
| Function | Description |
|---|---|
lm2_hash_fnv1a_u32(data, size) |
FNV-1a hash of arbitrary data (32-bit) |
lm2_hash_fnv1a_u64(data, size) |
FNV-1a hash of arbitrary data (64-bit) |
Combine two hash values into one. Useful for hashing composite objects (e.g., hash a struct by combining hashes of its fields).
| Function | Description |
|---|---|
lm2_hash_combine_u32(seed, hash) |
Combine two 32-bit hashes |
lm2_hash_combine_u64(seed, hash) |
Combine two 64-bit hashes |
// Hash a 2D grid cell
int32_t cell_x = 42, cell_y = 17;
uint32_t h = lm2_hash_combine_u32(lm2_hash_i32(cell_x), lm2_hash_i32(cell_y));
// Hash arbitrary data
const char* str = "hello";
uint32_t str_hash = lm2_hash_fnv1a_u32(str, 5);