100 constexpr size_t mini_circuit_size = Flavor::MINI_CIRCUIT_SIZE;
108 auto lagrange_odd_in_minicircuit = prover_polynomials.lagrange_odd_in_minicircuit;
110 for (
size_t i = prover_polynomials.lagrange_odd_in_minicircuit.start_index();
111 i < lagrange_odd_in_minicircuit.end_index();
113 prover_polynomials.lagrange_odd_in_minicircuit.at(i) = 1;
116 constexpr size_t NUM_LIMB_BITS = Flavor::CircuitBuilder::NUM_LIMB_BITS;
117 constexpr size_t HIGH_WIDE_LIMB_WIDTH =
118 Flavor::CircuitBuilder::NUM_LIMB_BITS + Flavor::CircuitBuilder::NUM_LAST_LIMB_BITS;
119 constexpr size_t LOW_WIDE_LIMB_WIDTH = Flavor::CircuitBuilder::NUM_LIMB_BITS * 2;
120 constexpr size_t Z_LIMB_WIDTH = 128;
121 constexpr size_t MICRO_LIMB_WIDTH = Flavor::MICRO_LIMB_BITS;
122 constexpr size_t SHIFT_12_TO_14 = 4;
123 constexpr size_t SHIFT_10_TO_14 = 16;
124 constexpr size_t SHIFT_8_TO_14 = 64;
125 constexpr size_t SHIFT_4_TO_14 = 1024;
132 auto decompose_standard_limb =
133 [](
auto& input,
auto& limb_0,
auto& limb_1,
auto& limb_2,
auto& limb_3,
auto& limb_4,
auto& shifted_limb) {
135 limb_1 =
uint256_t(input).
slice(MICRO_LIMB_WIDTH, MICRO_LIMB_WIDTH * 2);
136 limb_2 =
uint256_t(input).
slice(MICRO_LIMB_WIDTH * 2, MICRO_LIMB_WIDTH * 3);
137 limb_3 =
uint256_t(input).
slice(MICRO_LIMB_WIDTH * 3, MICRO_LIMB_WIDTH * 4);
138 limb_4 =
uint256_t(input).
slice(MICRO_LIMB_WIDTH * 4, MICRO_LIMB_WIDTH * 5);
139 shifted_limb = limb_4 * SHIFT_12_TO_14;
147 auto decompose_standard_top_limb =
148 [](
auto& input,
auto& limb_0,
auto& limb_1,
auto& limb_2,
auto& limb_3,
auto& shifted_limb) {
150 limb_1 =
uint256_t(input).
slice(MICRO_LIMB_WIDTH, MICRO_LIMB_WIDTH * 2);
151 limb_2 =
uint256_t(input).
slice(MICRO_LIMB_WIDTH * 2, MICRO_LIMB_WIDTH * 3);
152 limb_3 =
uint256_t(input).
slice(MICRO_LIMB_WIDTH * 3, MICRO_LIMB_WIDTH * 4);
153 shifted_limb = limb_3 * SHIFT_8_TO_14;
161 auto decompose_standard_top_z_limb =
162 [](
auto& input,
auto& limb_0,
auto& limb_1,
auto& limb_2,
auto& limb_3,
auto& limb_4,
auto& shifted_limb) {
164 limb_1 =
uint256_t(input).
slice(MICRO_LIMB_WIDTH, MICRO_LIMB_WIDTH * 2);
165 limb_2 =
uint256_t(input).
slice(MICRO_LIMB_WIDTH * 2, MICRO_LIMB_WIDTH * 3);
166 limb_3 =
uint256_t(input).
slice(MICRO_LIMB_WIDTH * 3, MICRO_LIMB_WIDTH * 4);
167 limb_4 =
uint256_t(input).
slice(MICRO_LIMB_WIDTH * 4, MICRO_LIMB_WIDTH * 5);
168 shifted_limb = limb_4 * SHIFT_4_TO_14;
176 auto decompose_top_quotient_limb =
177 [](
auto& input,
auto& limb_0,
auto& limb_1,
auto& limb_2,
auto& limb_3,
auto& shifted_limb) {
179 limb_1 =
uint256_t(input).
slice(MICRO_LIMB_WIDTH, MICRO_LIMB_WIDTH * 2);
180 limb_2 =
uint256_t(input).
slice(MICRO_LIMB_WIDTH * 2, MICRO_LIMB_WIDTH * 3);
181 limb_3 =
uint256_t(input).
slice(MICRO_LIMB_WIDTH * 3, MICRO_LIMB_WIDTH * 4);
182 shifted_limb = limb_3 * SHIFT_10_TO_14;
189 auto decompose_relation_limb =
190 [](
auto& input,
auto& limb_0,
auto& limb_1,
auto& limb_2,
auto& limb_3,
auto& limb_4,
auto& limb_5) {
192 limb_1 =
uint256_t(input).
slice(MICRO_LIMB_WIDTH, MICRO_LIMB_WIDTH * 2);
193 limb_2 =
uint256_t(input).
slice(MICRO_LIMB_WIDTH * 2, MICRO_LIMB_WIDTH * 3);
194 limb_3 =
uint256_t(input).
slice(MICRO_LIMB_WIDTH * 3, MICRO_LIMB_WIDTH * 4);
195 limb_4 =
uint256_t(input).
slice(MICRO_LIMB_WIDTH * 4, MICRO_LIMB_WIDTH * 5);
196 limb_5 =
uint256_t(input).
slice(MICRO_LIMB_WIDTH * 5, MICRO_LIMB_WIDTH * 6);
200 for (
size_t i = 1; i < mini_circuit_size - 1; i += 2) {
202 prover_polynomials.x_lo_y_hi.at(i) =
204 prover_polynomials.x_hi_z_1.at(i) =
208 prover_polynomials.y_lo_z_2.at(i) =
210 prover_polynomials.x_lo_y_hi.at(i + 1) =
214 prover_polynomials.x_hi_z_1.at(i + 1) =
FF(
engine.get_random_uint256() & ((
uint256_t(1) << Z_LIMB_WIDTH) - 1));
215 prover_polynomials.y_lo_z_2.at(i + 1) =
FF(
engine.get_random_uint256() & ((
uint256_t(1) << Z_LIMB_WIDTH) - 1));
218 prover_polynomials.p_x_low_limbs.at(i) =
uint256_t(prover_polynomials.x_lo_y_hi.at(i)).
slice(0, NUM_LIMB_BITS);
219 prover_polynomials.p_x_low_limbs.at(i + 1) =
220 uint256_t(prover_polynomials.x_lo_y_hi.at(i)).
slice(NUM_LIMB_BITS, 2 * NUM_LIMB_BITS);
221 prover_polynomials.p_x_high_limbs.at(i) =
uint256_t(prover_polynomials.x_hi_z_1[i]).
slice(0, NUM_LIMB_BITS);
222 prover_polynomials.p_x_high_limbs.at(i + 1) =
223 uint256_t(prover_polynomials.x_hi_z_1.at(i)).
slice(NUM_LIMB_BITS, 2 * NUM_LIMB_BITS);
226 prover_polynomials.p_y_low_limbs.at(i) =
uint256_t(prover_polynomials.y_lo_z_2[i]).
slice(0, NUM_LIMB_BITS);
227 prover_polynomials.p_y_low_limbs.at(i + 1) =
228 uint256_t(prover_polynomials.y_lo_z_2[i]).
slice(NUM_LIMB_BITS, 2 * NUM_LIMB_BITS);
229 prover_polynomials.p_y_high_limbs.at(i) =
230 uint256_t(prover_polynomials.x_lo_y_hi[i + 1]).
slice(0, NUM_LIMB_BITS);
231 prover_polynomials.p_y_high_limbs.at(i + 1) =
232 uint256_t(prover_polynomials.x_lo_y_hi[i + 1]).
slice(NUM_LIMB_BITS, 2 * NUM_LIMB_BITS);
235 prover_polynomials.z_low_limbs.at(i) =
uint256_t(prover_polynomials.x_hi_z_1[i + 1]).
slice(0, NUM_LIMB_BITS);
236 prover_polynomials.z_low_limbs.at(i + 1) =
237 uint256_t(prover_polynomials.y_lo_z_2[i + 1]).
slice(0, NUM_LIMB_BITS);
238 prover_polynomials.z_high_limbs.at(i) =
239 uint256_t(prover_polynomials.x_hi_z_1[i + 1]).
slice(NUM_LIMB_BITS, 2 * NUM_LIMB_BITS);
240 prover_polynomials.z_high_limbs.at(i + 1) =
241 uint256_t(prover_polynomials.y_lo_z_2[i + 1]).
slice(NUM_LIMB_BITS, 2 * NUM_LIMB_BITS);
245 prover_polynomials.accumulators_binary_limbs_0.at(i) = tmp.slice(0, NUM_LIMB_BITS);
246 prover_polynomials.accumulators_binary_limbs_1.at(i) = tmp.slice(NUM_LIMB_BITS, NUM_LIMB_BITS * 2);
247 prover_polynomials.accumulators_binary_limbs_2.at(i) = tmp.slice(NUM_LIMB_BITS * 2, NUM_LIMB_BITS * 3);
248 prover_polynomials.accumulators_binary_limbs_3.at(i) = tmp.slice(NUM_LIMB_BITS * 3, NUM_LIMB_BITS * 4);
251 decompose_standard_limb(prover_polynomials.p_x_low_limbs.at(i),
252 prover_polynomials.p_x_low_limbs_range_constraint_0.at(i),
253 prover_polynomials.p_x_low_limbs_range_constraint_1.at(i),
254 prover_polynomials.p_x_low_limbs_range_constraint_2.at(i),
255 prover_polynomials.p_x_low_limbs_range_constraint_3.at(i),
256 prover_polynomials.p_x_low_limbs_range_constraint_4.at(i),
257 prover_polynomials.p_x_low_limbs_range_constraint_tail.at(i));
259 decompose_standard_limb(prover_polynomials.p_x_low_limbs.at(i + 1),
260 prover_polynomials.p_x_low_limbs_range_constraint_0.at(i + 1),
261 prover_polynomials.p_x_low_limbs_range_constraint_1.at(i + 1),
262 prover_polynomials.p_x_low_limbs_range_constraint_2.at(i + 1),
263 prover_polynomials.p_x_low_limbs_range_constraint_3.at(i + 1),
264 prover_polynomials.p_x_low_limbs_range_constraint_4.at(i + 1),
265 prover_polynomials.p_x_low_limbs_range_constraint_tail.at(i + 1));
268 decompose_standard_limb(prover_polynomials.p_x_high_limbs.at(i),
269 prover_polynomials.p_x_high_limbs_range_constraint_0.at(i),
270 prover_polynomials.p_x_high_limbs_range_constraint_1.at(i),
271 prover_polynomials.p_x_high_limbs_range_constraint_2.at(i),
272 prover_polynomials.p_x_high_limbs_range_constraint_3.at(i),
273 prover_polynomials.p_x_high_limbs_range_constraint_4.at(i),
274 prover_polynomials.p_x_high_limbs_range_constraint_tail.at(i));
276 decompose_standard_top_limb(prover_polynomials.p_x_high_limbs.at(i + 1),
277 prover_polynomials.p_x_high_limbs_range_constraint_0.at(i + 1),
278 prover_polynomials.p_x_high_limbs_range_constraint_1.at(i + 1),
279 prover_polynomials.p_x_high_limbs_range_constraint_2.at(i + 1),
280 prover_polynomials.p_x_high_limbs_range_constraint_3.at(i + 1),
281 prover_polynomials.p_x_high_limbs_range_constraint_4.at(i + 1));
284 decompose_standard_limb(prover_polynomials.p_y_low_limbs.at(i),
285 prover_polynomials.p_y_low_limbs_range_constraint_0.at(i),
286 prover_polynomials.p_y_low_limbs_range_constraint_1.at(i),
287 prover_polynomials.p_y_low_limbs_range_constraint_2.at(i),
288 prover_polynomials.p_y_low_limbs_range_constraint_3.at(i),
289 prover_polynomials.p_y_low_limbs_range_constraint_4.at(i),
290 prover_polynomials.p_y_low_limbs_range_constraint_tail.at(i));
292 decompose_standard_limb(prover_polynomials.p_y_low_limbs.at(i + 1),
293 prover_polynomials.p_y_low_limbs_range_constraint_0.at(i + 1),
294 prover_polynomials.p_y_low_limbs_range_constraint_1.at(i + 1),
295 prover_polynomials.p_y_low_limbs_range_constraint_2.at(i + 1),
296 prover_polynomials.p_y_low_limbs_range_constraint_3.at(i + 1),
297 prover_polynomials.p_y_low_limbs_range_constraint_4.at(i + 1),
298 prover_polynomials.p_y_low_limbs_range_constraint_tail.at(i + 1));
301 decompose_standard_limb(prover_polynomials.p_y_high_limbs.at(i),
302 prover_polynomials.p_y_high_limbs_range_constraint_0.at(i),
303 prover_polynomials.p_y_high_limbs_range_constraint_1.at(i),
304 prover_polynomials.p_y_high_limbs_range_constraint_2.at(i),
305 prover_polynomials.p_y_high_limbs_range_constraint_3.at(i),
306 prover_polynomials.p_y_high_limbs_range_constraint_4.at(i),
307 prover_polynomials.p_y_high_limbs_range_constraint_tail.at(i));
309 decompose_standard_top_limb(prover_polynomials.p_y_high_limbs.at(i + 1),
310 prover_polynomials.p_y_high_limbs_range_constraint_0.at(i + 1),
311 prover_polynomials.p_y_high_limbs_range_constraint_1.at(i + 1),
312 prover_polynomials.p_y_high_limbs_range_constraint_2.at(i + 1),
313 prover_polynomials.p_y_high_limbs_range_constraint_3.at(i + 1),
314 prover_polynomials.p_y_high_limbs_range_constraint_4.at(i + 1));
317 decompose_standard_limb(prover_polynomials.z_low_limbs.at(i),
318 prover_polynomials.z_low_limbs_range_constraint_0.at(i),
319 prover_polynomials.z_low_limbs_range_constraint_1.at(i),
320 prover_polynomials.z_low_limbs_range_constraint_2.at(i),
321 prover_polynomials.z_low_limbs_range_constraint_3.at(i),
322 prover_polynomials.z_low_limbs_range_constraint_4.at(i),
323 prover_polynomials.z_low_limbs_range_constraint_tail.at(i));
325 decompose_standard_limb(prover_polynomials.z_low_limbs.at(i + 1),
326 prover_polynomials.z_low_limbs_range_constraint_0.at(i + 1),
327 prover_polynomials.z_low_limbs_range_constraint_1.at(i + 1),
328 prover_polynomials.z_low_limbs_range_constraint_2.at(i + 1),
329 prover_polynomials.z_low_limbs_range_constraint_3.at(i + 1),
330 prover_polynomials.z_low_limbs_range_constraint_4.at(i + 1),
331 prover_polynomials.z_low_limbs_range_constraint_tail.at(i + 1));
334 decompose_standard_top_z_limb(prover_polynomials.z_high_limbs.at(i),
335 prover_polynomials.z_high_limbs_range_constraint_0.at(i),
336 prover_polynomials.z_high_limbs_range_constraint_1.at(i),
337 prover_polynomials.z_high_limbs_range_constraint_2.at(i),
338 prover_polynomials.z_high_limbs_range_constraint_3.at(i),
339 prover_polynomials.z_high_limbs_range_constraint_4.at(i),
340 prover_polynomials.z_high_limbs_range_constraint_tail.at(i));
342 decompose_standard_top_z_limb(prover_polynomials.z_high_limbs.at(i + 1),
343 prover_polynomials.z_high_limbs_range_constraint_0.at(i + 1),
344 prover_polynomials.z_high_limbs_range_constraint_1.at(i + 1),
345 prover_polynomials.z_high_limbs_range_constraint_2.at(i + 1),
346 prover_polynomials.z_high_limbs_range_constraint_3.at(i + 1),
347 prover_polynomials.z_high_limbs_range_constraint_4.at(i + 1),
348 prover_polynomials.z_high_limbs_range_constraint_tail.at(i + 1));
351 decompose_standard_limb(prover_polynomials.accumulators_binary_limbs_0.at(i),
352 prover_polynomials.accumulator_low_limbs_range_constraint_0.at(i),
353 prover_polynomials.accumulator_low_limbs_range_constraint_1.at(i),
354 prover_polynomials.accumulator_low_limbs_range_constraint_2.at(i),
355 prover_polynomials.accumulator_low_limbs_range_constraint_3.at(i),
356 prover_polynomials.accumulator_low_limbs_range_constraint_4.at(i),
357 prover_polynomials.accumulator_low_limbs_range_constraint_tail.at(i));
358 decompose_standard_limb(prover_polynomials.accumulators_binary_limbs_1.at(i),
359 prover_polynomials.accumulator_low_limbs_range_constraint_0.at(i + 1),
360 prover_polynomials.accumulator_low_limbs_range_constraint_1.at(i + 1),
361 prover_polynomials.accumulator_low_limbs_range_constraint_2.at(i + 1),
362 prover_polynomials.accumulator_low_limbs_range_constraint_3.at(i + 1),
363 prover_polynomials.accumulator_low_limbs_range_constraint_4.at(i + 1),
364 prover_polynomials.accumulator_low_limbs_range_constraint_tail.at(i + 1));
366 decompose_standard_limb(prover_polynomials.accumulators_binary_limbs_2.at(i),
367 prover_polynomials.accumulator_high_limbs_range_constraint_0.at(i),
368 prover_polynomials.accumulator_high_limbs_range_constraint_1.at(i),
369 prover_polynomials.accumulator_high_limbs_range_constraint_2.at(i),
370 prover_polynomials.accumulator_high_limbs_range_constraint_3.at(i),
371 prover_polynomials.accumulator_high_limbs_range_constraint_4.at(i),
372 prover_polynomials.accumulator_high_limbs_range_constraint_tail.at(i));
373 decompose_standard_top_limb(prover_polynomials.accumulators_binary_limbs_3.at(i),
374 prover_polynomials.accumulator_high_limbs_range_constraint_0.at(i + 1),
375 prover_polynomials.accumulator_high_limbs_range_constraint_1.at(i + 1),
376 prover_polynomials.accumulator_high_limbs_range_constraint_2.at(i + 1),
377 prover_polynomials.accumulator_high_limbs_range_constraint_3.at(i + 1),
378 prover_polynomials.accumulator_high_limbs_range_constraint_4.at(i + 1));
381 decompose_standard_limb(prover_polynomials.quotient_low_binary_limbs.at(i),
382 prover_polynomials.quotient_low_limbs_range_constraint_0.at(i),
383 prover_polynomials.quotient_low_limbs_range_constraint_1.at(i),
384 prover_polynomials.quotient_low_limbs_range_constraint_2.at(i),
385 prover_polynomials.quotient_low_limbs_range_constraint_3.at(i),
386 prover_polynomials.quotient_low_limbs_range_constraint_4.at(i),
387 prover_polynomials.quotient_low_limbs_range_constraint_tail.at(i));
388 decompose_standard_limb(prover_polynomials.quotient_low_binary_limbs_shift.at(i),
389 prover_polynomials.quotient_low_limbs_range_constraint_0.at(i + 1),
390 prover_polynomials.quotient_low_limbs_range_constraint_1.at(i + 1),
391 prover_polynomials.quotient_low_limbs_range_constraint_2.at(i + 1),
392 prover_polynomials.quotient_low_limbs_range_constraint_3.at(i + 1),
393 prover_polynomials.quotient_low_limbs_range_constraint_4.at(i + 1),
394 prover_polynomials.quotient_low_limbs_range_constraint_tail.at(i + 1));
396 decompose_standard_limb(prover_polynomials.quotient_high_binary_limbs.at(i),
397 prover_polynomials.quotient_high_limbs_range_constraint_0.at(i),
398 prover_polynomials.quotient_high_limbs_range_constraint_1.at(i),
399 prover_polynomials.quotient_high_limbs_range_constraint_2.at(i),
400 prover_polynomials.quotient_high_limbs_range_constraint_3.at(i),
401 prover_polynomials.quotient_high_limbs_range_constraint_4.at(i),
402 prover_polynomials.quotient_high_limbs_range_constraint_tail.at(i));
404 decompose_top_quotient_limb(prover_polynomials.quotient_high_binary_limbs_shift.at(i),
405 prover_polynomials.quotient_high_limbs_range_constraint_0.at(i + 1),
406 prover_polynomials.quotient_high_limbs_range_constraint_1.at(i + 1),
407 prover_polynomials.quotient_high_limbs_range_constraint_2.at(i + 1),
408 prover_polynomials.quotient_high_limbs_range_constraint_3.at(i + 1),
409 prover_polynomials.quotient_high_limbs_range_constraint_4.at(i + 1));
412 decompose_relation_limb(prover_polynomials.relation_wide_limbs.at(i),
413 prover_polynomials.relation_wide_limbs_range_constraint_0.at(i),
414 prover_polynomials.relation_wide_limbs_range_constraint_1.at(i),
415 prover_polynomials.relation_wide_limbs_range_constraint_2.at(i),
416 prover_polynomials.relation_wide_limbs_range_constraint_3.at(i),
417 prover_polynomials.p_x_high_limbs_range_constraint_tail.at(i + 1),
418 prover_polynomials.accumulator_high_limbs_range_constraint_tail.at(i + 1));
420 decompose_relation_limb(prover_polynomials.relation_wide_limbs.at(i + 1),
421 prover_polynomials.relation_wide_limbs_range_constraint_0.at(i + 1),
422 prover_polynomials.relation_wide_limbs_range_constraint_1.at(i + 1),
423 prover_polynomials.relation_wide_limbs_range_constraint_2.at(i + 1),
424 prover_polynomials.relation_wide_limbs_range_constraint_3.at(i + 1),
425 prover_polynomials.p_y_high_limbs_range_constraint_tail.at(i + 1),
426 prover_polynomials.quotient_high_limbs_range_constraint_tail.at(i + 1));
431 prover_polynomials, params,
"TranslatorDecompositionRelation");
447 constexpr size_t NUM_LIMB_BITS = Flavor::NUM_LIMB_BITS;
449 constexpr size_t mini_circuit_size_without_masking =
455 op_queue->no_op_ultra_only();
456 op_queue->random_op_ultra_only();
457 op_queue->random_op_ultra_only();
458 op_queue->random_op_ultra_only();
462 for (
size_t i = 0; i < (mini_circuit_size >> 1) / 2; i++) {
463 switch (
engine.get_random_uint8() & 3) {
465 op_queue->no_op_ultra_only();
468 op_queue->eq_and_reset();
471 op_queue->add_accumulate(GroupElement::random_element(&
engine));
474 op_queue->mul_accumulate(GroupElement::random_element(&
engine), FF::random_element(&
engine));
479 for (
size_t i = 0; i < 100; i++) {
480 switch (
engine.get_random_uint8() & 3) {
482 op_queue->no_op_ultra_only();
485 op_queue->eq_and_reset();
488 op_queue->add_accumulate(GroupElement::random_element(&
engine));
491 op_queue->mul_accumulate(GroupElement::random_element(&
engine), FF::random_element(&
engine));
495 op_queue->random_op_ultra_only();
496 op_queue->random_op_ultra_only();
499 const auto batching_challenge_v = BF::random_element(&
engine);
500 const auto evaluation_input_x = BF::random_element(&
engine);
507 auto v_power = BF::one();
508 for (
size_t i = 0; i < 4 ; i++) {
509 v_power *= batching_challenge_v;
512 uint_v_power.slice(NUM_LIMB_BITS, NUM_LIMB_BITS * 2),
513 uint_v_power.slice(NUM_LIMB_BITS * 2, NUM_LIMB_BITS * 3),
514 uint_v_power.slice(NUM_LIMB_BITS * 3, NUM_LIMB_BITS * 4),
517 auto uint_input_x =
uint256_t(evaluation_input_x);
519 uint_input_x.slice(NUM_LIMB_BITS, NUM_LIMB_BITS * 2),
520 uint_input_x.slice(NUM_LIMB_BITS * 2, NUM_LIMB_BITS * 3),
521 uint_input_x.slice(NUM_LIMB_BITS * 3, NUM_LIMB_BITS * 4),
528 for (
size_t i = Builder::NUM_NO_OPS_START + Builder::NUM_RANDOM_OPS_START;
529 i < circuit_builder.num_gates - Builder::NUM_RANDOM_OPS_END;
531 prover_polynomials.op.at(i) = circuit_builder.get_variable(circuit_builder.wires[circuit_builder.OP][i]);
532 prover_polynomials.p_x_low_limbs.at(i) =
533 circuit_builder.get_variable(circuit_builder.wires[circuit_builder.P_X_LOW_LIMBS][i]);
534 prover_polynomials.p_x_high_limbs.at(i) =
535 circuit_builder.get_variable(circuit_builder.wires[circuit_builder.P_X_HIGH_LIMBS][i]);
536 prover_polynomials.p_y_low_limbs.at(i) =
537 circuit_builder.get_variable(circuit_builder.wires[circuit_builder.P_Y_LOW_LIMBS][i]);
538 prover_polynomials.p_y_high_limbs.at(i) =
539 circuit_builder.get_variable(circuit_builder.wires[circuit_builder.P_Y_HIGH_LIMBS][i]);
540 prover_polynomials.z_low_limbs.at(i) =
541 circuit_builder.get_variable(circuit_builder.wires[circuit_builder.Z_LOW_LIMBS][i]);
542 prover_polynomials.z_high_limbs.at(i) =
543 circuit_builder.get_variable(circuit_builder.wires[circuit_builder.Z_HIGH_LIMBS][i]);
544 prover_polynomials.accumulators_binary_limbs_0.at(i) =
545 circuit_builder.get_variable(circuit_builder.wires[circuit_builder.ACCUMULATORS_BINARY_LIMBS_0][i]);
546 prover_polynomials.accumulators_binary_limbs_1.at(i) =
547 circuit_builder.get_variable(circuit_builder.wires[circuit_builder.ACCUMULATORS_BINARY_LIMBS_1][i]);
548 prover_polynomials.accumulators_binary_limbs_2.at(i) =
549 circuit_builder.get_variable(circuit_builder.wires[circuit_builder.ACCUMULATORS_BINARY_LIMBS_2][i]);
550 prover_polynomials.accumulators_binary_limbs_3.at(i) =
551 circuit_builder.get_variable(circuit_builder.wires[circuit_builder.ACCUMULATORS_BINARY_LIMBS_3][i]);
552 prover_polynomials.quotient_low_binary_limbs.at(i) =
553 circuit_builder.get_variable(circuit_builder.wires[circuit_builder.QUOTIENT_LOW_BINARY_LIMBS][i]);
554 prover_polynomials.quotient_high_binary_limbs.at(i) =
555 circuit_builder.get_variable(circuit_builder.wires[circuit_builder.QUOTIENT_HIGH_BINARY_LIMBS][i]);
556 prover_polynomials.relation_wide_limbs.at(i) =
557 circuit_builder.get_variable(circuit_builder.wires[circuit_builder.RELATION_WIDE_LIMBS][i]);
561 for (
size_t i = Flavor::RESULT_ROW; i < mini_circuit_size_without_masking; i += 2) {
562 prover_polynomials.lagrange_even_in_minicircuit.at(i) = 1;
563 prover_polynomials.lagrange_odd_in_minicircuit.at(i + 1) = 1;
568 prover_polynomials, params,
"TranslatorNonNativeFieldRelation");