6#include <gtest/gtest.h>
14TEST(AccumulatorTest, DefaultConstructorReducesToZero)
17 EXPECT_TRUE(acc.reduce().is_zero());
20TEST(AccumulatorTest, ScalarOnlyAddsMatchSerialSum)
28 for (
const auto& x : xs) {
30 expected = expected + x;
32 EXPECT_EQ(acc.reduce(), expected);
35TEST(AccumulatorTest, VectorOnlyAddsMatchSerialSum)
43 for (
size_t group = 0; group < 3; ++group) {
45 xs[5 * group + 0], xs[5 * group + 1], xs[5 * group + 2], xs[5 * group + 3], xs[5 * group + 4]
50 for (
const auto& x : xs) {
51 expected = expected + x;
53 EXPECT_EQ(acc.reduce(), expected);
56TEST(AccumulatorTest, MixedScalarAndVectorAdds)
72 for (
const auto& x : xs) {
73 expected = expected + x;
75 EXPECT_EQ(acc.reduce(), expected);
78TEST(AccumulatorTest, ReduceOrderInvariantOverLanePermutation)
TEST(acir_formal_proofs, uint_terms_add)
Tests 128-bit unsigned addition Verifies that the ACIR implementation of addition is correct Executio...
field< Bn254FrParams > fr
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
static field random_element(numeric::RNG *engine=nullptr) noexcept
BB_INLINE constexpr field reduce() const noexcept
reduce once, i.e., if the value is bigger than the modulus, subtract off the modulus once.
static constexpr field zero()
bb::VectorField< bb::Bn254FrParams > Vec