|
Barretenberg
The ZK-SNARK library at the core of Aztec
|
A univariate polynomial represented by its values on {0, 1,..., domain_end - 1}. More...
#include <univariate.hpp>
Public Types | |
| using | View = UnivariateView< Fr, domain_end > |
| using | CoefficientAccumulator = UnivariateCoefficientBasis< Fr, MONOMIAL_LENGTH, true > |
| using | value_type = Fr |
Public Member Functions | |
| Univariate ()=default | |
| Univariate (const std::array< Fr, LENGTH > &evaluations) | |
| ~Univariate ()=default | |
| Univariate (const Univariate &other)=default | |
| Univariate (Univariate &&other) noexcept=default | |
| Univariate & | operator= (const Univariate &other)=default |
| Univariate & | operator= (Univariate &&other) noexcept=default |
| operator UnivariateCoefficientBasis< Fr, 2, true > () const | |
| template<bool has_a0_plus_a1> | |
| Univariate (const UnivariateCoefficientBasis< Fr, 2, has_a0_plus_a1 > &monomial) | |
| template<bool has_a0_plus_a1> | |
| Univariate (const UnivariateCoefficientBasis< Fr, 3, has_a0_plus_a1 > &monomial) | |
| Univariate (const Fr &value) | |
| Univariate (const UnivariateView< Fr, domain_end > &in) | |
| Fr & | value_at (size_t i) |
| const Fr & | value_at (size_t i) const |
| size_t | size () |
| bool | is_zero () const |
| std::vector< uint8_t > | to_buffer () const |
| bool | operator== (const Univariate &other) const =default |
| Univariate & | operator+= (const Univariate &other) |
| Univariate & | operator-= (const Univariate &other) |
| Univariate & | operator*= (const Univariate &other) |
| Univariate & | self_sqr () |
| Univariate | operator+ (const Univariate &other) const |
| Univariate | operator- (const Univariate &other) const |
| Univariate | operator- () const |
| Univariate | operator* (const Univariate &other) const |
| Univariate | sqr () const |
| Univariate & | operator+= (const Fr &scalar) |
| Univariate & | operator-= (const Fr &scalar) |
| Univariate & | operator*= (const Fr &scalar) |
| Univariate | operator+ (const Fr &scalar) const |
| Univariate | operator- (const Fr &scalar) const |
| Univariate | operator* (const Fr &scalar) const |
| Univariate & | operator+= (const UnivariateView< Fr, domain_end > &view) |
| Univariate & | operator-= (const UnivariateView< Fr, domain_end > &view) |
| Univariate & | operator*= (const UnivariateView< Fr, domain_end > &view) |
| Univariate | operator+ (const UnivariateView< Fr, domain_end > &view) const |
| Univariate | operator- (const UnivariateView< Fr, domain_end > &view) const |
| Univariate | operator* (const UnivariateView< Fr, domain_end > &view) const |
| template<size_t EXTENDED_DOMAIN_END> requires (domain_end == 2) | |
| operator Univariate< Fr, EXTENDED_DOMAIN_END > () | |
| template<size_t EXTENDED_DOMAIN_END> | |
| Univariate< Fr, EXTENDED_DOMAIN_END > | extend_to () const |
| Given a univariate f represented by {f(0), ..., f(domain_end - 1)}, compute the evaluations {f(domain_end),..., f(extended_domain_end -1)} and return the Univariate represented by {f(0),..., f(extended_domain_end -1)}. | |
| template<size_t INITIAL_LENGTH> | |
| void | self_extend_from () |
| Compute the evaluations of the polynomial from the INITIAL_LENGTH up to the total LENGTH. Currently only supports INITIAL_LENGTH = 2. | |
| Fr | evaluate (const Fr &u) const |
| Evaluate a univariate at a point u not known at compile time and assumed not to be in the domain (else we divide by zero). | |
| auto | begin () |
| auto | begin () const |
| auto | end () |
| auto | end () const |
Static Public Member Functions | |
| static Univariate | serialize_from_buffer (uint8_t const *buffer) |
| static Univariate | get_random () |
| static Univariate | zero () |
Public Attributes | |
| std::array< Fr, LENGTH > | evaluations |
Static Public Attributes | |
| static constexpr size_t | LENGTH = domain_end |
| static constexpr size_t | MONOMIAL_LENGTH = LENGTH > 1 ? 2 : 1 |
Friends | |
| std::ostream & | operator<< (std::ostream &os, const Univariate &u) |
A univariate polynomial represented by its values on {0, 1,..., domain_end - 1}.
Definition at line 32 of file univariate.hpp.
| using bb::Univariate< Fr, domain_end >::CoefficientAccumulator = UnivariateCoefficientBasis<Fr, MONOMIAL_LENGTH, true> |
Definition at line 37 of file univariate.hpp.
| using bb::Univariate< Fr, domain_end >::value_type = Fr |
Definition at line 39 of file univariate.hpp.
| using bb::Univariate< Fr, domain_end >::View = UnivariateView<Fr, domain_end> |
Definition at line 35 of file univariate.hpp.
|
default |
|
inlineexplicit |
Definition at line 46 of file univariate.hpp.
|
default |
|
default |
|
defaultnoexcept |
|
inline |
Definition at line 68 of file univariate.hpp.
|
inline |
Definition at line 81 of file univariate.hpp.
|
inlineexplicit |
Definition at line 99 of file univariate.hpp.
|
inlineexplicit |
Definition at line 107 of file univariate.hpp.
|
inline |
Definition at line 534 of file univariate.hpp.
|
inline |
Definition at line 535 of file univariate.hpp.
|
inline |
Definition at line 537 of file univariate.hpp.
|
inline |
Definition at line 538 of file univariate.hpp.
|
inline |
Evaluate a univariate at a point u not known at compile time and assumed not to be in the domain (else we divide by zero).
| f |
Definition at line 503 of file univariate.hpp.
|
inline |
Given a univariate f represented by {f(0), ..., f(domain_end - 1)}, compute the evaluations {f(domain_end),..., f(extended_domain_end -1)} and return the Univariate represented by {f(0),..., f(extended_domain_end -1)}.
Write v_i = f(x_i) on the domain {x_0, ..., x_{domain_end-1}}. To efficiently compute the needed values of f, we use the barycentric formula
When the domain size is two, extending f = v0(1-X) + v1X to a new value involves just one addition and a subtraction: setting Δ = v1-v0, the values of f(X) are f(0)=v0, f(1)= v0 + Δ, v2 = f(1) + Δ, v3 = f(2) + Δ...
Definition at line 352 of file univariate.hpp.
|
inlinestatic |
Definition at line 143 of file univariate.hpp.
|
inline |
Definition at line 120 of file univariate.hpp.
|
inlineexplicit |
Definition at line 329 of file univariate.hpp.
|
inlineexplicit |
Definition at line 55 of file univariate.hpp.
|
inline |
Definition at line 259 of file univariate.hpp.
|
inline |
Definition at line 207 of file univariate.hpp.
|
inline |
Definition at line 305 of file univariate.hpp.
|
inline |
Definition at line 237 of file univariate.hpp.
|
inline |
Definition at line 171 of file univariate.hpp.
|
inline |
Definition at line 283 of file univariate.hpp.
|
inline |
Definition at line 245 of file univariate.hpp.
|
inline |
Definition at line 185 of file univariate.hpp.
|
inline |
Definition at line 291 of file univariate.hpp.
|
inline |
Definition at line 222 of file univariate.hpp.
|
inline |
Definition at line 157 of file univariate.hpp.
|
inline |
Definition at line 267 of file univariate.hpp.
|
inline |
Definition at line 198 of file univariate.hpp.
|
inline |
Definition at line 252 of file univariate.hpp.
|
inline |
Definition at line 192 of file univariate.hpp.
|
inline |
Definition at line 298 of file univariate.hpp.
|
inline |
Definition at line 230 of file univariate.hpp.
|
inline |
Definition at line 164 of file univariate.hpp.
|
inline |
Definition at line 275 of file univariate.hpp.
|
default |
|
defaultnoexcept |
|
default |
|
inline |
Compute the evaluations of the polynomial from the INITIAL_LENGTH up to the total LENGTH. Currently only supports INITIAL_LENGTH = 2.
| INITIAL_LENGTH |
Definition at line 483 of file univariate.hpp.
|
inline |
Definition at line 178 of file univariate.hpp.
|
inlinestatic |
Definition at line 136 of file univariate.hpp.
|
inline |
Definition at line 117 of file univariate.hpp.
|
inline |
Definition at line 214 of file univariate.hpp.
|
inline |
Definition at line 131 of file univariate.hpp.
|
inline |
Definition at line 115 of file univariate.hpp.
|
inline |
Definition at line 116 of file univariate.hpp.
|
inlinestatic |
Definition at line 152 of file univariate.hpp.
|
friend |
Definition at line 313 of file univariate.hpp.
| std::array<Fr, LENGTH> bb::Univariate< Fr, domain_end >::evaluations |
Definition at line 42 of file univariate.hpp.
|
staticconstexpr |
Definition at line 34 of file univariate.hpp.
|
staticconstexpr |
Definition at line 36 of file univariate.hpp.