27 #ifdef __SIZEOF_INT128__ 33 using int128_t = __int128_t;
34 using uint128_t = __uint128_t;
37 return static_cast<uint64_t
>(x & 0xffffffffffffffffULL);
40 return static_cast<uint64_t
>( x >> 64 );
45 #else // __SIZEOF_INT128__ 47 #include <boost/multiprecision/integer.hpp> 51 using boost::multiprecision::int128_t;
52 using boost::multiprecision::uint128_t;
55 return static_cast<uint64_t
>(x & 0xffffffffffffffffULL);
58 return static_cast<uint64_t
>( x >> 64 );
63 #endif // __SIZEOF_INT128__ 67 inline uint128_t
uint128(
const uint64_t hi,
const uint64_t lo ) {
68 return ( uint128_t(hi) << 64 ) + lo;
uint64_t uint128_hi64(const uint128_t &x)
uint128_t uint128(const uint64_t hi, const uint64_t lo)
uint64_t uint128_lo64(const uint128_t &x)