24 lines
490 B
Rust
24 lines
490 B
Rust
pub fn hash_u32(n: u32, seed: u32) -> u32 {
|
|
let mut hash = n;
|
|
|
|
for _ in 0..3 {
|
|
hash = hash.wrapping_mul(1936502639);
|
|
hash ^= hash.wrapping_shr(16);
|
|
hash = hash.wrapping_add(seed);
|
|
}
|
|
|
|
return hash;
|
|
}
|
|
|
|
pub fn hash_u64(n: u64, seed: u64) -> u64 {
|
|
let mut hash = n;
|
|
|
|
for _ in 0..4 {
|
|
hash = hash.wrapping_mul(32416190071 * 314604959);
|
|
hash ^= hash.wrapping_shr(32);
|
|
hash = hash.wrapping_add(seed);
|
|
}
|
|
|
|
return hash;
|
|
}
|