Update mulx multipliers

This commit is contained in:
Peter Dimov
2023-01-27 08:00:40 +02:00
parent e56aac2e98
commit 9bc471310e

View File

@ -94,15 +94,17 @@ inline boost::uint32_t mulx32( boost::uint32_t x, boost::uint32_t y )
#endif
#endif
// multipliers from https://arxiv.org/abs/2001.05304
inline std::size_t mulx( std::size_t x ) noexcept
{
#if defined(BOOST_UNORDERED_64B_ARCHITECTURE)
return (std::size_t)mulx64( (boost::uint64_t)x, 0x9E3779B97F4A7C15ull );
return (std::size_t)mulx64( (boost::uint64_t)x, 0xDEFBA91144F2B375ull );
#else /* 32 bits assumed */
return mulx32( x, 0x9E3779B9u );
return mulx32( x, 0xE817FB2Du );
#endif
}