Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
bb::BarycentricDataFunctions< Fr, domain_end, num_evals > Class Template Reference

Shared computation logic for barycentric extension and evaluation data. More...

#include <barycentric.hpp>

Inheritance diagram for bb::BarycentricDataFunctions< Fr, domain_end, num_evals >:
bb::BarycentricDataCompileTime< Fr, domain_end, num_evals > bb::BarycentricDataRunTime< Fr, domain_end, num_evals >

Static Public Member Functions

static constexpr std::array< Fr, big_domain_sizeconstruct_big_domain ()
 
static constexpr std::array< Fr, domain_sizeconstruct_lagrange_denominators (const auto &big_domain)
 
static void assert_constant (const Fr &val)
 
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, domain_size *num_evals > construct_denominator_inverses (const auto &big_domain, const auto &lagrange_denominators)
 
static constexpr std::array< Fr, num_evals > construct_full_numerator_values (const auto &big_domain)
 

Static Public Attributes

static constexpr size_t domain_size = domain_end
 
static constexpr size_t big_domain_size = std::max(domain_size, num_evals)
 

Detailed Description

template<class Fr, size_t domain_end, size_t num_evals>
class bb::BarycentricDataFunctions< Fr, domain_end, num_evals >

Shared computation logic for barycentric extension and evaluation data.

All methods are constexpr. For native field types (bb::field) they are evaluated at compile time; for non-constexpr types (e.g. stdlib field_t) the constexpr qualifier is silently ignored and they execute at runtime. The two thin wrapper classes (BarycentricDataCompileTime, BarycentricDataRunTime) inherit these methods and only differ in how they declare their static data members (static constexpr vs inline static const).

Template Parameters
domain_endspecifies the given evaluation domain {0,..., domain_end - 1}
num_evalsthe number of evaluations that are computable with specific barycentric extension formula IMPROVEMENT : Can use lookup tables to optimize the computations.

Definition at line 41 of file barycentric.hpp.

Member Function Documentation

◆ assert_constant()

template<class Fr , size_t domain_end, size_t num_evals>
static void bb::BarycentricDataFunctions< Fr, domain_end, num_evals >::assert_constant ( const Fr val)
inlinestatic

Definition at line 81 of file barycentric.hpp.

◆ batch_invert()

template<class Fr , size_t domain_end, size_t num_evals>
static constexpr std::array< Fr, domain_size *num_evals > bb::BarycentricDataFunctions< Fr, domain_end, num_evals >::batch_invert ( const std::array< Fr, domain_size *num_evals > &  coeffs)
inlinestaticconstexpr

Definition at line 88 of file barycentric.hpp.

◆ construct_big_domain()

template<class Fr , size_t domain_end, size_t num_evals>
static constexpr std::array< Fr, big_domain_size > bb::BarycentricDataFunctions< Fr, domain_end, num_evals >::construct_big_domain ( )
inlinestaticconstexpr

Static constexpr methods for computing arrays of precomputable data used for barycentric extension and evaluation

Definition at line 56 of file barycentric.hpp.

◆ construct_denominator_inverses()

template<class Fr , size_t domain_end, size_t num_evals>
static constexpr std::array< Fr, domain_size *num_evals > bb::BarycentricDataFunctions< Fr, domain_end, num_evals >::construct_denominator_inverses ( const auto &  big_domain,
const auto &  lagrange_denominators 
)
inlinestaticconstexpr

Definition at line 134 of file barycentric.hpp.

◆ construct_full_numerator_values()

template<class Fr , size_t domain_end, size_t num_evals>
static constexpr std::array< Fr, num_evals > bb::BarycentricDataFunctions< Fr, domain_end, num_evals >::construct_full_numerator_values ( const auto &  big_domain)
inlinestaticconstexpr

Definition at line 158 of file barycentric.hpp.

◆ construct_lagrange_denominators()

template<class Fr , size_t domain_end, size_t num_evals>
static constexpr std::array< Fr, domain_size > bb::BarycentricDataFunctions< Fr, domain_end, num_evals >::construct_lagrange_denominators ( const auto &  big_domain)
inlinestaticconstexpr

Definition at line 66 of file barycentric.hpp.

Member Data Documentation

◆ big_domain_size

template<class Fr , size_t domain_end, size_t num_evals>
constexpr size_t bb::BarycentricDataFunctions< Fr, domain_end, num_evals >::big_domain_size = std::max(domain_size, num_evals)
staticconstexpr

Definition at line 44 of file barycentric.hpp.

◆ domain_size

template<class Fr , size_t domain_end, size_t num_evals>
constexpr size_t bb::BarycentricDataFunctions< Fr, domain_end, num_evals >::domain_size = domain_end
staticconstexpr

Definition at line 43 of file barycentric.hpp.


The documentation for this class was generated from the following file: