2#include "barretenberg/common/thread.hpp"
3#include "barretenberg/polynomials/polynomial.hpp"
6namespace proof_system::honk::power_polynomial {
21 constexpr size_t usefulness_margin = 4;
22 size_t num_threads = get_num_cpus_pow2();
23 if (vector_size < (usefulness_margin * num_threads)) {
27 size_t thread_size = vector_size / num_threads;
28 size_t last_thread_size = thread_size;
30 if ((vector_size % thread_size) != 0) {
32 last_thread_size = vector_size % thread_size;
34 parallel_for(num_threads, [&](
size_t i) {
36 Fr starting_power = zeta.pow(i * thread_size);
38 size_t chunk_size = i != (num_threads - 1) ? thread_size : last_thread_size;
41 for (; j < chunk_size - 1; j++) {
42 pow_vector[i * thread_size + j] = starting_power;
43 starting_power *= zeta;
45 pow_vector[i * thread_size + j] = starting_power;
59template <
typename Fr>
Fr evaluate(
Fr zeta, std::span<const Fr> variables)
61 Fr evaluation = Fr::one();
62 for (
size_t i = 0; i < variables.size(); i++) {
64 evaluation *= (zeta - 1) * variables[i] + 1;
Definition: polynomial.hpp:12