Привет, всем.
В одно время, очень нужна была хорошая и быстрая хэш-функция для целых чисел.
И случайно, в исходниках Blender`а, нашел:
int hash_func_int( int data )
{
int key;
key = data;
key += ~(key << 16);
key ^= (key >> 5);
key += (key << 3);
key ^= (key >> 13);
key += ~(key << 9);
key ^= (key >> 17);
return key;
}
Дает очень хорошое распределение на всем интервале 32-ух битных чисел (на 64-ех — не тестировал

)
Зачем оно надо?
Для хэширования IP адресов, UID-ов, указателей на память и мало ли чего еще.