36 static constexpr size_t domain_size = domain_end - domain_start;
48 result[i] =
static_cast<Fr>(i + domain_start);
75 for (
size_t i = 0; i < n; ++i) {
76 temporaries[i] = accumulator;
81 accumulator *= coeffs[i];
84 accumulator =
Fr(1) / accumulator;
87 for (
size_t i = n - 1; i < n; --i) {
89 T0 = accumulator * temporaries[i];
90 accumulator *= coeffs[i];
120 for (
size_t i = 0; i != num_evals; ++i) {
122 Fr v_i = i + domain_start;
151 result[i] =
static_cast<Fr>(i + domain_start);
177 for (
size_t i = 0; i < n; ++i) {
178 temporaries[i] = accumulator;
179 if (coeffs[i].get_value() == 0) {
183 accumulator *= coeffs[i];
186 accumulator =
Fr(1) / accumulator;
189 for (
size_t i = n - 1; i < n; --i) {
191 T0 = accumulator * temporaries[i];
192 accumulator *= coeffs[i];
205 if constexpr (num_evals == 1) {
228 for (
size_t i = 0; i != num_evals; ++i) {
230 Fr v_i = i + domain_start;
251 static constexpr bool value =
false;
267template <
class Fr,
size_t domain_end,
size_t num_evals,
size_t domain_start = 0>
static constexpr size_t domain_size
static constexpr std::array< Fr, big_domain_size > construct_big_domain()
static constexpr std::array< Fr, domain_size *num_evals > batch_invert(const std::array< Fr, domain_size *num_evals > &coeffs)
static constexpr std::array< Fr, num_evals > construct_full_numerator_values(const auto &big_domain)
static constexpr auto lagrange_denominators
static constexpr size_t big_domain_size
static constexpr auto full_numerator_values
static constexpr auto big_domain
static constexpr std::array< Fr, domain_size > construct_lagrange_denominators(const auto &big_domain)
static constexpr auto precomputed_denominator_inverses
static constexpr std::array< Fr, domain_size *num_evals > construct_denominator_inverses(const auto &big_domain, const auto &lagrange_denominators)
static std::array< Fr, domain_size *num_evals > construct_denominator_inverses(const auto &big_domain, const auto &lagrange_denominators)
static std::array< Fr, domain_size > construct_lagrange_denominators(const auto &big_domain)
static constexpr size_t domain_size
static std::array< Fr, num_evals > construct_full_numerator_values(const auto &big_domain)
static const auto precomputed_denominator_inverses
static std::array< Fr, domain_size *num_evals > batch_invert(const std::array< Fr, domain_size *num_evals > &coeffs)
static const auto full_numerator_values
static std::array< Fr, big_domain_size > construct_big_domain()
static const auto big_domain
static const auto lagrange_denominators
static constexpr size_t big_domain_size
Entry point for Barretenberg command-line interface.
constexpr bool is_field_type_v
std::conditional_t< is_field_type_v< Fr >, BarycentricDataCompileTime< Fr, domain_end, num_evals, domain_start >, BarycentricDataRunTime< Fr, domain_end, num_evals, domain_start > > BarycentricData
Exposes BarycentricData with compile time arrays if the type is bberg::field and runtime arrays other...
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Helper to determine whether input is bberg::field type.
static constexpr bool value