Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
flavor.test.cpp
Go to the documentation of this file.
3#include <cstddef>
4#include <gtest/gtest.h>
5
6using namespace bb;
7
8TEST(Flavor, Getters)
9{
11 using Flavor = UltraFlavor;
12 using FF = Flavor::FF;
14
15 const size_t circuit_size = 4;
16 ProverPolynomials polynomials{ circuit_size };
17
18 // set
19 size_t coset_idx = 0;
20 for (auto& id_poly : polynomials.get_ids()) {
21 id_poly = typename Flavor::Polynomial(circuit_size);
22 for (size_t i = 0; i < circuit_size; ++i) {
23 id_poly.at(i) = coset_idx * circuit_size + i;
24 }
25 ++coset_idx;
26 }
27
28 // Polynomials in the proving key can be set through loops over subsets produced by the getters
29 EXPECT_EQ(polynomials.id_1[0], FF(0));
30 EXPECT_EQ(polynomials.id_2[0], FF(4));
31 EXPECT_EQ(polynomials.id_3[0], FF(8));
32
33 Flavor::CommitmentLabels commitment_labels;
34
35 // Globals are also available through STL container sizes
36 EXPECT_EQ(polynomials.get_all().size(), Flavor::NUM_ALL_ENTITIES);
37 // Shited polynomials have the righ tsize
38 EXPECT_EQ(polynomials.get_all().size(), polynomials.get_shifted().size() + polynomials.get_unshifted().size());
39 // Commitment lables are stored in the flavor.
40 EXPECT_EQ(commitment_labels.w_r, "W_R");
41}
42
43TEST(Flavor, AllEntitiesSpecialMemberFunctions)
44{
45 using Flavor = UltraFlavor;
46 using FF = Flavor::FF;
47 using PartiallyEvaluatedMultivariates = Flavor::PartiallyEvaluatedMultivariates;
49
50 constexpr size_t circuit_size = 16;
51 Flavor::ProverPolynomials full_polynomials{ circuit_size };
52 PartiallyEvaluatedMultivariates polynomials_A(full_polynomials, circuit_size);
53
54 Polynomial random_poly{ 10 };
55 for (auto& coeff : random_poly.coeffs()) {
56 coeff = FF::random_element();
57 }
58
59 // Test some special member functions.
60
61 polynomials_A.w_l = random_poly.share();
62
63 ASSERT_EQ(random_poly, polynomials_A.w_l);
64
65 PartiallyEvaluatedMultivariates polynomials_B(polynomials_A);
66 ASSERT_EQ(random_poly, polynomials_B.w_l);
67
68 PartiallyEvaluatedMultivariates polynomials_C(std::move(polynomials_B));
69 ASSERT_EQ(random_poly, polynomials_C.w_l);
70}
71
72TEST(Flavor, GetRow)
73{
74 using Flavor = UltraFlavor;
75 using FF = typename Flavor::FF;
77 std::generate(
78 data.begin(), data.end(), []() { return std::vector<FF>({ FF::random_element(), FF::random_element() }); });
79 Flavor::ProverPolynomials prover_polynomials;
80 for (auto [poly, entry] : zip_view(prover_polynomials.get_all(), data)) {
81 poly = Flavor::Polynomial(entry);
82 }
83 auto row0 = prover_polynomials.get_row(0);
84 auto row1 = prover_polynomials.get_row(1);
85 EXPECT_EQ(row0.q_elliptic, prover_polynomials.q_elliptic[0]);
86 EXPECT_EQ(row1.w_4_shift, prover_polynomials.w_4_shift[1]);
87}
A container for commitment labels.
A container for the prover polynomials.
AllValues get_row(const size_t row_idx) const
Returns the evaluations of all prover polynomials at one point on the boolean hypercube,...
typename Curve::ScalarField FF
static constexpr size_t NUM_ALL_ENTITIES
bb::Polynomial< FF > Polynomial
PartiallyEvaluatedMultivariatesBase< AllEntities< Polynomial >, ProverPolynomials, Polynomial > PartiallyEvaluatedMultivariates
A container for storing the partially evaluated multivariates produced by sumcheck.
Structured polynomial class that represents the coefficients 'a' of a_0 + a_1 x .....
const std::vector< MemoryValue > data
typename ECCVMFlavor::ProverPolynomials ProverPolynomials
std::filesystem::path bb_crs_path()
void init_file_crs_factory(const std::filesystem::path &path)
Entry point for Barretenberg command-line interface.
Definition api.hpp:5
TEST(BoomerangMegaCircuitBuilder, BasicCircuit)
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13
static field random_element(numeric::RNG *engine=nullptr) noexcept