81 for (
const auto& u_k : challenge) {
125 if (!
betas.empty()) {
143 if (!
betas.empty()) {
162 const size_t log_num_monomials,
163 const FF& scaling_factor =
FF(1))
170 BB_BENCH_NAME(
"GateSeparatorPolynomial::compute_beta_products");
171 size_t pow_size = 1 << log_num_monomials;
198 [&](
size_t start,
size_t end,
BB_UNUSED size_t chunk_index) {
199 for (
size_t i = start; i < end; i++) {
207 size_t predecessor = i ^ (
static_cast<size_t>(1) << lsb_pos);
209 if (predecessor >= start) {
214 FF result = scaling_factor;
215 size_t remaining = i;
216 while (remaining != 0) {
218 result *=
betas[bit];
219 remaining ^=
static_cast<size_t>(1) << bit;
bb::field< bb::Bn254FrParams > FF
#define BB_BENCH_NAME(name)
Structured polynomial class that represents the coefficients 'a' of a_0 + a_1 x .....
Fr & at(size_t index)
Our mutable accessor, unlike operator[]. We abuse precedent a bit to differentiate at() and operator[...
constexpr T get_lsb(const T in)
constexpr size_t FF_MULTIPLICATION_COST
Entry point for Barretenberg command-line interface.
void parallel_for_heuristic(size_t num_points, const std::function< void(size_t, size_t, size_t)> &func, size_t heuristic_cost)
Split a loop into several loops running in parallel based on operations in 1 iteration.
Implementation of the methods for the -polynomials used in in Sumcheck.
GateSeparatorPolynomial(const std::vector< FF > &betas)
Construct a new GateSeparatorPolynomial object without expanding to a vector of monomials.
size_t periodicity
In Round of Sumcheck, the periodicity equals to and represents the fixed interval at which elements...
GateSeparatorPolynomial(const std::vector< FF > &betas, const size_t log_num_monomials)
Construct a new GateSeparatorPolynomial.
std::vector< FF > betas
The challenges .
FF current_element() const
Computes the component at index current_element_idx in betas.
FF const & operator[](size_t idx) const
Retruns the element in beta_products at place #idx.
void partially_evaluate(FF challenge)
Partially evaluate the -polynomial at the new challenge and update .
FF univariate_eval(FF challenge) const
Evaluate at the challenge point .
GateSeparatorPolynomial(const std::vector< FF > &betas, const std::vector< FF > &challenge)
Constructs a virtual GateSeparator used by the prover in rounds k > d - 1, and computes its partial e...
FF partial_evaluation_result
The value obtained by partially evaluating one variable in the power polynomial at each round....
void partially_evaluate(const FF &challenge, const FF &indicator)
Partially evaluate the -polynomial at the new challenge and update .
size_t current_element_idx
In Round of Sumcheck, it points to the -th element in .
Polynomial< FF > beta_products
The consecutive evaluations for identified with the integers .
static BB_PROFILE Polynomial< FF > compute_beta_products(const std::vector< FF > &betas, const size_t log_num_monomials, const FF &scaling_factor=FF(1))
Given compute for .