36 const std::vector<uint32_t>& memory_read_records,
37 const std::vector<uint32_t>& memory_write_records,
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;
103 std::vector<FF>& public_inputs,
104 const size_t pub_inputs_offset,
107 size_t size_override)
110 public_inputs, relation_parameters.
beta, relation_parameters.
gamma, pub_inputs_offset);
113 compute_grand_product<Flavor, UltraPermutationRelation<FF>>(
114 polynomials, relation_parameters, size_override, active_region_data);
135 add_ram_rom_memory_records_to_wire_4(decider_pk->polynomials,
136 decider_pk->memory_read_records,
137 decider_pk->memory_write_records,
138 decider_pk->relation_parameters.eta,
139 decider_pk->relation_parameters.eta_two,
140 decider_pk->relation_parameters.eta_three);
142 compute_logderivative_inverses(decider_pk->polynomials, decider_pk->dyadic_size(), decider_pk->relation_parameters);
144 compute_grand_product_polynomial(decider_pk->polynomials,
145 decider_pk->public_inputs,
146 decider_pk->pub_inputs_offset(),
147 decider_pk->active_region_data,
148 decider_pk->relation_parameters,
149 decider_pk->get_final_active_wire_idx() + 1);
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 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.
static void compute_grand_product_polynomial(Flavor::ProverPolynomials &polynomials, std::vector< FF > &public_inputs, const size_t pub_inputs_offset, ActiveRegionData &active_region_data, RelationParameters< FF > &relation_parameters, size_t size_override=0)
Computes public_input_delta and the permutation grand product polynomial.
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 ...