10template <
typename Curve>
16 const size_t num_concatenated,
17 const size_t group_size,
18 const CommitmentKey<Curve>&
ck)
24 size_t N = 1 << u_challenge.
size();
25 size_t MINI_CIRCUIT_N = N / group_size;
34 std::vector<Fr> c_evaluations;
37 for (
size_t i = 0; i < num_concatenated; ++i) {
39 Polynomial concatenated_polynomial(N);
40 for (
size_t j = 0; j < group_size; j++) {
41 Polynomial chunk_polynomial(N);
44 for (
size_t k = 0; k < MINI_CIRCUIT_N; k++) {
50 chunk_polynomial.at(k) = tmp;
51 concatenated_polynomial.at(k * group_size + j) = tmp;
53 concatenation_group.emplace_back(chunk_polynomial);
56 concatenation_groups.emplace_back(concatenation_group);
58 concatenated_polynomials.emplace_back(concatenated_polynomial);
60 c_evaluations.emplace_back(concatenated_polynomial.evaluate_mle(u_challenge));
65 for (
size_t i = 0; i < num_concatenated; ++i) {
66 std::vector<Commitment> concatenation_group_commitment;
67 for (
size_t j = 0; j < group_size; j++) {
68 concatenation_group_commitment.emplace_back(
ck.commit(concatenation_groups[i][j]));
70 concatenation_groups_commitments.emplace_back(concatenation_group_commitment);
73 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
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