5#include <gtest/gtest.h>
25 EXPECT_EQ(
result, expected);
37 EXPECT_EQ(
result, expected);
49 Univariate<fr, 3> expected = (f1.template extend_to<3>()) * (f2.template extend_to<3>());
50 EXPECT_EQ(
result, expected);
63bb::fr fr_from_lane(
size_t lane,
bool nonzero)
66 return nonzero ?
bb::fr(
static_cast<uint64_t
>(0x100 + lane)) :
bb::
fr::zero();
69Vec vec_lane_pattern(uint32_t nonzero_mask)
72 for (
size_t i = 0; i < 5; ++i) {
73 lanes[i] = fr_from_lane(i, (nonzero_mask >> i) & 1u);
80TEST(VectorFieldIsZeroBool, AllZeroLanesIsZero)
82 EXPECT_TRUE(vec_lane_pattern(0b00000).is_zero());
83 EXPECT_EQ(vec_lane_pattern(0b00000).is_zero_mask(), 0b11111u);
86TEST(VectorFieldIsZeroBool, AllNonZeroLanesIsNotZero)
88 EXPECT_FALSE(vec_lane_pattern(0b11111).is_zero());
89 EXPECT_EQ(vec_lane_pattern(0b11111).is_zero_mask(), 0u);
94TEST(VectorFieldIsZeroBool, PartiallyNonZeroLanesIsNotZero)
96 for (uint32_t pattern : { 0b00001u, 0b00010u, 0b00100u, 0b01000u, 0b10000u, 0b01010u, 0b11110u, 0b10101u }) {
97 EXPECT_FALSE(vec_lane_pattern(pattern).is_zero()) <<
"pattern=0b" <<
std::bitset<5>(pattern);
104TEST(UnivariateCoefficientBasisVec, IsZeroFalseWhenSingleLaneIsNonZero)
109 gate.coefficients[1] = vec_lane_pattern(0b00000);
110 gate.coefficients[2] = gate.coefficients[0];
111 EXPECT_FALSE(gate.is_zero());
114TEST(UnivariateCoefficientBasisVec, IsZeroTrueOnlyWhenAllLanesZero)
119 gate.coefficients[1] = vec_lane_pattern(0b00000);
120 gate.coefficients[2] = vec_lane_pattern(0b00000);
121 EXPECT_TRUE(gate.is_zero());
UnivariateView< FF, view_length > UnivariateView
A view of a univariate, also used to truncate univariates.
std::array< Fr, 3 > coefficients
Storage for polynomial coefficients (always 3 elements for uniform layout).
A univariate polynomial represented by its values on {0, 1,..., domain_end - 1}.
testing::Types< bb::fr > FieldTypes
Entry point for Barretenberg command-line interface.
TYPED_TEST_SUITE(CommitmentKeyTest, Curves)
field< Bn254FrParams > fr
TYPED_TEST(CommitmentKeyTest, CommitToZeroPoly)
TEST(BoomerangMegaCircuitBuilder, BasicCircuit)
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
static field random_element(numeric::RNG *engine=nullptr) noexcept
bb::VectorField< bb::Bn254FrParams > Vec