![]() |
|
![]() |
|
Xor-shift counteracts the two weaknesses of a multiply: the high bits have nothing above them to influence, and the low bits have nothing below them to be influenced by.
|
![]() |
|
I've often thought about the idea of auto hash finding based on my experiences developing good hash functions^0 Cool to see this! I think it would be cool to hook it up with SMHasher3^1 (a much improved, and faster variant of the venerable hash test suite developed by Frank J. T. Wojcik) to automatically evaluate its output. You could use a subset of tests and fail fast for speed. It would also be cool to expand it to 64 and 128 bit hashes (tho obviously the search space is larger). Somewhat related I created some NodeJS code to measure avalanche under multiplication for 64-bit primes in order to select the values for Rain. [Rain]: https://github.com/dosyago/rain [SMHasher3]: https://gitlab.com/fwojcik/smhasher3 |
![]() |
|
Hash functions on integers, so if you want a fast integer hash for a set or map. If the functions diverge sufficiently it also provides fast hashes for a bloom filter.
|
![]() |
|
> Limiting itself to reversible operations gives some mathematical niceties What are those niceties, why is a reversible operation desirable in this context? |
![]() |
|
OMG, is it finally something useful, not in Rust for RISC-V? I saw at the top in the comments "Skeeto is a legend", this is the best compliment. My sincere gratitude to the author. |
Branchless UTF-8 is a famous one, for example.