16template <
typename Curve>
22 const size_t num_concatenated,
23 const size_t group_size,
24 const CommitmentKey<Curve>&
ck)
30 size_t N = 1 << u_challenge.
size();
31 size_t MINI_CIRCUIT_N = N / group_size;
40 std::vector<Fr> c_evaluations;
43 for (
size_t i = 0; i < num_concatenated; ++i) {
46 for (
size_t j = 0; j < group_size; j++) {
50 for (
size_t k = 0; k < MINI_CIRCUIT_N; k++) {
56 chunk_polynomial.at(k) = tmp;
57 concatenated_polynomial.at(k * group_size + j) = tmp;
59 concatenation_group.emplace_back(chunk_polynomial);
62 concatenation_groups.emplace_back(concatenation_group);
64 concatenated_polynomials.emplace_back(concatenated_polynomial);
66 c_evaluations.emplace_back(concatenated_polynomial.evaluate_mle(u_challenge));
71 for (
size_t i = 0; i < num_concatenated; ++i) {
72 std::vector<Commitment> concatenation_group_commitment;
73 for (
size_t j = 0; j < group_size; j++) {
74 concatenation_group_commitment.emplace_back(
ck.commit(concatenation_groups[i][j]));
76 concatenation_groups_commitments.emplace_back(concatenation_group_commitment);
79 return { concatenation_groups, concatenated_polynomials, c_evaluations, concatenation_groups_commitments };
Structured polynomial class that represents the coefficients 'a' of a_0 + a_1 x .....
typename Group::affine_element AffineElement
typename Flavor::Polynomial Polynomial
Entry point for Barretenberg command-line interface.
CommitmentKey< Curve > ck
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
static field random_element(numeric::RNG *engine=nullptr) noexcept