Barretenberg
The ZK-SNARK library at the core of Aztec
|
#include "barretenberg/common/assert.hpp"
#include "barretenberg/common/mem.hpp"
#include "barretenberg/common/op_count.hpp"
#include "barretenberg/common/throw_or_abort.hpp"
#include "barretenberg/common/zip_view.hpp"
#include "barretenberg/constants.hpp"
#include "barretenberg/honk/types/circuit_type.hpp"
#include "barretenberg/polynomials/shared_shifted_virtual_zeroes_array.hpp"
#include "evaluation_domain.hpp"
#include "polynomial_arithmetic.hpp"
#include <cstddef>
#include <fstream>
#include <ranges>
Go to the source code of this file.
Classes | |
struct | bb::PolynomialSpan< Fr > |
class | bb::Polynomial< Fr > |
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. More... | |
Namespaces | |
namespace | bb |
Entry point for Barretenberg command-line interface. | |
Functions | |
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) |