15 #include "absl/random/internal/wide_multiply.h"
17 #include "gmock/gmock.h"
18 #include "gtest/gtest.h"
19 #include "absl/numeric/int128.h"
30 return {(
v.hi <<
s) | (
v.lo >> (128 - s)),
v.lo << s};
32 return {
v.lo << (
s - 128), 0};
39 TEST(WideMultiplyTest, MultiplyU128ToU256Test) {
41 constexpr uint128
k1 = 1;
42 constexpr uint128 kMax = ~static_cast<uint128>(0);
50 for (
int i = 0;
i < 64; ++
i) {
53 Eq256(LeftShift({0, kMax},
i)));
55 Eq256(LeftShift({0, kMax},
i)));
59 for (
int i = 0;
i < 64; ++
i) {
60 for (
int j = 0;
j < 64; ++
j) {
62 Eq256(LeftShift({0, 1},
i +
j)));