From 3fe7bbdd6c06b7ee69bc7bc14fd39c88691243e3 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Fri, 16 Sep 2022 19:23:07 +0300 Subject: [PATCH] Update floating point hashing to use hash_mix --- include/boost/container_hash/hash.hpp | 36 +++++++++++++-------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/include/boost/container_hash/hash.hpp b/include/boost/container_hash/hash.hpp index 92c8d9a..72b8378 100644 --- a/include/boost/container_hash/hash.hpp +++ b/include/boost/container_hash/hash.hpp @@ -212,8 +212,8 @@ namespace boost std::size_t seed = 0; - seed ^= static_cast( w[0] ) + ( seed << 6 ) + ( seed >> 2 ); - seed ^= static_cast( w[1] ) + ( seed << 6 ) + ( seed >> 2 ); + seed = static_cast( w[0] ) + hash_detail::hash_mix( seed ); + seed = static_cast( w[1] ) + hash_detail::hash_mix( seed ); return seed; } @@ -229,8 +229,8 @@ namespace boost std::size_t seed = 0; - seed ^= static_cast( w[0] ) + ( seed << 6 ) + ( seed >> 2 ); - seed ^= static_cast( w[1] ) + ( seed << 6 ) + ( seed >> 2 ); + seed = static_cast( w[0] ) + hash_detail::hash_mix( seed ); + seed = static_cast( w[1] ) + hash_detail::hash_mix( seed ); return seed; } @@ -245,9 +245,9 @@ namespace boost std::size_t seed = 0; - seed ^= static_cast( w[0] ) + ( seed << 6 ) + ( seed >> 2 ); - seed ^= static_cast( w[1] ) + ( seed << 6 ) + ( seed >> 2 ); - seed ^= static_cast( w[2] ) + ( seed << 6 ) + ( seed >> 2 ); + seed = static_cast( w[0] ) + hash_detail::hash_mix( seed ); + seed = static_cast( w[1] ) + hash_detail::hash_mix( seed ); + seed = static_cast( w[2] ) + hash_detail::hash_mix( seed ); return seed; } @@ -263,8 +263,8 @@ namespace boost std::size_t seed = 0; - seed ^= static_cast( w[0] ) + ( seed << 6 ) + ( seed >> 2 ); - seed ^= static_cast( w[1] ) + ( seed << 6 ) + ( seed >> 2 ); + seed = static_cast( w[0] ) + hash_detail::hash_mix( seed ); + seed = static_cast( w[1] ) + hash_detail::hash_mix( seed ); return seed; } @@ -279,9 +279,9 @@ namespace boost std::size_t seed = 0; - seed ^= static_cast( w[0] ) + ( seed << 6 ) + ( seed >> 2 ); - seed ^= static_cast( w[1] ) + ( seed << 6 ) + ( seed >> 2 ); - seed ^= static_cast( w[2] ) + ( seed << 6 ) + ( seed >> 2 ); + seed = static_cast( w[0] ) + hash_detail::hash_mix( seed ); + seed = static_cast( w[1] ) + hash_detail::hash_mix( seed ); + seed = static_cast( w[2] ) + hash_detail::hash_mix( seed ); return seed; } @@ -297,8 +297,8 @@ namespace boost std::size_t seed = 0; - seed ^= static_cast( w[0] ) + ( seed << 6 ) + ( seed >> 2 ); - seed ^= static_cast( w[1] ) + ( seed << 6 ) + ( seed >> 2 ); + seed = static_cast( w[0] ) + hash_detail::hash_mix( seed ); + seed = static_cast( w[1] ) + hash_detail::hash_mix( seed ); return seed; } @@ -313,10 +313,10 @@ namespace boost std::size_t seed = 0; - seed ^= static_cast( w[0] ) + ( seed << 6 ) + ( seed >> 2 ); - seed ^= static_cast( w[1] ) + ( seed << 6 ) + ( seed >> 2 ); - seed ^= static_cast( w[2] ) + ( seed << 6 ) + ( seed >> 2 ); - seed ^= static_cast( w[3] ) + ( seed << 6 ) + ( seed >> 2 ); + seed = static_cast( w[0] ) + hash_detail::hash_mix( seed ); + seed = static_cast( w[1] ) + hash_detail::hash_mix( seed ); + seed = static_cast( w[2] ) + hash_detail::hash_mix( seed ); + seed = static_cast( w[3] ) + hash_detail::hash_mix( seed ); return seed; }