Major updates integration from all upstreams
This commit is contained in:
@@ -11,7 +11,6 @@ using namespace libsnark;
|
||||
|
||||
void test_bigint()
|
||||
{
|
||||
static_assert(UINT64_MAX == 0xFFFFFFFFFFFFFFFFul, "uint64_t not 64-bit");
|
||||
static_assert(GMP_NUMB_BITS == 64, "GMP limb not 64-bit");
|
||||
|
||||
const char *b1_decimal = "76749407";
|
||||
@@ -24,17 +23,17 @@ void test_bigint()
|
||||
bigint<1> b1 = bigint<1>(b1_decimal);
|
||||
bigint<2> b2 = bigint<2>(b2_decimal);
|
||||
|
||||
assert(b0.as_ulong() == UINT64_C(0));
|
||||
assert(b0.is_zero());
|
||||
assert(b1.as_ulong() == UINT64_C(76749407));
|
||||
assert(!(b1.is_zero()));
|
||||
assert(b2.as_ulong() == UINT64_C(15747124762497195938));
|
||||
assert(!(b2.is_zero()));
|
||||
assert(b0 != b1);
|
||||
assert(!(b0 == b1));
|
||||
EXPECT_EQ(b0.as_uint64(), UINT64_C(0));
|
||||
EXPECT_TRUE(b0.is_zero());
|
||||
EXPECT_EQ(b1.as_uint64(), UINT64_C(76749407));
|
||||
EXPECT_FALSE(b1.is_zero());
|
||||
EXPECT_EQ(b2.as_uint64(), UINT64_C(15747124762497195938));
|
||||
EXPECT_FALSE(b2.is_zero());
|
||||
EXPECT_NE(b0, b1);
|
||||
EXPECT_FALSE(b0 == b1);
|
||||
|
||||
assert(b2.max_bits() == 128);
|
||||
assert(b2.num_bits() == 99);
|
||||
EXPECT_EQ(b2.max_bits(), 128u);
|
||||
EXPECT_EQ(b2.num_bits(), 99u);
|
||||
for (size_t i = 0; i < 128; i++) {
|
||||
assert(b2.test_bit(i) == (b2_binary[127-i] == '1'));
|
||||
}
|
||||
@@ -58,8 +57,8 @@ void test_bigint()
|
||||
bigint<2> quotient;
|
||||
bigint<2> remainder;
|
||||
bigint<3>::div_qr(quotient, remainder, b3, b2);
|
||||
assert(quotient.num_bits() < GMP_NUMB_BITS);
|
||||
assert(quotient.as_ulong() == b1.as_ulong());
|
||||
EXPECT_LT(quotient.num_bits(), static_cast<size_t>(GMP_NUMB_BITS));
|
||||
EXPECT_EQ(quotient.as_uint64(), b1.as_uint64());
|
||||
bigint<1> b1inc = bigint<1>("76749408");
|
||||
bigint<1> b1a = quotient.shorten(b1inc, "test");
|
||||
assert(b1a == b1);
|
||||
@@ -82,15 +81,15 @@ void test_bigint()
|
||||
assert(!(b3a > b3));
|
||||
|
||||
bigint<3>::div_qr(quotient, remainder, b3, b2);
|
||||
assert(quotient.num_bits() < GMP_NUMB_BITS);
|
||||
assert(quotient.as_ulong() == b1.as_ulong());
|
||||
assert(remainder.num_bits() < GMP_NUMB_BITS);
|
||||
assert(remainder.as_ulong() == 42);
|
||||
EXPECT_LT(quotient.num_bits(), static_cast<size_t>(GMP_NUMB_BITS));
|
||||
EXPECT_EQ(quotient.as_uint64(), b1.as_uint64());
|
||||
EXPECT_LT(remainder.num_bits(), static_cast<size_t>(GMP_NUMB_BITS));
|
||||
EXPECT_EQ(remainder.as_uint64(), 42u);
|
||||
|
||||
b3a.clear();
|
||||
assert(b3a.is_zero());
|
||||
assert(b3a.num_bits() == 0);
|
||||
assert(!(b3.is_zero()));
|
||||
EXPECT_TRUE(b3a.is_zero());
|
||||
EXPECT_EQ(b3a.num_bits(), 0u);
|
||||
EXPECT_FALSE(b3.is_zero());
|
||||
|
||||
bigint<4> bx = bigint<4>().randomize();
|
||||
bigint<4> by = bigint<4>().randomize();
|
||||
|
||||
Reference in New Issue
Block a user