Go to the source code of this file.
|
| namespace | bb |
| | Entry point for Barretenberg command-line interface.
|
| |
|
| #define | BB_VECTOR_PROXY_BINARY_OPS(Proxy, Value, Scalar) |
| | Structured polynomial class that represents the coefficients 'a' of a_0 + a_1 x ... a_n x^n of a finite field polynomial equation of degree that is at most the size of some zk circuit. Past 'n' it has a virtual size where it conceptually has coefficients all equal to 0. Notably, we allow indexing past 'n' up to our virtual size (checked only in a debug build, however). As well, we have a start index that means coefficients before start_index are also considered to be 0. The polynomial is used to represent the gates of our arithmetized zk programs. Polynomials use the majority of the memory in proving, so caution should be used in making sure unnecessary copies are avoided, both for avoiding unnecessary memory usage and performance due to unnecessary allocations. The polynomial has a maximum degree in the underlying SharedShiftedVirtualZeroesArray, dictated by the circuit size, this is just used for debugging as we represent.
|
| |
|
| template<typename Fr > |
| void | bb::add_scaled_batch (Polynomial< Fr > &dst, std::span< const PolynomialSpan< const Fr > > sources, std::span< const Fr > scalars) |
| | Fused parallel batched add: dst += sum_i scalars[i] * sources[i].
|
| |
| template<typename Fr > |
| void | bb::add_scaled_batch (Polynomial< Fr > &dst, std::span< const Polynomial< Fr > > sources, std::span< const Fr > scalars) |
| |
| template<typename Fr > |
| void | bb::add_scaled_batch (Polynomial< Fr > &dst, const std::vector< Polynomial< Fr > > &sources, std::span< const Fr > scalars) |
| |
| template<typename Fr > |
| std::shared_ptr< Fr[]> | bb::_allocate_aligned_memory (size_t n_elements) |
| |
| template<typename Fr_ > |
| Fr_ | bb::_evaluate_mle (std::span< const Fr_ > evaluation_points, const SharedShiftedVirtualZeroesArray< Fr_ > &coefficients, bool shift) |
| | Internal implementation to support both native and stdlib circuit field types.
|
| |
| template<typename Fr_ > |
| Fr_ | bb::generic_evaluate_mle (std::span< const Fr_ > evaluation_points, const SharedShiftedVirtualZeroesArray< Fr_ > &coefficients) |
| | Static exposed implementation to support both native and stdlib circuit field types.
|
| |
| template<typename Fr > |
| std::ostream & | bb::operator<< (std::ostream &os, const Polynomial< Fr > &p) |
| |
| template<typename Poly , typename... Polys> |
| auto | bb::zip_polys (Poly &&poly, Polys &&... polys) |
| |
◆ BB_VECTOR_PROXY_BINARY_OPS
| #define BB_VECTOR_PROXY_BINARY_OPS |
( |
|
Proxy, |
|
|
|
Value, |
|
|
|
Scalar |
|
) |
| |
Structured polynomial class that represents the coefficients 'a' of a_0 + a_1 x ... a_n x^n of a finite field polynomial equation of degree that is at most the size of some zk circuit. Past 'n' it has a virtual size where it conceptually has coefficients all equal to 0. Notably, we allow indexing past 'n' up to our virtual size (checked only in a debug build, however). As well, we have a start index that means coefficients before start_index are also considered to be 0. The polynomial is used to represent the gates of our arithmetized zk programs. Polynomials use the majority of the memory in proving, so caution should be used in making sure unnecessary copies are avoided, both for avoiding unnecessary memory usage and performance due to unnecessary allocations. The polynomial has a maximum degree in the underlying SharedShiftedVirtualZeroesArray, dictated by the circuit size, this is just used for debugging as we represent.
- Template Parameters
-
Definition at line 119 of file polynomial.hpp.