34template <IsUltraOrMegaHonk Flavor>
36 const std::vector<uint32_t>& memory_read_records,
37 const std::vector<uint32_t>& memory_write_records,
45 auto wires = polynomials.get_wires();
48 for (
const auto& gate_idx : memory_read_records) {
49 wires[3].at(gate_idx) = wires[2][gate_idx] * eta_three;
50 wires[3].at(gate_idx) += wires[1][gate_idx] * eta_two;
51 wires[3].at(gate_idx) += wires[0][gate_idx] * eta;
55 for (
const auto& gate_idx : memory_write_records) {
56 wires[3].at(gate_idx) = wires[2][gate_idx] * eta_three;
57 wires[3].at(gate_idx) += wires[1][gate_idx] * eta_two;
58 wires[3].at(gate_idx) += wires[0][gate_idx] * eta;
59 wires[3].at(gate_idx) += 1;
70template <IsUltraOrMegaHonk Flavor>
72 const size_t circuit_size,
83 polynomials, relation_parameters, circuit_size);
87 polynomials, relation_parameters, circuit_size);
91 polynomials, relation_parameters, circuit_size);
101template <IsUltraOrMegaHonk Flavor>
103 std::vector<FF>& public_inputs,
104 const size_t pub_inputs_offset,
106 size_t size_override)
109 public_inputs, relation_parameters.
beta, relation_parameters.
gamma, pub_inputs_offset);
112 compute_grand_product<Flavor, UltraPermutationRelation<FF>>(polynomials, relation_parameters, size_override);
121template <IsUltraOrMegaHonk Flavor>
133 add_ram_rom_memory_records_to_wire_4(prover_inst->polynomials,
134 prover_inst->memory_read_records,
135 prover_inst->memory_write_records,
136 prover_inst->relation_parameters.eta,
137 prover_inst->relation_parameters.eta_two,
138 prover_inst->relation_parameters.eta_three);
140 compute_logderivative_inverses(
141 prover_inst->polynomials, prover_inst->dyadic_size(), prover_inst->relation_parameters);
143 compute_grand_product_polynomial(prover_inst->polynomials,
144 prover_inst->public_inputs,
145 prover_inst->pub_inputs_offset(),
146 prover_inst->relation_parameters,
147 prover_inst->get_final_active_wire_idx() + 1);
153#ifdef STARKNET_GARAGA_FLAVORS
#define BB_BENCH_NAME(name)
A container for the prover polynomials.
typename Curve::ScalarField FF
A ProverInstance is normally constructed from a finalized circuit and it contains all the information...
A wrapper for Relations to expose methods used by the Sumcheck prover or verifier to add the contribu...
Methods for managing the compututation of derived witness polynomials such as the permutation grand p...
static void complete_prover_instance_for_test(const std::shared_ptr< ProverInstance_< Flavor > > &prover_inst)
TEST only method for completing computation of the prover polynomials using random challenges.
static void compute_logderivative_inverses(Flavor::ProverPolynomials &polynomials, const size_t circuit_size, RelationParameters< FF > &relation_parameters)
Compute the inverse polynomials used in the log derivative lookup relations.
static void compute_grand_product_polynomial(Flavor::ProverPolynomials &polynomials, std::vector< FF > &public_inputs, const size_t pub_inputs_offset, RelationParameters< FF > &relation_parameters, size_t size_override=0)
Computes public_input_delta and the permutation grand product polynomial.
static void add_ram_rom_memory_records_to_wire_4(typename Flavor::ProverPolynomials &polynomials, const std::vector< uint32_t > &memory_read_records, const std::vector< uint32_t > &memory_write_records, const FF &eta, const FF &eta_two, const FF &eta_three)
Add RAM/ROM memory records to the fourth wire polynomial.
Entry point for Barretenberg command-line interface.
void compute_logderivative_inverse(Polynomials &polynomials, auto &relation_parameters, const size_t circuit_size)
Compute the inverse polynomial I(X) required for logderivative lookupsdetails Inverse may be defined ...
Container for parameters used by the grand product (permutation, lookup) Honk relations.
static field random_element(numeric::RNG *engine=nullptr) noexcept