From facad97297522fe803dadf21f19113e441f3dc9d Mon Sep 17 00:00:00 2001 From: dbanks12 Date: Fri, 11 Oct 2024 19:20:07 +0000 Subject: [PATCH] feat\!: remove hash opcodes from AVM --- avm-transpiler/src/opcodes.rs | 8 +- avm-transpiler/src/transpile.rs | 2 +- barretenberg/cpp/pil/avm/gadgets/pedersen.pil | 11 - barretenberg/cpp/pil/avm/main.pil | 33 +- .../vm/avm/generated/circuit_builder.cpp | 1338 ++-- .../vm/avm/generated/circuit_builder.hpp | 4 +- .../barretenberg/vm/avm/generated/flavor.cpp | 2293 +++---- .../barretenberg/vm/avm/generated/flavor.hpp | 224 +- .../vm/avm/generated/full_row.cpp | 1425 +++-- .../vm/avm/generated/full_row.hpp | 17 +- .../barretenberg/vm/avm/generated/prover.cpp | 23 +- .../vm/avm/generated/recursive_verifier.cpp | 13 +- .../vm/avm/generated/relations/alu.hpp | 753 +-- .../vm/avm/generated/relations/binary.hpp | 190 +- .../vm/avm/generated/relations/cmp.hpp | 465 +- .../vm/avm/generated/relations/conversion.hpp | 57 +- .../vm/avm/generated/relations/gas.hpp | 191 +- .../generated/relations/incl_main_tag_err.hpp | 39 +- .../generated/relations/incl_mem_tag_err.hpp | 39 +- .../avm/generated/relations/keccakf1600.hpp | 57 +- .../vm/avm/generated/relations/kernel.hpp | 809 ++- .../relations/kernel_output_lookup.hpp | 47 +- .../relations/lookup_byte_lengths.hpp | 47 +- .../relations/lookup_byte_operations.hpp | 63 +- .../generated/relations/lookup_cd_value.hpp | 47 +- .../relations/lookup_into_kernel.hpp | 47 +- .../generated/relations/lookup_opcode_gas.hpp | 71 +- .../generated/relations/lookup_pow_2_0.hpp | 47 +- .../generated/relations/lookup_pow_2_1.hpp | 47 +- .../generated/relations/lookup_ret_value.hpp | 47 +- .../generated/relations/lookup_rng_chk_0.hpp | 39 +- .../generated/relations/lookup_rng_chk_1.hpp | 39 +- .../generated/relations/lookup_rng_chk_2.hpp | 39 +- .../generated/relations/lookup_rng_chk_3.hpp | 39 +- .../generated/relations/lookup_rng_chk_4.hpp | 39 +- .../generated/relations/lookup_rng_chk_5.hpp | 39 +- .../generated/relations/lookup_rng_chk_6.hpp | 39 +- .../generated/relations/lookup_rng_chk_7.hpp | 39 +- .../relations/lookup_rng_chk_diff.hpp | 39 +- .../relations/lookup_rng_chk_pow_2.hpp | 47 +- .../vm/avm/generated/relations/main.hpp | 1599 +++-- .../vm/avm/generated/relations/mem.hpp | 787 ++- .../vm/avm/generated/relations/mem_slice.hpp | 212 +- .../vm/avm/generated/relations/pedersen.hpp | 42 - .../avm/generated/relations/perm_cmp_alu.hpp | 75 +- .../generated/relations/perm_da_end_gas.hpp | 35 +- .../generated/relations/perm_da_start_gas.hpp | 35 +- .../generated/relations/perm_l2_end_gas.hpp | 35 +- .../generated/relations/perm_l2_start_gas.hpp | 35 +- .../avm/generated/relations/perm_main_alu.hpp | 155 +- .../avm/generated/relations/perm_main_bin.hpp | 75 +- .../generated/relations/perm_main_conv.hpp | 67 +- .../generated/relations/perm_main_mem_a.hpp | 91 +- .../generated/relations/perm_main_mem_b.hpp | 91 +- .../generated/relations/perm_main_mem_c.hpp | 83 +- .../generated/relations/perm_main_mem_d.hpp | 83 +- .../relations/perm_main_mem_ind_addr_a.hpp | 63 +- .../relations/perm_main_mem_ind_addr_b.hpp | 63 +- .../relations/perm_main_mem_ind_addr_c.hpp | 63 +- .../relations/perm_main_mem_ind_addr_d.hpp | 63 +- .../relations/perm_main_pedersen.hpp | 53 - .../relations/perm_main_pos2_perm.hpp | 59 +- .../generated/relations/perm_main_sha256.hpp | 64 + .../generated/relations/perm_main_slice.hpp | 83 +- .../relations/perm_pos_mem_read_a.hpp | 67 +- .../relations/perm_pos_mem_read_b.hpp | 67 +- .../relations/perm_pos_mem_read_c.hpp | 67 +- .../relations/perm_pos_mem_read_d.hpp | 67 +- .../relations/perm_pos_mem_write_a.hpp | 68 +- .../relations/perm_pos_mem_write_b.hpp | 68 +- .../relations/perm_pos_mem_write_c.hpp | 68 +- .../relations/perm_pos_mem_write_d.hpp | 68 +- .../avm/generated/relations/perm_rng_alu.hpp | 51 +- .../generated/relations/perm_rng_cmp_hi.hpp | 43 +- .../generated/relations/perm_rng_cmp_lo.hpp | 43 +- .../generated/relations/perm_rng_gas_da.hpp | 43 +- .../generated/relations/perm_rng_gas_l2.hpp | 43 +- .../avm/generated/relations/perm_rng_mem.hpp | 43 +- .../generated/relations/perm_slice_mem.hpp | 67 +- .../vm/avm/generated/relations/poseidon2.hpp | 5579 ++++++++--------- .../avm/generated/relations/range_check.hpp | 429 +- .../vm/avm/generated/relations/sha256.hpp | 57 +- .../vm/avm/generated/verifier.cpp | 48 +- .../vm/avm/tests/execution.test.cpp | 212 +- .../vm/avm/trace/deserialization.cpp | 11 +- .../barretenberg/vm/avm/trace/execution.cpp | 52 +- .../barretenberg/vm/avm/trace/fixed_gas.cpp | 6 +- .../vm/avm/trace/gadgets/keccak.cpp | 40 - .../vm/avm/trace/gadgets/keccak.hpp | 1 - .../vm/avm/trace/gadgets/pedersen.cpp | 29 - .../vm/avm/trace/gadgets/pedersen.hpp | 32 - .../vm/avm/trace/gadgets/sha256.cpp | 8 - .../vm/avm/trace/gadgets/sha256.hpp | 1 - .../src/barretenberg/vm/avm/trace/opcode.cpp | 6 +- .../src/barretenberg/vm/avm/trace/opcode.hpp | 5 +- .../src/barretenberg/vm/avm/trace/trace.cpp | 447 +- .../src/barretenberg/vm/avm/trace/trace.hpp | 12 - .../src/barretenberg/vm/aztec_constants.hpp | 14 +- .../crates/types/src/constants.nr | 16 +- yarn-project/circuits.js/src/constants.gen.ts | 14 +- yarn-project/simulator/src/avm/avm_gas.ts | 5 - .../src/avm/opcodes/commitment.test.ts | 120 - .../simulator/src/avm/opcodes/commitment.ts | 65 - .../simulator/src/avm/opcodes/hashing.test.ts | 150 +- .../simulator/src/avm/opcodes/hashing.ts | 106 +- .../simulator/src/avm/opcodes/index.ts | 1 - .../serialization/bytecode_serialization.ts | 6 - .../instruction_serialization.ts | 3 - 108 files changed, 9292 insertions(+), 11919 deletions(-) delete mode 100644 barretenberg/cpp/pil/avm/gadgets/pedersen.pil delete mode 100644 barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/pedersen.hpp delete mode 100644 barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_pedersen.hpp create mode 100644 barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_sha256.hpp delete mode 100644 barretenberg/cpp/src/barretenberg/vm/avm/trace/gadgets/pedersen.cpp delete mode 100644 barretenberg/cpp/src/barretenberg/vm/avm/trace/gadgets/pedersen.hpp delete mode 100644 yarn-project/simulator/src/avm/opcodes/commitment.test.ts delete mode 100644 yarn-project/simulator/src/avm/opcodes/commitment.ts diff --git a/avm-transpiler/src/opcodes.rs b/avm-transpiler/src/opcodes.rs index 1de1f7803c8..d3ad47af1f4 100644 --- a/avm-transpiler/src/opcodes.rs +++ b/avm-transpiler/src/opcodes.rs @@ -72,14 +72,11 @@ pub enum AvmOpcode { // Misc DEBUGLOG, // Gadgets - KECCAK, POSEIDON2, SHA256COMPRESSION, KECCAKF1600, - PEDERSEN, // temp - may be removed, but alot of contracts rely on it ECADD, MSM, - PEDERSENCOMMITMENT, // temp // Conversions TORADIXLE, } @@ -170,14 +167,11 @@ impl AvmOpcode { AvmOpcode::DEBUGLOG => "DEBUGLOG", // Gadgets - AvmOpcode::KECCAK => "KECCAK", - AvmOpcode::KECCAKF1600 => "KECCAKF1600", AvmOpcode::POSEIDON2 => "POSEIDON2", AvmOpcode::SHA256COMPRESSION => "SHA256COMPRESSION", - AvmOpcode::PEDERSEN => "PEDERSEN", + AvmOpcode::KECCAKF1600 => "KECCAKF1600", AvmOpcode::ECADD => "ECADD", AvmOpcode::MSM => "MSM", - AvmOpcode::PEDERSENCOMMITMENT => "PEDERSENCOMMITMENT", // Conversions AvmOpcode::TORADIXLE => "TORADIXLE", } diff --git a/avm-transpiler/src/transpile.rs b/avm-transpiler/src/transpile.rs index f0888b22a46..d8a1363fd8a 100644 --- a/avm-transpiler/src/transpile.rs +++ b/avm-transpiler/src/transpile.rs @@ -963,7 +963,7 @@ fn generate_mov_instruction( } } -/// Black box functions, for the meantime only covers pedersen operations as the blackbox function api suits our current needs. +/// Black box functions /// (array goes in -> field element comes out) fn handle_black_box_function(avm_instrs: &mut Vec, operation: &BlackBoxOp) { match operation { diff --git a/barretenberg/cpp/pil/avm/gadgets/pedersen.pil b/barretenberg/cpp/pil/avm/gadgets/pedersen.pil deleted file mode 100644 index cf881233ca4..00000000000 --- a/barretenberg/cpp/pil/avm/gadgets/pedersen.pil +++ /dev/null @@ -1,11 +0,0 @@ -namespace pedersen(256); - - pol commit clk; - - // Selector for Pedersen Hash Operation - pol commit sel_pedersen; - sel_pedersen * (1 - sel_pedersen) = 0; - - // These will all be arrays, but we just store the first element for permutation to the main trace for now - pol commit input; - pol commit output; diff --git a/barretenberg/cpp/pil/avm/main.pil b/barretenberg/cpp/pil/avm/main.pil index 64c0f40e421..6debb395699 100644 --- a/barretenberg/cpp/pil/avm/main.pil +++ b/barretenberg/cpp/pil/avm/main.pil @@ -10,7 +10,6 @@ include "gadgets/conversion.pil"; include "gadgets/sha256.pil"; include "gadgets/poseidon2.pil"; include "gadgets/keccakf1600.pil"; -include "gadgets/pedersen.pil"; include "gadgets/mem_slice.pil"; namespace main(256); @@ -89,9 +88,7 @@ namespace main(256); pol commit sel_op_sha256; pol commit sel_op_poseidon2; pol commit sel_op_keccak; - pol commit sel_op_pedersen; pol commit sel_op_ecadd; - pol commit sel_op_pedersen_commit; pol commit sel_op_msm; //===== Memory Slice Gadget Selectors ========================================= @@ -250,9 +247,7 @@ namespace main(256); sel_op_sha256 * (1 - sel_op_sha256) = 0; sel_op_poseidon2 * (1 - sel_op_poseidon2) = 0; sel_op_keccak * (1 - sel_op_keccak) = 0; - sel_op_pedersen * (1 - sel_op_pedersen) = 0; sel_op_ecadd * (1 - sel_op_ecadd) = 0; - sel_op_pedersen_commit * (1 - sel_op_pedersen_commit) = 0; sel_op_msm * (1 - sel_op_msm) = 0; sel_op_add * (1 - sel_op_add) = 0; @@ -421,8 +416,8 @@ namespace main(256); pol SEL_ALL_ALU = SEL_ALU_R_TAG + SEL_ALU_W_TAG; pol SEL_ALL_LEFTGAS = sel_op_dagasleft + sel_op_l2gasleft; pol SEL_ALL_BINARY = sel_op_and + sel_op_or + sel_op_xor; - pol SEL_ALL_GADGET = sel_op_radix_le + sel_op_sha256 + sel_op_poseidon2 + sel_op_keccak + sel_op_pedersen - + sel_op_ecadd + sel_op_pedersen_commit + sel_op_msm; + pol SEL_ALL_GADGET = sel_op_radix_le + sel_op_sha256 + sel_op_poseidon2 + sel_op_keccak + + sel_op_ecadd + sel_op_msm; pol SEL_ALL_MEMORY = sel_op_mov + sel_op_set; pol OPCODE_SELECTORS = sel_op_fdiv + sel_op_calldata_copy + sel_op_get_contract_instance + SEL_ALL_ALU + SEL_ALL_BINARY + SEL_ALL_MEMORY + SEL_ALL_GADGET @@ -546,11 +541,10 @@ namespace main(256); is conversion.sel_to_radix_le {conversion.clk, conversion.input, conversion.radix, conversion.num_limbs, conversion.output_bits}; - // This will be enabled when we migrate just to sha256Compression, as getting sha256 to work with it is tricky. - // #[PERM_MAIN_SHA256] - // sel_op_sha256 {clk, ia, ib, ic} - // is - // sha256.sel_sha256_compression {sha256.clk, sha256.state, sha256.input, sha256.output}; + #[PERM_MAIN_SHA256] + sel_op_sha256 {clk, ia, ib, ic} + is + sha256.sel_sha256_compression {sha256.clk, sha256.state, sha256.input, sha256.output}; // Mem_addr_a points to the start of the input array of length 4 // Mem_addr_b points to the start of the output array of length 4 @@ -559,16 +553,11 @@ namespace main(256); is poseidon2.sel_poseidon_perm {poseidon2.clk, poseidon2.space_id, poseidon2.input_addr, poseidon2.output_addr}; - // This will be enabled when we migrate just to keccakf1600, as getting keccak to work with it is tricky. - // #[PERM_MAIN_KECCAK] - // sel_op_keccak {clk, ia, ic} - // is - // keccakf1600.sel_keccakf1600 {keccakf1600.clk, keccakf1600.input, keccakf1600.output}; - - #[PERM_MAIN_PEDERSEN] - sel_op_pedersen {clk, ia} - is - pedersen.sel_pedersen {pedersen.clk, pedersen.input}; + // TODO: re-enable this. Should have worked when we migrated just to keccakf1600, but it didn't. + //#[PERM_MAIN_KECCAK] + //sel_op_keccak {clk, ia, ic} + //is + //keccakf1600.sel_keccakf1600 {keccakf1600.clk, keccakf1600.input, keccakf1600.output}; #[PERM_MAIN_SLICE] sel_slice_gadget {clk, space_id, ia, ib, mem_addr_c, sel_op_calldata_copy, sel_op_external_return} diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/circuit_builder.cpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/circuit_builder.cpp index 734064e3b4f..1758057e4de 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/circuit_builder.cpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/circuit_builder.cpp @@ -7,16 +7,15 @@ #include "barretenberg/common/thread.hpp" #include "barretenberg/common/throw_or_abort.hpp" #include "barretenberg/ecc/curves/bn254/fr.hpp" +#include "barretenberg/relations/generic_permutation/generic_permutation_relation.hpp" +#include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" #include "barretenberg/honk/proof_system/logderivative_library.hpp" #include "barretenberg/numeric/bitop/get_msb.hpp" -#include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" -#include "barretenberg/relations/generic_permutation/generic_permutation_relation.hpp" #include "barretenberg/vm/stats.hpp" namespace bb { -AvmCircuitBuilder::ProverPolynomials AvmCircuitBuilder::compute_polynomials() const -{ +AvmCircuitBuilder::ProverPolynomials AvmCircuitBuilder::compute_polynomials() const { const size_t num_rows = get_estimated_num_finalized_gates(); const size_t circuit_subgroup_size = get_circuit_subgroup_size(); ASSERT(num_rows <= circuit_subgroup_size); @@ -46,683 +45,668 @@ AvmCircuitBuilder::ProverPolynomials AvmCircuitBuilder::compute_polynomials() co AVM_TRACK_TIME( "circuit_builder/set_polys_unshifted", ({ bb::parallel_for(rows.size(), [&](size_t i) { - polys.byte_lookup_sel_bin.set_if_valid_index(i, rows[i].byte_lookup_sel_bin); - polys.byte_lookup_table_byte_lengths.set_if_valid_index(i, rows[i].byte_lookup_table_byte_lengths); - polys.byte_lookup_table_in_tags.set_if_valid_index(i, rows[i].byte_lookup_table_in_tags); - polys.byte_lookup_table_input_a.set_if_valid_index(i, rows[i].byte_lookup_table_input_a); - polys.byte_lookup_table_input_b.set_if_valid_index(i, rows[i].byte_lookup_table_input_b); - polys.byte_lookup_table_op_id.set_if_valid_index(i, rows[i].byte_lookup_table_op_id); - polys.byte_lookup_table_output.set_if_valid_index(i, rows[i].byte_lookup_table_output); - polys.gas_base_da_gas_fixed_table.set_if_valid_index(i, rows[i].gas_base_da_gas_fixed_table); - polys.gas_base_l2_gas_fixed_table.set_if_valid_index(i, rows[i].gas_base_l2_gas_fixed_table); - polys.gas_dyn_da_gas_fixed_table.set_if_valid_index(i, rows[i].gas_dyn_da_gas_fixed_table); - polys.gas_dyn_l2_gas_fixed_table.set_if_valid_index(i, rows[i].gas_dyn_l2_gas_fixed_table); - polys.gas_sel_gas_cost.set_if_valid_index(i, rows[i].gas_sel_gas_cost); - polys.main_clk.set_if_valid_index(i, rows[i].main_clk); - polys.main_sel_da_end_gas_kernel_input.set_if_valid_index(i, rows[i].main_sel_da_end_gas_kernel_input); - polys.main_sel_da_start_gas_kernel_input.set_if_valid_index(i, - rows[i].main_sel_da_start_gas_kernel_input); - polys.main_sel_first.set_if_valid_index(i, rows[i].main_sel_first); - polys.main_sel_l2_end_gas_kernel_input.set_if_valid_index(i, rows[i].main_sel_l2_end_gas_kernel_input); - polys.main_sel_l2_start_gas_kernel_input.set_if_valid_index(i, - rows[i].main_sel_l2_start_gas_kernel_input); - polys.main_sel_start_exec.set_if_valid_index(i, rows[i].main_sel_start_exec); - polys.main_zeroes.set_if_valid_index(i, rows[i].main_zeroes); - polys.powers_power_of_2.set_if_valid_index(i, rows[i].powers_power_of_2); - polys.main_kernel_inputs.set_if_valid_index(i, rows[i].main_kernel_inputs); - polys.main_kernel_value_out.set_if_valid_index(i, rows[i].main_kernel_value_out); - polys.main_kernel_side_effect_out.set_if_valid_index(i, rows[i].main_kernel_side_effect_out); - polys.main_kernel_metadata_out.set_if_valid_index(i, rows[i].main_kernel_metadata_out); - polys.main_calldata.set_if_valid_index(i, rows[i].main_calldata); - polys.main_returndata.set_if_valid_index(i, rows[i].main_returndata); - polys.alu_a_hi.set_if_valid_index(i, rows[i].alu_a_hi); - polys.alu_a_lo.set_if_valid_index(i, rows[i].alu_a_lo); - polys.alu_b_hi.set_if_valid_index(i, rows[i].alu_b_hi); - polys.alu_b_lo.set_if_valid_index(i, rows[i].alu_b_lo); - polys.alu_b_pow.set_if_valid_index(i, rows[i].alu_b_pow); - polys.alu_c_hi.set_if_valid_index(i, rows[i].alu_c_hi); - polys.alu_c_lo.set_if_valid_index(i, rows[i].alu_c_lo); - polys.alu_cf.set_if_valid_index(i, rows[i].alu_cf); - polys.alu_clk.set_if_valid_index(i, rows[i].alu_clk); - polys.alu_cmp_gadget_gt.set_if_valid_index(i, rows[i].alu_cmp_gadget_gt); - polys.alu_cmp_gadget_input_a.set_if_valid_index(i, rows[i].alu_cmp_gadget_input_a); - polys.alu_cmp_gadget_input_b.set_if_valid_index(i, rows[i].alu_cmp_gadget_input_b); - polys.alu_cmp_gadget_result.set_if_valid_index(i, rows[i].alu_cmp_gadget_result); - polys.alu_cmp_gadget_sel.set_if_valid_index(i, rows[i].alu_cmp_gadget_sel); - polys.alu_ff_tag.set_if_valid_index(i, rows[i].alu_ff_tag); - polys.alu_ia.set_if_valid_index(i, rows[i].alu_ia); - polys.alu_ib.set_if_valid_index(i, rows[i].alu_ib); - polys.alu_ic.set_if_valid_index(i, rows[i].alu_ic); - polys.alu_in_tag.set_if_valid_index(i, rows[i].alu_in_tag); - polys.alu_max_bits_sub_b_bits.set_if_valid_index(i, rows[i].alu_max_bits_sub_b_bits); - polys.alu_max_bits_sub_b_pow.set_if_valid_index(i, rows[i].alu_max_bits_sub_b_pow); - polys.alu_op_add.set_if_valid_index(i, rows[i].alu_op_add); - polys.alu_op_cast.set_if_valid_index(i, rows[i].alu_op_cast); - polys.alu_op_div.set_if_valid_index(i, rows[i].alu_op_div); - polys.alu_op_eq.set_if_valid_index(i, rows[i].alu_op_eq); - polys.alu_op_lt.set_if_valid_index(i, rows[i].alu_op_lt); - polys.alu_op_lte.set_if_valid_index(i, rows[i].alu_op_lte); - polys.alu_op_mul.set_if_valid_index(i, rows[i].alu_op_mul); - polys.alu_op_not.set_if_valid_index(i, rows[i].alu_op_not); - polys.alu_op_shl.set_if_valid_index(i, rows[i].alu_op_shl); - polys.alu_op_shr.set_if_valid_index(i, rows[i].alu_op_shr); - polys.alu_op_sub.set_if_valid_index(i, rows[i].alu_op_sub); - polys.alu_partial_prod_hi.set_if_valid_index(i, rows[i].alu_partial_prod_hi); - polys.alu_partial_prod_lo.set_if_valid_index(i, rows[i].alu_partial_prod_lo); - polys.alu_range_check_input_value.set_if_valid_index(i, rows[i].alu_range_check_input_value); - polys.alu_range_check_num_bits.set_if_valid_index(i, rows[i].alu_range_check_num_bits); - polys.alu_range_check_sel.set_if_valid_index(i, rows[i].alu_range_check_sel); - polys.alu_remainder.set_if_valid_index(i, rows[i].alu_remainder); - polys.alu_sel_alu.set_if_valid_index(i, rows[i].alu_sel_alu); - polys.alu_sel_cmp.set_if_valid_index(i, rows[i].alu_sel_cmp); - polys.alu_sel_shift_which.set_if_valid_index(i, rows[i].alu_sel_shift_which); - polys.alu_u128_tag.set_if_valid_index(i, rows[i].alu_u128_tag); - polys.alu_u16_tag.set_if_valid_index(i, rows[i].alu_u16_tag); - polys.alu_u1_tag.set_if_valid_index(i, rows[i].alu_u1_tag); - polys.alu_u32_tag.set_if_valid_index(i, rows[i].alu_u32_tag); - polys.alu_u64_tag.set_if_valid_index(i, rows[i].alu_u64_tag); - polys.alu_u8_tag.set_if_valid_index(i, rows[i].alu_u8_tag); - polys.alu_zero_shift.set_if_valid_index(i, rows[i].alu_zero_shift); - polys.binary_acc_ia.set_if_valid_index(i, rows[i].binary_acc_ia); - polys.binary_acc_ib.set_if_valid_index(i, rows[i].binary_acc_ib); - polys.binary_acc_ic.set_if_valid_index(i, rows[i].binary_acc_ic); - polys.binary_clk.set_if_valid_index(i, rows[i].binary_clk); - polys.binary_ia_bytes.set_if_valid_index(i, rows[i].binary_ia_bytes); - polys.binary_ib_bytes.set_if_valid_index(i, rows[i].binary_ib_bytes); - polys.binary_ic_bytes.set_if_valid_index(i, rows[i].binary_ic_bytes); - polys.binary_in_tag.set_if_valid_index(i, rows[i].binary_in_tag); - polys.binary_mem_tag_ctr.set_if_valid_index(i, rows[i].binary_mem_tag_ctr); - polys.binary_mem_tag_ctr_inv.set_if_valid_index(i, rows[i].binary_mem_tag_ctr_inv); - polys.binary_op_id.set_if_valid_index(i, rows[i].binary_op_id); - polys.binary_sel_bin.set_if_valid_index(i, rows[i].binary_sel_bin); - polys.binary_start.set_if_valid_index(i, rows[i].binary_start); - polys.cmp_a_hi.set_if_valid_index(i, rows[i].cmp_a_hi); - polys.cmp_a_lo.set_if_valid_index(i, rows[i].cmp_a_lo); - polys.cmp_b_hi.set_if_valid_index(i, rows[i].cmp_b_hi); - polys.cmp_b_lo.set_if_valid_index(i, rows[i].cmp_b_lo); - polys.cmp_borrow.set_if_valid_index(i, rows[i].cmp_borrow); - polys.cmp_clk.set_if_valid_index(i, rows[i].cmp_clk); - polys.cmp_cmp_rng_ctr.set_if_valid_index(i, rows[i].cmp_cmp_rng_ctr); - polys.cmp_input_a.set_if_valid_index(i, rows[i].cmp_input_a); - polys.cmp_input_b.set_if_valid_index(i, rows[i].cmp_input_b); - polys.cmp_op_eq.set_if_valid_index(i, rows[i].cmp_op_eq); - polys.cmp_op_eq_diff_inv.set_if_valid_index(i, rows[i].cmp_op_eq_diff_inv); - polys.cmp_op_gt.set_if_valid_index(i, rows[i].cmp_op_gt); - polys.cmp_p_a_borrow.set_if_valid_index(i, rows[i].cmp_p_a_borrow); - polys.cmp_p_b_borrow.set_if_valid_index(i, rows[i].cmp_p_b_borrow); - polys.cmp_p_sub_a_hi.set_if_valid_index(i, rows[i].cmp_p_sub_a_hi); - polys.cmp_p_sub_a_lo.set_if_valid_index(i, rows[i].cmp_p_sub_a_lo); - polys.cmp_p_sub_b_hi.set_if_valid_index(i, rows[i].cmp_p_sub_b_hi); - polys.cmp_p_sub_b_lo.set_if_valid_index(i, rows[i].cmp_p_sub_b_lo); - polys.cmp_range_chk_clk.set_if_valid_index(i, rows[i].cmp_range_chk_clk); - polys.cmp_res_hi.set_if_valid_index(i, rows[i].cmp_res_hi); - polys.cmp_res_lo.set_if_valid_index(i, rows[i].cmp_res_lo); - polys.cmp_result.set_if_valid_index(i, rows[i].cmp_result); - polys.cmp_sel_cmp.set_if_valid_index(i, rows[i].cmp_sel_cmp); - polys.cmp_sel_rng_chk.set_if_valid_index(i, rows[i].cmp_sel_rng_chk); - polys.cmp_shift_sel.set_if_valid_index(i, rows[i].cmp_shift_sel); - polys.conversion_clk.set_if_valid_index(i, rows[i].conversion_clk); - polys.conversion_input.set_if_valid_index(i, rows[i].conversion_input); - polys.conversion_num_limbs.set_if_valid_index(i, rows[i].conversion_num_limbs); - polys.conversion_output_bits.set_if_valid_index(i, rows[i].conversion_output_bits); - polys.conversion_radix.set_if_valid_index(i, rows[i].conversion_radix); - polys.conversion_sel_to_radix_le.set_if_valid_index(i, rows[i].conversion_sel_to_radix_le); - polys.keccakf1600_clk.set_if_valid_index(i, rows[i].keccakf1600_clk); - polys.keccakf1600_input.set_if_valid_index(i, rows[i].keccakf1600_input); - polys.keccakf1600_output.set_if_valid_index(i, rows[i].keccakf1600_output); - polys.keccakf1600_sel_keccakf1600.set_if_valid_index(i, rows[i].keccakf1600_sel_keccakf1600); - polys.main_abs_da_rem_gas.set_if_valid_index(i, rows[i].main_abs_da_rem_gas); - polys.main_abs_l2_rem_gas.set_if_valid_index(i, rows[i].main_abs_l2_rem_gas); - polys.main_alu_in_tag.set_if_valid_index(i, rows[i].main_alu_in_tag); - polys.main_base_da_gas_op_cost.set_if_valid_index(i, rows[i].main_base_da_gas_op_cost); - polys.main_base_l2_gas_op_cost.set_if_valid_index(i, rows[i].main_base_l2_gas_op_cost); - polys.main_bin_op_id.set_if_valid_index(i, rows[i].main_bin_op_id); - polys.main_call_ptr.set_if_valid_index(i, rows[i].main_call_ptr); - polys.main_da_gas_remaining.set_if_valid_index(i, rows[i].main_da_gas_remaining); - polys.main_da_out_of_gas.set_if_valid_index(i, rows[i].main_da_out_of_gas); - polys.main_dyn_da_gas_op_cost.set_if_valid_index(i, rows[i].main_dyn_da_gas_op_cost); - polys.main_dyn_gas_multiplier.set_if_valid_index(i, rows[i].main_dyn_gas_multiplier); - polys.main_dyn_l2_gas_op_cost.set_if_valid_index(i, rows[i].main_dyn_l2_gas_op_cost); - polys.main_emit_l2_to_l1_msg_write_offset.set_if_valid_index( - i, rows[i].main_emit_l2_to_l1_msg_write_offset); - polys.main_emit_note_hash_write_offset.set_if_valid_index(i, rows[i].main_emit_note_hash_write_offset); - polys.main_emit_nullifier_write_offset.set_if_valid_index(i, rows[i].main_emit_nullifier_write_offset); - polys.main_emit_unencrypted_log_write_offset.set_if_valid_index( - i, rows[i].main_emit_unencrypted_log_write_offset); - polys.main_ia.set_if_valid_index(i, rows[i].main_ia); - polys.main_ib.set_if_valid_index(i, rows[i].main_ib); - polys.main_ic.set_if_valid_index(i, rows[i].main_ic); - polys.main_id.set_if_valid_index(i, rows[i].main_id); - polys.main_id_zero.set_if_valid_index(i, rows[i].main_id_zero); - polys.main_ind_addr_a.set_if_valid_index(i, rows[i].main_ind_addr_a); - polys.main_ind_addr_b.set_if_valid_index(i, rows[i].main_ind_addr_b); - polys.main_ind_addr_c.set_if_valid_index(i, rows[i].main_ind_addr_c); - polys.main_ind_addr_d.set_if_valid_index(i, rows[i].main_ind_addr_d); - polys.main_internal_return_ptr.set_if_valid_index(i, rows[i].main_internal_return_ptr); - polys.main_inv.set_if_valid_index(i, rows[i].main_inv); - polys.main_is_fake_row.set_if_valid_index(i, rows[i].main_is_fake_row); - polys.main_is_gas_accounted.set_if_valid_index(i, rows[i].main_is_gas_accounted); - polys.main_kernel_in_offset.set_if_valid_index(i, rows[i].main_kernel_in_offset); - polys.main_kernel_out_offset.set_if_valid_index(i, rows[i].main_kernel_out_offset); - polys.main_l1_to_l2_msg_exists_write_offset.set_if_valid_index( - i, rows[i].main_l1_to_l2_msg_exists_write_offset); - polys.main_l2_gas_remaining.set_if_valid_index(i, rows[i].main_l2_gas_remaining); - polys.main_l2_out_of_gas.set_if_valid_index(i, rows[i].main_l2_out_of_gas); - polys.main_mem_addr_a.set_if_valid_index(i, rows[i].main_mem_addr_a); - polys.main_mem_addr_b.set_if_valid_index(i, rows[i].main_mem_addr_b); - polys.main_mem_addr_c.set_if_valid_index(i, rows[i].main_mem_addr_c); - polys.main_mem_addr_d.set_if_valid_index(i, rows[i].main_mem_addr_d); - polys.main_note_hash_exist_write_offset.set_if_valid_index(i, - rows[i].main_note_hash_exist_write_offset); - polys.main_nullifier_exists_write_offset.set_if_valid_index(i, - rows[i].main_nullifier_exists_write_offset); - polys.main_nullifier_non_exists_write_offset.set_if_valid_index( - i, rows[i].main_nullifier_non_exists_write_offset); - polys.main_op_err.set_if_valid_index(i, rows[i].main_op_err); - polys.main_opcode_val.set_if_valid_index(i, rows[i].main_opcode_val); - polys.main_pc.set_if_valid_index(i, rows[i].main_pc); - polys.main_r_in_tag.set_if_valid_index(i, rows[i].main_r_in_tag); - polys.main_rwa.set_if_valid_index(i, rows[i].main_rwa); - polys.main_rwb.set_if_valid_index(i, rows[i].main_rwb); - polys.main_rwc.set_if_valid_index(i, rows[i].main_rwc); - polys.main_rwd.set_if_valid_index(i, rows[i].main_rwd); - polys.main_sel_alu.set_if_valid_index(i, rows[i].main_sel_alu); - polys.main_sel_bin.set_if_valid_index(i, rows[i].main_sel_bin); - polys.main_sel_calldata.set_if_valid_index(i, rows[i].main_sel_calldata); - polys.main_sel_execution_end.set_if_valid_index(i, rows[i].main_sel_execution_end); - polys.main_sel_execution_row.set_if_valid_index(i, rows[i].main_sel_execution_row); - polys.main_sel_kernel_inputs.set_if_valid_index(i, rows[i].main_sel_kernel_inputs); - polys.main_sel_kernel_out.set_if_valid_index(i, rows[i].main_sel_kernel_out); - polys.main_sel_mem_op_a.set_if_valid_index(i, rows[i].main_sel_mem_op_a); - polys.main_sel_mem_op_b.set_if_valid_index(i, rows[i].main_sel_mem_op_b); - polys.main_sel_mem_op_c.set_if_valid_index(i, rows[i].main_sel_mem_op_c); - polys.main_sel_mem_op_d.set_if_valid_index(i, rows[i].main_sel_mem_op_d); - polys.main_sel_mov_ia_to_ic.set_if_valid_index(i, rows[i].main_sel_mov_ia_to_ic); - polys.main_sel_mov_ib_to_ic.set_if_valid_index(i, rows[i].main_sel_mov_ib_to_ic); - polys.main_sel_op_add.set_if_valid_index(i, rows[i].main_sel_op_add); - polys.main_sel_op_address.set_if_valid_index(i, rows[i].main_sel_op_address); - polys.main_sel_op_and.set_if_valid_index(i, rows[i].main_sel_op_and); - polys.main_sel_op_block_number.set_if_valid_index(i, rows[i].main_sel_op_block_number); - polys.main_sel_op_calldata_copy.set_if_valid_index(i, rows[i].main_sel_op_calldata_copy); - polys.main_sel_op_cast.set_if_valid_index(i, rows[i].main_sel_op_cast); - polys.main_sel_op_chain_id.set_if_valid_index(i, rows[i].main_sel_op_chain_id); - polys.main_sel_op_dagasleft.set_if_valid_index(i, rows[i].main_sel_op_dagasleft); - polys.main_sel_op_div.set_if_valid_index(i, rows[i].main_sel_op_div); - polys.main_sel_op_ecadd.set_if_valid_index(i, rows[i].main_sel_op_ecadd); - polys.main_sel_op_emit_l2_to_l1_msg.set_if_valid_index(i, rows[i].main_sel_op_emit_l2_to_l1_msg); - polys.main_sel_op_emit_note_hash.set_if_valid_index(i, rows[i].main_sel_op_emit_note_hash); - polys.main_sel_op_emit_nullifier.set_if_valid_index(i, rows[i].main_sel_op_emit_nullifier); - polys.main_sel_op_emit_unencrypted_log.set_if_valid_index(i, rows[i].main_sel_op_emit_unencrypted_log); - polys.main_sel_op_eq.set_if_valid_index(i, rows[i].main_sel_op_eq); - polys.main_sel_op_external_call.set_if_valid_index(i, rows[i].main_sel_op_external_call); - polys.main_sel_op_external_return.set_if_valid_index(i, rows[i].main_sel_op_external_return); - polys.main_sel_op_external_revert.set_if_valid_index(i, rows[i].main_sel_op_external_revert); - polys.main_sel_op_fdiv.set_if_valid_index(i, rows[i].main_sel_op_fdiv); - polys.main_sel_op_fee_per_da_gas.set_if_valid_index(i, rows[i].main_sel_op_fee_per_da_gas); - polys.main_sel_op_fee_per_l2_gas.set_if_valid_index(i, rows[i].main_sel_op_fee_per_l2_gas); - polys.main_sel_op_function_selector.set_if_valid_index(i, rows[i].main_sel_op_function_selector); - polys.main_sel_op_get_contract_instance.set_if_valid_index(i, - rows[i].main_sel_op_get_contract_instance); - polys.main_sel_op_internal_call.set_if_valid_index(i, rows[i].main_sel_op_internal_call); - polys.main_sel_op_internal_return.set_if_valid_index(i, rows[i].main_sel_op_internal_return); - polys.main_sel_op_is_static_call.set_if_valid_index(i, rows[i].main_sel_op_is_static_call); - polys.main_sel_op_jump.set_if_valid_index(i, rows[i].main_sel_op_jump); - polys.main_sel_op_jumpi.set_if_valid_index(i, rows[i].main_sel_op_jumpi); - polys.main_sel_op_keccak.set_if_valid_index(i, rows[i].main_sel_op_keccak); - polys.main_sel_op_l1_to_l2_msg_exists.set_if_valid_index(i, rows[i].main_sel_op_l1_to_l2_msg_exists); - polys.main_sel_op_l2gasleft.set_if_valid_index(i, rows[i].main_sel_op_l2gasleft); - polys.main_sel_op_lt.set_if_valid_index(i, rows[i].main_sel_op_lt); - polys.main_sel_op_lte.set_if_valid_index(i, rows[i].main_sel_op_lte); - polys.main_sel_op_mov.set_if_valid_index(i, rows[i].main_sel_op_mov); - polys.main_sel_op_msm.set_if_valid_index(i, rows[i].main_sel_op_msm); - polys.main_sel_op_mul.set_if_valid_index(i, rows[i].main_sel_op_mul); - polys.main_sel_op_not.set_if_valid_index(i, rows[i].main_sel_op_not); - polys.main_sel_op_note_hash_exists.set_if_valid_index(i, rows[i].main_sel_op_note_hash_exists); - polys.main_sel_op_nullifier_exists.set_if_valid_index(i, rows[i].main_sel_op_nullifier_exists); - polys.main_sel_op_or.set_if_valid_index(i, rows[i].main_sel_op_or); - polys.main_sel_op_pedersen.set_if_valid_index(i, rows[i].main_sel_op_pedersen); - polys.main_sel_op_pedersen_commit.set_if_valid_index(i, rows[i].main_sel_op_pedersen_commit); - polys.main_sel_op_poseidon2.set_if_valid_index(i, rows[i].main_sel_op_poseidon2); - polys.main_sel_op_radix_le.set_if_valid_index(i, rows[i].main_sel_op_radix_le); - polys.main_sel_op_sender.set_if_valid_index(i, rows[i].main_sel_op_sender); - polys.main_sel_op_set.set_if_valid_index(i, rows[i].main_sel_op_set); - polys.main_sel_op_sha256.set_if_valid_index(i, rows[i].main_sel_op_sha256); - polys.main_sel_op_shl.set_if_valid_index(i, rows[i].main_sel_op_shl); - polys.main_sel_op_shr.set_if_valid_index(i, rows[i].main_sel_op_shr); - polys.main_sel_op_sload.set_if_valid_index(i, rows[i].main_sel_op_sload); - polys.main_sel_op_sstore.set_if_valid_index(i, rows[i].main_sel_op_sstore); - polys.main_sel_op_static_call.set_if_valid_index(i, rows[i].main_sel_op_static_call); - polys.main_sel_op_storage_address.set_if_valid_index(i, rows[i].main_sel_op_storage_address); - polys.main_sel_op_sub.set_if_valid_index(i, rows[i].main_sel_op_sub); - polys.main_sel_op_timestamp.set_if_valid_index(i, rows[i].main_sel_op_timestamp); - polys.main_sel_op_transaction_fee.set_if_valid_index(i, rows[i].main_sel_op_transaction_fee); - polys.main_sel_op_version.set_if_valid_index(i, rows[i].main_sel_op_version); - polys.main_sel_op_xor.set_if_valid_index(i, rows[i].main_sel_op_xor); - polys.main_sel_q_kernel_lookup.set_if_valid_index(i, rows[i].main_sel_q_kernel_lookup); - polys.main_sel_q_kernel_output_lookup.set_if_valid_index(i, rows[i].main_sel_q_kernel_output_lookup); - polys.main_sel_resolve_ind_addr_a.set_if_valid_index(i, rows[i].main_sel_resolve_ind_addr_a); - polys.main_sel_resolve_ind_addr_b.set_if_valid_index(i, rows[i].main_sel_resolve_ind_addr_b); - polys.main_sel_resolve_ind_addr_c.set_if_valid_index(i, rows[i].main_sel_resolve_ind_addr_c); - polys.main_sel_resolve_ind_addr_d.set_if_valid_index(i, rows[i].main_sel_resolve_ind_addr_d); - polys.main_sel_returndata.set_if_valid_index(i, rows[i].main_sel_returndata); - polys.main_sel_rng_16.set_if_valid_index(i, rows[i].main_sel_rng_16); - polys.main_sel_rng_8.set_if_valid_index(i, rows[i].main_sel_rng_8); - polys.main_sel_slice_gadget.set_if_valid_index(i, rows[i].main_sel_slice_gadget); - polys.main_side_effect_counter.set_if_valid_index(i, rows[i].main_side_effect_counter); - polys.main_sload_write_offset.set_if_valid_index(i, rows[i].main_sload_write_offset); - polys.main_space_id.set_if_valid_index(i, rows[i].main_space_id); - polys.main_sstore_write_offset.set_if_valid_index(i, rows[i].main_sstore_write_offset); - polys.main_tag_err.set_if_valid_index(i, rows[i].main_tag_err); - polys.main_w_in_tag.set_if_valid_index(i, rows[i].main_w_in_tag); - polys.mem_addr.set_if_valid_index(i, rows[i].mem_addr); - polys.mem_clk.set_if_valid_index(i, rows[i].mem_clk); - polys.mem_diff.set_if_valid_index(i, rows[i].mem_diff); - polys.mem_glob_addr.set_if_valid_index(i, rows[i].mem_glob_addr); - polys.mem_last.set_if_valid_index(i, rows[i].mem_last); - polys.mem_lastAccess.set_if_valid_index(i, rows[i].mem_lastAccess); - polys.mem_one_min_inv.set_if_valid_index(i, rows[i].mem_one_min_inv); - polys.mem_r_in_tag.set_if_valid_index(i, rows[i].mem_r_in_tag); - polys.mem_rw.set_if_valid_index(i, rows[i].mem_rw); - polys.mem_sel_mem.set_if_valid_index(i, rows[i].mem_sel_mem); - polys.mem_sel_mov_ia_to_ic.set_if_valid_index(i, rows[i].mem_sel_mov_ia_to_ic); - polys.mem_sel_mov_ib_to_ic.set_if_valid_index(i, rows[i].mem_sel_mov_ib_to_ic); - polys.mem_sel_op_a.set_if_valid_index(i, rows[i].mem_sel_op_a); - polys.mem_sel_op_b.set_if_valid_index(i, rows[i].mem_sel_op_b); - polys.mem_sel_op_c.set_if_valid_index(i, rows[i].mem_sel_op_c); - polys.mem_sel_op_d.set_if_valid_index(i, rows[i].mem_sel_op_d); - polys.mem_sel_op_poseidon_read_a.set_if_valid_index(i, rows[i].mem_sel_op_poseidon_read_a); - polys.mem_sel_op_poseidon_read_b.set_if_valid_index(i, rows[i].mem_sel_op_poseidon_read_b); - polys.mem_sel_op_poseidon_read_c.set_if_valid_index(i, rows[i].mem_sel_op_poseidon_read_c); - polys.mem_sel_op_poseidon_read_d.set_if_valid_index(i, rows[i].mem_sel_op_poseidon_read_d); - polys.mem_sel_op_poseidon_write_a.set_if_valid_index(i, rows[i].mem_sel_op_poseidon_write_a); - polys.mem_sel_op_poseidon_write_b.set_if_valid_index(i, rows[i].mem_sel_op_poseidon_write_b); - polys.mem_sel_op_poseidon_write_c.set_if_valid_index(i, rows[i].mem_sel_op_poseidon_write_c); - polys.mem_sel_op_poseidon_write_d.set_if_valid_index(i, rows[i].mem_sel_op_poseidon_write_d); - polys.mem_sel_op_slice.set_if_valid_index(i, rows[i].mem_sel_op_slice); - polys.mem_sel_resolve_ind_addr_a.set_if_valid_index(i, rows[i].mem_sel_resolve_ind_addr_a); - polys.mem_sel_resolve_ind_addr_b.set_if_valid_index(i, rows[i].mem_sel_resolve_ind_addr_b); - polys.mem_sel_resolve_ind_addr_c.set_if_valid_index(i, rows[i].mem_sel_resolve_ind_addr_c); - polys.mem_sel_resolve_ind_addr_d.set_if_valid_index(i, rows[i].mem_sel_resolve_ind_addr_d); - polys.mem_sel_rng_chk.set_if_valid_index(i, rows[i].mem_sel_rng_chk); - polys.mem_skip_check_tag.set_if_valid_index(i, rows[i].mem_skip_check_tag); - polys.mem_space_id.set_if_valid_index(i, rows[i].mem_space_id); - polys.mem_tag.set_if_valid_index(i, rows[i].mem_tag); - polys.mem_tag_err.set_if_valid_index(i, rows[i].mem_tag_err); - polys.mem_tsp.set_if_valid_index(i, rows[i].mem_tsp); - polys.mem_val.set_if_valid_index(i, rows[i].mem_val); - polys.mem_w_in_tag.set_if_valid_index(i, rows[i].mem_w_in_tag); - polys.pedersen_clk.set_if_valid_index(i, rows[i].pedersen_clk); - polys.pedersen_input.set_if_valid_index(i, rows[i].pedersen_input); - polys.pedersen_output.set_if_valid_index(i, rows[i].pedersen_output); - polys.pedersen_sel_pedersen.set_if_valid_index(i, rows[i].pedersen_sel_pedersen); - polys.poseidon2_B_10_0.set_if_valid_index(i, rows[i].poseidon2_B_10_0); - polys.poseidon2_B_10_1.set_if_valid_index(i, rows[i].poseidon2_B_10_1); - polys.poseidon2_B_10_2.set_if_valid_index(i, rows[i].poseidon2_B_10_2); - polys.poseidon2_B_10_3.set_if_valid_index(i, rows[i].poseidon2_B_10_3); - polys.poseidon2_B_11_0.set_if_valid_index(i, rows[i].poseidon2_B_11_0); - polys.poseidon2_B_11_1.set_if_valid_index(i, rows[i].poseidon2_B_11_1); - polys.poseidon2_B_11_2.set_if_valid_index(i, rows[i].poseidon2_B_11_2); - polys.poseidon2_B_11_3.set_if_valid_index(i, rows[i].poseidon2_B_11_3); - polys.poseidon2_B_12_0.set_if_valid_index(i, rows[i].poseidon2_B_12_0); - polys.poseidon2_B_12_1.set_if_valid_index(i, rows[i].poseidon2_B_12_1); - polys.poseidon2_B_12_2.set_if_valid_index(i, rows[i].poseidon2_B_12_2); - polys.poseidon2_B_12_3.set_if_valid_index(i, rows[i].poseidon2_B_12_3); - polys.poseidon2_B_13_0.set_if_valid_index(i, rows[i].poseidon2_B_13_0); - polys.poseidon2_B_13_1.set_if_valid_index(i, rows[i].poseidon2_B_13_1); - polys.poseidon2_B_13_2.set_if_valid_index(i, rows[i].poseidon2_B_13_2); - polys.poseidon2_B_13_3.set_if_valid_index(i, rows[i].poseidon2_B_13_3); - polys.poseidon2_B_14_0.set_if_valid_index(i, rows[i].poseidon2_B_14_0); - polys.poseidon2_B_14_1.set_if_valid_index(i, rows[i].poseidon2_B_14_1); - polys.poseidon2_B_14_2.set_if_valid_index(i, rows[i].poseidon2_B_14_2); - polys.poseidon2_B_14_3.set_if_valid_index(i, rows[i].poseidon2_B_14_3); - polys.poseidon2_B_15_0.set_if_valid_index(i, rows[i].poseidon2_B_15_0); - polys.poseidon2_B_15_1.set_if_valid_index(i, rows[i].poseidon2_B_15_1); - polys.poseidon2_B_15_2.set_if_valid_index(i, rows[i].poseidon2_B_15_2); - polys.poseidon2_B_15_3.set_if_valid_index(i, rows[i].poseidon2_B_15_3); - polys.poseidon2_B_16_0.set_if_valid_index(i, rows[i].poseidon2_B_16_0); - polys.poseidon2_B_16_1.set_if_valid_index(i, rows[i].poseidon2_B_16_1); - polys.poseidon2_B_16_2.set_if_valid_index(i, rows[i].poseidon2_B_16_2); - polys.poseidon2_B_16_3.set_if_valid_index(i, rows[i].poseidon2_B_16_3); - polys.poseidon2_B_17_0.set_if_valid_index(i, rows[i].poseidon2_B_17_0); - polys.poseidon2_B_17_1.set_if_valid_index(i, rows[i].poseidon2_B_17_1); - polys.poseidon2_B_17_2.set_if_valid_index(i, rows[i].poseidon2_B_17_2); - polys.poseidon2_B_17_3.set_if_valid_index(i, rows[i].poseidon2_B_17_3); - polys.poseidon2_B_18_0.set_if_valid_index(i, rows[i].poseidon2_B_18_0); - polys.poseidon2_B_18_1.set_if_valid_index(i, rows[i].poseidon2_B_18_1); - polys.poseidon2_B_18_2.set_if_valid_index(i, rows[i].poseidon2_B_18_2); - polys.poseidon2_B_18_3.set_if_valid_index(i, rows[i].poseidon2_B_18_3); - polys.poseidon2_B_19_0.set_if_valid_index(i, rows[i].poseidon2_B_19_0); - polys.poseidon2_B_19_1.set_if_valid_index(i, rows[i].poseidon2_B_19_1); - polys.poseidon2_B_19_2.set_if_valid_index(i, rows[i].poseidon2_B_19_2); - polys.poseidon2_B_19_3.set_if_valid_index(i, rows[i].poseidon2_B_19_3); - polys.poseidon2_B_20_0.set_if_valid_index(i, rows[i].poseidon2_B_20_0); - polys.poseidon2_B_20_1.set_if_valid_index(i, rows[i].poseidon2_B_20_1); - polys.poseidon2_B_20_2.set_if_valid_index(i, rows[i].poseidon2_B_20_2); - polys.poseidon2_B_20_3.set_if_valid_index(i, rows[i].poseidon2_B_20_3); - polys.poseidon2_B_21_0.set_if_valid_index(i, rows[i].poseidon2_B_21_0); - polys.poseidon2_B_21_1.set_if_valid_index(i, rows[i].poseidon2_B_21_1); - polys.poseidon2_B_21_2.set_if_valid_index(i, rows[i].poseidon2_B_21_2); - polys.poseidon2_B_21_3.set_if_valid_index(i, rows[i].poseidon2_B_21_3); - polys.poseidon2_B_22_0.set_if_valid_index(i, rows[i].poseidon2_B_22_0); - polys.poseidon2_B_22_1.set_if_valid_index(i, rows[i].poseidon2_B_22_1); - polys.poseidon2_B_22_2.set_if_valid_index(i, rows[i].poseidon2_B_22_2); - polys.poseidon2_B_22_3.set_if_valid_index(i, rows[i].poseidon2_B_22_3); - polys.poseidon2_B_23_0.set_if_valid_index(i, rows[i].poseidon2_B_23_0); - polys.poseidon2_B_23_1.set_if_valid_index(i, rows[i].poseidon2_B_23_1); - polys.poseidon2_B_23_2.set_if_valid_index(i, rows[i].poseidon2_B_23_2); - polys.poseidon2_B_23_3.set_if_valid_index(i, rows[i].poseidon2_B_23_3); - polys.poseidon2_B_24_0.set_if_valid_index(i, rows[i].poseidon2_B_24_0); - polys.poseidon2_B_24_1.set_if_valid_index(i, rows[i].poseidon2_B_24_1); - polys.poseidon2_B_24_2.set_if_valid_index(i, rows[i].poseidon2_B_24_2); - polys.poseidon2_B_24_3.set_if_valid_index(i, rows[i].poseidon2_B_24_3); - polys.poseidon2_B_25_0.set_if_valid_index(i, rows[i].poseidon2_B_25_0); - polys.poseidon2_B_25_1.set_if_valid_index(i, rows[i].poseidon2_B_25_1); - polys.poseidon2_B_25_2.set_if_valid_index(i, rows[i].poseidon2_B_25_2); - polys.poseidon2_B_25_3.set_if_valid_index(i, rows[i].poseidon2_B_25_3); - polys.poseidon2_B_26_0.set_if_valid_index(i, rows[i].poseidon2_B_26_0); - polys.poseidon2_B_26_1.set_if_valid_index(i, rows[i].poseidon2_B_26_1); - polys.poseidon2_B_26_2.set_if_valid_index(i, rows[i].poseidon2_B_26_2); - polys.poseidon2_B_26_3.set_if_valid_index(i, rows[i].poseidon2_B_26_3); - polys.poseidon2_B_27_0.set_if_valid_index(i, rows[i].poseidon2_B_27_0); - polys.poseidon2_B_27_1.set_if_valid_index(i, rows[i].poseidon2_B_27_1); - polys.poseidon2_B_27_2.set_if_valid_index(i, rows[i].poseidon2_B_27_2); - polys.poseidon2_B_27_3.set_if_valid_index(i, rows[i].poseidon2_B_27_3); - polys.poseidon2_B_28_0.set_if_valid_index(i, rows[i].poseidon2_B_28_0); - polys.poseidon2_B_28_1.set_if_valid_index(i, rows[i].poseidon2_B_28_1); - polys.poseidon2_B_28_2.set_if_valid_index(i, rows[i].poseidon2_B_28_2); - polys.poseidon2_B_28_3.set_if_valid_index(i, rows[i].poseidon2_B_28_3); - polys.poseidon2_B_29_0.set_if_valid_index(i, rows[i].poseidon2_B_29_0); - polys.poseidon2_B_29_1.set_if_valid_index(i, rows[i].poseidon2_B_29_1); - polys.poseidon2_B_29_2.set_if_valid_index(i, rows[i].poseidon2_B_29_2); - polys.poseidon2_B_29_3.set_if_valid_index(i, rows[i].poseidon2_B_29_3); - polys.poseidon2_B_30_0.set_if_valid_index(i, rows[i].poseidon2_B_30_0); - polys.poseidon2_B_30_1.set_if_valid_index(i, rows[i].poseidon2_B_30_1); - polys.poseidon2_B_30_2.set_if_valid_index(i, rows[i].poseidon2_B_30_2); - polys.poseidon2_B_30_3.set_if_valid_index(i, rows[i].poseidon2_B_30_3); - polys.poseidon2_B_31_0.set_if_valid_index(i, rows[i].poseidon2_B_31_0); - polys.poseidon2_B_31_1.set_if_valid_index(i, rows[i].poseidon2_B_31_1); - polys.poseidon2_B_31_2.set_if_valid_index(i, rows[i].poseidon2_B_31_2); - polys.poseidon2_B_31_3.set_if_valid_index(i, rows[i].poseidon2_B_31_3); - polys.poseidon2_B_32_0.set_if_valid_index(i, rows[i].poseidon2_B_32_0); - polys.poseidon2_B_32_1.set_if_valid_index(i, rows[i].poseidon2_B_32_1); - polys.poseidon2_B_32_2.set_if_valid_index(i, rows[i].poseidon2_B_32_2); - polys.poseidon2_B_32_3.set_if_valid_index(i, rows[i].poseidon2_B_32_3); - polys.poseidon2_B_33_0.set_if_valid_index(i, rows[i].poseidon2_B_33_0); - polys.poseidon2_B_33_1.set_if_valid_index(i, rows[i].poseidon2_B_33_1); - polys.poseidon2_B_33_2.set_if_valid_index(i, rows[i].poseidon2_B_33_2); - polys.poseidon2_B_33_3.set_if_valid_index(i, rows[i].poseidon2_B_33_3); - polys.poseidon2_B_34_0.set_if_valid_index(i, rows[i].poseidon2_B_34_0); - polys.poseidon2_B_34_1.set_if_valid_index(i, rows[i].poseidon2_B_34_1); - polys.poseidon2_B_34_2.set_if_valid_index(i, rows[i].poseidon2_B_34_2); - polys.poseidon2_B_34_3.set_if_valid_index(i, rows[i].poseidon2_B_34_3); - polys.poseidon2_B_35_0.set_if_valid_index(i, rows[i].poseidon2_B_35_0); - polys.poseidon2_B_35_1.set_if_valid_index(i, rows[i].poseidon2_B_35_1); - polys.poseidon2_B_35_2.set_if_valid_index(i, rows[i].poseidon2_B_35_2); - polys.poseidon2_B_35_3.set_if_valid_index(i, rows[i].poseidon2_B_35_3); - polys.poseidon2_B_36_0.set_if_valid_index(i, rows[i].poseidon2_B_36_0); - polys.poseidon2_B_36_1.set_if_valid_index(i, rows[i].poseidon2_B_36_1); - polys.poseidon2_B_36_2.set_if_valid_index(i, rows[i].poseidon2_B_36_2); - polys.poseidon2_B_36_3.set_if_valid_index(i, rows[i].poseidon2_B_36_3); - polys.poseidon2_B_37_0.set_if_valid_index(i, rows[i].poseidon2_B_37_0); - polys.poseidon2_B_37_1.set_if_valid_index(i, rows[i].poseidon2_B_37_1); - polys.poseidon2_B_37_2.set_if_valid_index(i, rows[i].poseidon2_B_37_2); - polys.poseidon2_B_37_3.set_if_valid_index(i, rows[i].poseidon2_B_37_3); - polys.poseidon2_B_38_0.set_if_valid_index(i, rows[i].poseidon2_B_38_0); - polys.poseidon2_B_38_1.set_if_valid_index(i, rows[i].poseidon2_B_38_1); - polys.poseidon2_B_38_2.set_if_valid_index(i, rows[i].poseidon2_B_38_2); - polys.poseidon2_B_38_3.set_if_valid_index(i, rows[i].poseidon2_B_38_3); - polys.poseidon2_B_39_0.set_if_valid_index(i, rows[i].poseidon2_B_39_0); - polys.poseidon2_B_39_1.set_if_valid_index(i, rows[i].poseidon2_B_39_1); - polys.poseidon2_B_39_2.set_if_valid_index(i, rows[i].poseidon2_B_39_2); - polys.poseidon2_B_39_3.set_if_valid_index(i, rows[i].poseidon2_B_39_3); - polys.poseidon2_B_40_0.set_if_valid_index(i, rows[i].poseidon2_B_40_0); - polys.poseidon2_B_40_1.set_if_valid_index(i, rows[i].poseidon2_B_40_1); - polys.poseidon2_B_40_2.set_if_valid_index(i, rows[i].poseidon2_B_40_2); - polys.poseidon2_B_40_3.set_if_valid_index(i, rows[i].poseidon2_B_40_3); - polys.poseidon2_B_41_0.set_if_valid_index(i, rows[i].poseidon2_B_41_0); - polys.poseidon2_B_41_1.set_if_valid_index(i, rows[i].poseidon2_B_41_1); - polys.poseidon2_B_41_2.set_if_valid_index(i, rows[i].poseidon2_B_41_2); - polys.poseidon2_B_41_3.set_if_valid_index(i, rows[i].poseidon2_B_41_3); - polys.poseidon2_B_42_0.set_if_valid_index(i, rows[i].poseidon2_B_42_0); - polys.poseidon2_B_42_1.set_if_valid_index(i, rows[i].poseidon2_B_42_1); - polys.poseidon2_B_42_2.set_if_valid_index(i, rows[i].poseidon2_B_42_2); - polys.poseidon2_B_42_3.set_if_valid_index(i, rows[i].poseidon2_B_42_3); - polys.poseidon2_B_43_0.set_if_valid_index(i, rows[i].poseidon2_B_43_0); - polys.poseidon2_B_43_1.set_if_valid_index(i, rows[i].poseidon2_B_43_1); - polys.poseidon2_B_43_2.set_if_valid_index(i, rows[i].poseidon2_B_43_2); - polys.poseidon2_B_43_3.set_if_valid_index(i, rows[i].poseidon2_B_43_3); - polys.poseidon2_B_44_0.set_if_valid_index(i, rows[i].poseidon2_B_44_0); - polys.poseidon2_B_44_1.set_if_valid_index(i, rows[i].poseidon2_B_44_1); - polys.poseidon2_B_44_2.set_if_valid_index(i, rows[i].poseidon2_B_44_2); - polys.poseidon2_B_44_3.set_if_valid_index(i, rows[i].poseidon2_B_44_3); - polys.poseidon2_B_45_0.set_if_valid_index(i, rows[i].poseidon2_B_45_0); - polys.poseidon2_B_45_1.set_if_valid_index(i, rows[i].poseidon2_B_45_1); - polys.poseidon2_B_45_2.set_if_valid_index(i, rows[i].poseidon2_B_45_2); - polys.poseidon2_B_45_3.set_if_valid_index(i, rows[i].poseidon2_B_45_3); - polys.poseidon2_B_46_0.set_if_valid_index(i, rows[i].poseidon2_B_46_0); - polys.poseidon2_B_46_1.set_if_valid_index(i, rows[i].poseidon2_B_46_1); - polys.poseidon2_B_46_2.set_if_valid_index(i, rows[i].poseidon2_B_46_2); - polys.poseidon2_B_46_3.set_if_valid_index(i, rows[i].poseidon2_B_46_3); - polys.poseidon2_B_47_0.set_if_valid_index(i, rows[i].poseidon2_B_47_0); - polys.poseidon2_B_47_1.set_if_valid_index(i, rows[i].poseidon2_B_47_1); - polys.poseidon2_B_47_2.set_if_valid_index(i, rows[i].poseidon2_B_47_2); - polys.poseidon2_B_47_3.set_if_valid_index(i, rows[i].poseidon2_B_47_3); - polys.poseidon2_B_48_0.set_if_valid_index(i, rows[i].poseidon2_B_48_0); - polys.poseidon2_B_48_1.set_if_valid_index(i, rows[i].poseidon2_B_48_1); - polys.poseidon2_B_48_2.set_if_valid_index(i, rows[i].poseidon2_B_48_2); - polys.poseidon2_B_48_3.set_if_valid_index(i, rows[i].poseidon2_B_48_3); - polys.poseidon2_B_49_0.set_if_valid_index(i, rows[i].poseidon2_B_49_0); - polys.poseidon2_B_49_1.set_if_valid_index(i, rows[i].poseidon2_B_49_1); - polys.poseidon2_B_49_2.set_if_valid_index(i, rows[i].poseidon2_B_49_2); - polys.poseidon2_B_49_3.set_if_valid_index(i, rows[i].poseidon2_B_49_3); - polys.poseidon2_B_4_0.set_if_valid_index(i, rows[i].poseidon2_B_4_0); - polys.poseidon2_B_4_1.set_if_valid_index(i, rows[i].poseidon2_B_4_1); - polys.poseidon2_B_4_2.set_if_valid_index(i, rows[i].poseidon2_B_4_2); - polys.poseidon2_B_4_3.set_if_valid_index(i, rows[i].poseidon2_B_4_3); - polys.poseidon2_B_50_0.set_if_valid_index(i, rows[i].poseidon2_B_50_0); - polys.poseidon2_B_50_1.set_if_valid_index(i, rows[i].poseidon2_B_50_1); - polys.poseidon2_B_50_2.set_if_valid_index(i, rows[i].poseidon2_B_50_2); - polys.poseidon2_B_50_3.set_if_valid_index(i, rows[i].poseidon2_B_50_3); - polys.poseidon2_B_51_0.set_if_valid_index(i, rows[i].poseidon2_B_51_0); - polys.poseidon2_B_51_1.set_if_valid_index(i, rows[i].poseidon2_B_51_1); - polys.poseidon2_B_51_2.set_if_valid_index(i, rows[i].poseidon2_B_51_2); - polys.poseidon2_B_51_3.set_if_valid_index(i, rows[i].poseidon2_B_51_3); - polys.poseidon2_B_52_0.set_if_valid_index(i, rows[i].poseidon2_B_52_0); - polys.poseidon2_B_52_1.set_if_valid_index(i, rows[i].poseidon2_B_52_1); - polys.poseidon2_B_52_2.set_if_valid_index(i, rows[i].poseidon2_B_52_2); - polys.poseidon2_B_52_3.set_if_valid_index(i, rows[i].poseidon2_B_52_3); - polys.poseidon2_B_53_0.set_if_valid_index(i, rows[i].poseidon2_B_53_0); - polys.poseidon2_B_53_1.set_if_valid_index(i, rows[i].poseidon2_B_53_1); - polys.poseidon2_B_53_2.set_if_valid_index(i, rows[i].poseidon2_B_53_2); - polys.poseidon2_B_53_3.set_if_valid_index(i, rows[i].poseidon2_B_53_3); - polys.poseidon2_B_54_0.set_if_valid_index(i, rows[i].poseidon2_B_54_0); - polys.poseidon2_B_54_1.set_if_valid_index(i, rows[i].poseidon2_B_54_1); - polys.poseidon2_B_54_2.set_if_valid_index(i, rows[i].poseidon2_B_54_2); - polys.poseidon2_B_54_3.set_if_valid_index(i, rows[i].poseidon2_B_54_3); - polys.poseidon2_B_55_0.set_if_valid_index(i, rows[i].poseidon2_B_55_0); - polys.poseidon2_B_55_1.set_if_valid_index(i, rows[i].poseidon2_B_55_1); - polys.poseidon2_B_55_2.set_if_valid_index(i, rows[i].poseidon2_B_55_2); - polys.poseidon2_B_55_3.set_if_valid_index(i, rows[i].poseidon2_B_55_3); - polys.poseidon2_B_56_0.set_if_valid_index(i, rows[i].poseidon2_B_56_0); - polys.poseidon2_B_56_1.set_if_valid_index(i, rows[i].poseidon2_B_56_1); - polys.poseidon2_B_56_2.set_if_valid_index(i, rows[i].poseidon2_B_56_2); - polys.poseidon2_B_56_3.set_if_valid_index(i, rows[i].poseidon2_B_56_3); - polys.poseidon2_B_57_0.set_if_valid_index(i, rows[i].poseidon2_B_57_0); - polys.poseidon2_B_57_1.set_if_valid_index(i, rows[i].poseidon2_B_57_1); - polys.poseidon2_B_57_2.set_if_valid_index(i, rows[i].poseidon2_B_57_2); - polys.poseidon2_B_57_3.set_if_valid_index(i, rows[i].poseidon2_B_57_3); - polys.poseidon2_B_58_0.set_if_valid_index(i, rows[i].poseidon2_B_58_0); - polys.poseidon2_B_58_1.set_if_valid_index(i, rows[i].poseidon2_B_58_1); - polys.poseidon2_B_58_2.set_if_valid_index(i, rows[i].poseidon2_B_58_2); - polys.poseidon2_B_58_3.set_if_valid_index(i, rows[i].poseidon2_B_58_3); - polys.poseidon2_B_59_0.set_if_valid_index(i, rows[i].poseidon2_B_59_0); - polys.poseidon2_B_59_1.set_if_valid_index(i, rows[i].poseidon2_B_59_1); - polys.poseidon2_B_59_2.set_if_valid_index(i, rows[i].poseidon2_B_59_2); - polys.poseidon2_B_59_3.set_if_valid_index(i, rows[i].poseidon2_B_59_3); - polys.poseidon2_B_5_0.set_if_valid_index(i, rows[i].poseidon2_B_5_0); - polys.poseidon2_B_5_1.set_if_valid_index(i, rows[i].poseidon2_B_5_1); - polys.poseidon2_B_5_2.set_if_valid_index(i, rows[i].poseidon2_B_5_2); - polys.poseidon2_B_5_3.set_if_valid_index(i, rows[i].poseidon2_B_5_3); - polys.poseidon2_B_6_0.set_if_valid_index(i, rows[i].poseidon2_B_6_0); - polys.poseidon2_B_6_1.set_if_valid_index(i, rows[i].poseidon2_B_6_1); - polys.poseidon2_B_6_2.set_if_valid_index(i, rows[i].poseidon2_B_6_2); - polys.poseidon2_B_6_3.set_if_valid_index(i, rows[i].poseidon2_B_6_3); - polys.poseidon2_B_7_0.set_if_valid_index(i, rows[i].poseidon2_B_7_0); - polys.poseidon2_B_7_1.set_if_valid_index(i, rows[i].poseidon2_B_7_1); - polys.poseidon2_B_7_2.set_if_valid_index(i, rows[i].poseidon2_B_7_2); - polys.poseidon2_B_7_3.set_if_valid_index(i, rows[i].poseidon2_B_7_3); - polys.poseidon2_B_8_0.set_if_valid_index(i, rows[i].poseidon2_B_8_0); - polys.poseidon2_B_8_1.set_if_valid_index(i, rows[i].poseidon2_B_8_1); - polys.poseidon2_B_8_2.set_if_valid_index(i, rows[i].poseidon2_B_8_2); - polys.poseidon2_B_8_3.set_if_valid_index(i, rows[i].poseidon2_B_8_3); - polys.poseidon2_B_9_0.set_if_valid_index(i, rows[i].poseidon2_B_9_0); - polys.poseidon2_B_9_1.set_if_valid_index(i, rows[i].poseidon2_B_9_1); - polys.poseidon2_B_9_2.set_if_valid_index(i, rows[i].poseidon2_B_9_2); - polys.poseidon2_B_9_3.set_if_valid_index(i, rows[i].poseidon2_B_9_3); - polys.poseidon2_EXT_LAYER_4.set_if_valid_index(i, rows[i].poseidon2_EXT_LAYER_4); - polys.poseidon2_EXT_LAYER_5.set_if_valid_index(i, rows[i].poseidon2_EXT_LAYER_5); - polys.poseidon2_EXT_LAYER_6.set_if_valid_index(i, rows[i].poseidon2_EXT_LAYER_6); - polys.poseidon2_EXT_LAYER_7.set_if_valid_index(i, rows[i].poseidon2_EXT_LAYER_7); - polys.poseidon2_T_0_4.set_if_valid_index(i, rows[i].poseidon2_T_0_4); - polys.poseidon2_T_0_5.set_if_valid_index(i, rows[i].poseidon2_T_0_5); - polys.poseidon2_T_0_6.set_if_valid_index(i, rows[i].poseidon2_T_0_6); - polys.poseidon2_T_0_7.set_if_valid_index(i, rows[i].poseidon2_T_0_7); - polys.poseidon2_T_1_4.set_if_valid_index(i, rows[i].poseidon2_T_1_4); - polys.poseidon2_T_1_5.set_if_valid_index(i, rows[i].poseidon2_T_1_5); - polys.poseidon2_T_1_6.set_if_valid_index(i, rows[i].poseidon2_T_1_6); - polys.poseidon2_T_1_7.set_if_valid_index(i, rows[i].poseidon2_T_1_7); - polys.poseidon2_T_2_4.set_if_valid_index(i, rows[i].poseidon2_T_2_4); - polys.poseidon2_T_2_5.set_if_valid_index(i, rows[i].poseidon2_T_2_5); - polys.poseidon2_T_2_6.set_if_valid_index(i, rows[i].poseidon2_T_2_6); - polys.poseidon2_T_2_7.set_if_valid_index(i, rows[i].poseidon2_T_2_7); - polys.poseidon2_T_3_4.set_if_valid_index(i, rows[i].poseidon2_T_3_4); - polys.poseidon2_T_3_5.set_if_valid_index(i, rows[i].poseidon2_T_3_5); - polys.poseidon2_T_3_6.set_if_valid_index(i, rows[i].poseidon2_T_3_6); - polys.poseidon2_T_3_7.set_if_valid_index(i, rows[i].poseidon2_T_3_7); - polys.poseidon2_T_60_4.set_if_valid_index(i, rows[i].poseidon2_T_60_4); - polys.poseidon2_T_60_5.set_if_valid_index(i, rows[i].poseidon2_T_60_5); - polys.poseidon2_T_60_6.set_if_valid_index(i, rows[i].poseidon2_T_60_6); - polys.poseidon2_T_60_7.set_if_valid_index(i, rows[i].poseidon2_T_60_7); - polys.poseidon2_T_61_4.set_if_valid_index(i, rows[i].poseidon2_T_61_4); - polys.poseidon2_T_61_5.set_if_valid_index(i, rows[i].poseidon2_T_61_5); - polys.poseidon2_T_61_6.set_if_valid_index(i, rows[i].poseidon2_T_61_6); - polys.poseidon2_T_61_7.set_if_valid_index(i, rows[i].poseidon2_T_61_7); - polys.poseidon2_T_62_4.set_if_valid_index(i, rows[i].poseidon2_T_62_4); - polys.poseidon2_T_62_5.set_if_valid_index(i, rows[i].poseidon2_T_62_5); - polys.poseidon2_T_62_6.set_if_valid_index(i, rows[i].poseidon2_T_62_6); - polys.poseidon2_T_62_7.set_if_valid_index(i, rows[i].poseidon2_T_62_7); - polys.poseidon2_T_63_4.set_if_valid_index(i, rows[i].poseidon2_T_63_4); - polys.poseidon2_T_63_5.set_if_valid_index(i, rows[i].poseidon2_T_63_5); - polys.poseidon2_T_63_6.set_if_valid_index(i, rows[i].poseidon2_T_63_6); - polys.poseidon2_T_63_7.set_if_valid_index(i, rows[i].poseidon2_T_63_7); - polys.poseidon2_a_0.set_if_valid_index(i, rows[i].poseidon2_a_0); - polys.poseidon2_a_1.set_if_valid_index(i, rows[i].poseidon2_a_1); - polys.poseidon2_a_2.set_if_valid_index(i, rows[i].poseidon2_a_2); - polys.poseidon2_a_3.set_if_valid_index(i, rows[i].poseidon2_a_3); - polys.poseidon2_b_0.set_if_valid_index(i, rows[i].poseidon2_b_0); - polys.poseidon2_b_1.set_if_valid_index(i, rows[i].poseidon2_b_1); - polys.poseidon2_b_2.set_if_valid_index(i, rows[i].poseidon2_b_2); - polys.poseidon2_b_3.set_if_valid_index(i, rows[i].poseidon2_b_3); - polys.poseidon2_clk.set_if_valid_index(i, rows[i].poseidon2_clk); - polys.poseidon2_input_addr.set_if_valid_index(i, rows[i].poseidon2_input_addr); - polys.poseidon2_mem_addr_read_a.set_if_valid_index(i, rows[i].poseidon2_mem_addr_read_a); - polys.poseidon2_mem_addr_read_b.set_if_valid_index(i, rows[i].poseidon2_mem_addr_read_b); - polys.poseidon2_mem_addr_read_c.set_if_valid_index(i, rows[i].poseidon2_mem_addr_read_c); - polys.poseidon2_mem_addr_read_d.set_if_valid_index(i, rows[i].poseidon2_mem_addr_read_d); - polys.poseidon2_mem_addr_write_a.set_if_valid_index(i, rows[i].poseidon2_mem_addr_write_a); - polys.poseidon2_mem_addr_write_b.set_if_valid_index(i, rows[i].poseidon2_mem_addr_write_b); - polys.poseidon2_mem_addr_write_c.set_if_valid_index(i, rows[i].poseidon2_mem_addr_write_c); - polys.poseidon2_mem_addr_write_d.set_if_valid_index(i, rows[i].poseidon2_mem_addr_write_d); - polys.poseidon2_output_addr.set_if_valid_index(i, rows[i].poseidon2_output_addr); - polys.poseidon2_sel_poseidon_perm.set_if_valid_index(i, rows[i].poseidon2_sel_poseidon_perm); - polys.poseidon2_space_id.set_if_valid_index(i, rows[i].poseidon2_space_id); - polys.range_check_alu_rng_chk.set_if_valid_index(i, rows[i].range_check_alu_rng_chk); - polys.range_check_clk.set_if_valid_index(i, rows[i].range_check_clk); - polys.range_check_cmp_hi_bits_rng_chk.set_if_valid_index(i, rows[i].range_check_cmp_hi_bits_rng_chk); - polys.range_check_cmp_lo_bits_rng_chk.set_if_valid_index(i, rows[i].range_check_cmp_lo_bits_rng_chk); - polys.range_check_dyn_diff.set_if_valid_index(i, rows[i].range_check_dyn_diff); - polys.range_check_dyn_rng_chk_bits.set_if_valid_index(i, rows[i].range_check_dyn_rng_chk_bits); - polys.range_check_dyn_rng_chk_pow_2.set_if_valid_index(i, rows[i].range_check_dyn_rng_chk_pow_2); - polys.range_check_gas_da_rng_chk.set_if_valid_index(i, rows[i].range_check_gas_da_rng_chk); - polys.range_check_gas_l2_rng_chk.set_if_valid_index(i, rows[i].range_check_gas_l2_rng_chk); - polys.range_check_is_lte_u112.set_if_valid_index(i, rows[i].range_check_is_lte_u112); - polys.range_check_is_lte_u128.set_if_valid_index(i, rows[i].range_check_is_lte_u128); - polys.range_check_is_lte_u16.set_if_valid_index(i, rows[i].range_check_is_lte_u16); - polys.range_check_is_lte_u32.set_if_valid_index(i, rows[i].range_check_is_lte_u32); - polys.range_check_is_lte_u48.set_if_valid_index(i, rows[i].range_check_is_lte_u48); - polys.range_check_is_lte_u64.set_if_valid_index(i, rows[i].range_check_is_lte_u64); - polys.range_check_is_lte_u80.set_if_valid_index(i, rows[i].range_check_is_lte_u80); - polys.range_check_is_lte_u96.set_if_valid_index(i, rows[i].range_check_is_lte_u96); - polys.range_check_mem_rng_chk.set_if_valid_index(i, rows[i].range_check_mem_rng_chk); - polys.range_check_rng_chk_bits.set_if_valid_index(i, rows[i].range_check_rng_chk_bits); - polys.range_check_sel_lookup_0.set_if_valid_index(i, rows[i].range_check_sel_lookup_0); - polys.range_check_sel_lookup_1.set_if_valid_index(i, rows[i].range_check_sel_lookup_1); - polys.range_check_sel_lookup_2.set_if_valid_index(i, rows[i].range_check_sel_lookup_2); - polys.range_check_sel_lookup_3.set_if_valid_index(i, rows[i].range_check_sel_lookup_3); - polys.range_check_sel_lookup_4.set_if_valid_index(i, rows[i].range_check_sel_lookup_4); - polys.range_check_sel_lookup_5.set_if_valid_index(i, rows[i].range_check_sel_lookup_5); - polys.range_check_sel_lookup_6.set_if_valid_index(i, rows[i].range_check_sel_lookup_6); - polys.range_check_sel_rng_chk.set_if_valid_index(i, rows[i].range_check_sel_rng_chk); - polys.range_check_u16_r0.set_if_valid_index(i, rows[i].range_check_u16_r0); - polys.range_check_u16_r1.set_if_valid_index(i, rows[i].range_check_u16_r1); - polys.range_check_u16_r2.set_if_valid_index(i, rows[i].range_check_u16_r2); - polys.range_check_u16_r3.set_if_valid_index(i, rows[i].range_check_u16_r3); - polys.range_check_u16_r4.set_if_valid_index(i, rows[i].range_check_u16_r4); - polys.range_check_u16_r5.set_if_valid_index(i, rows[i].range_check_u16_r5); - polys.range_check_u16_r6.set_if_valid_index(i, rows[i].range_check_u16_r6); - polys.range_check_u16_r7.set_if_valid_index(i, rows[i].range_check_u16_r7); - polys.range_check_value.set_if_valid_index(i, rows[i].range_check_value); - polys.sha256_clk.set_if_valid_index(i, rows[i].sha256_clk); - polys.sha256_input.set_if_valid_index(i, rows[i].sha256_input); - polys.sha256_output.set_if_valid_index(i, rows[i].sha256_output); - polys.sha256_sel_sha256_compression.set_if_valid_index(i, rows[i].sha256_sel_sha256_compression); - polys.sha256_state.set_if_valid_index(i, rows[i].sha256_state); - polys.slice_addr.set_if_valid_index(i, rows[i].slice_addr); - polys.slice_clk.set_if_valid_index(i, rows[i].slice_clk); - polys.slice_cnt.set_if_valid_index(i, rows[i].slice_cnt); - polys.slice_col_offset.set_if_valid_index(i, rows[i].slice_col_offset); - polys.slice_one_min_inv.set_if_valid_index(i, rows[i].slice_one_min_inv); - polys.slice_sel_cd_cpy.set_if_valid_index(i, rows[i].slice_sel_cd_cpy); - polys.slice_sel_mem_active.set_if_valid_index(i, rows[i].slice_sel_mem_active); - polys.slice_sel_return.set_if_valid_index(i, rows[i].slice_sel_return); - polys.slice_sel_start.set_if_valid_index(i, rows[i].slice_sel_start); - polys.slice_space_id.set_if_valid_index(i, rows[i].slice_space_id); - polys.slice_val.set_if_valid_index(i, rows[i].slice_val); - polys.lookup_rng_chk_pow_2_counts.set_if_valid_index(i, rows[i].lookup_rng_chk_pow_2_counts); - polys.lookup_rng_chk_diff_counts.set_if_valid_index(i, rows[i].lookup_rng_chk_diff_counts); - polys.lookup_rng_chk_0_counts.set_if_valid_index(i, rows[i].lookup_rng_chk_0_counts); - polys.lookup_rng_chk_1_counts.set_if_valid_index(i, rows[i].lookup_rng_chk_1_counts); - polys.lookup_rng_chk_2_counts.set_if_valid_index(i, rows[i].lookup_rng_chk_2_counts); - polys.lookup_rng_chk_3_counts.set_if_valid_index(i, rows[i].lookup_rng_chk_3_counts); - polys.lookup_rng_chk_4_counts.set_if_valid_index(i, rows[i].lookup_rng_chk_4_counts); - polys.lookup_rng_chk_5_counts.set_if_valid_index(i, rows[i].lookup_rng_chk_5_counts); - polys.lookup_rng_chk_6_counts.set_if_valid_index(i, rows[i].lookup_rng_chk_6_counts); - polys.lookup_rng_chk_7_counts.set_if_valid_index(i, rows[i].lookup_rng_chk_7_counts); - polys.lookup_pow_2_0_counts.set_if_valid_index(i, rows[i].lookup_pow_2_0_counts); - polys.lookup_pow_2_1_counts.set_if_valid_index(i, rows[i].lookup_pow_2_1_counts); - polys.lookup_byte_lengths_counts.set_if_valid_index(i, rows[i].lookup_byte_lengths_counts); - polys.lookup_byte_operations_counts.set_if_valid_index(i, rows[i].lookup_byte_operations_counts); - polys.lookup_opcode_gas_counts.set_if_valid_index(i, rows[i].lookup_opcode_gas_counts); - polys.kernel_output_lookup_counts.set_if_valid_index(i, rows[i].kernel_output_lookup_counts); - polys.lookup_into_kernel_counts.set_if_valid_index(i, rows[i].lookup_into_kernel_counts); - polys.lookup_cd_value_counts.set_if_valid_index(i, rows[i].lookup_cd_value_counts); - polys.lookup_ret_value_counts.set_if_valid_index(i, rows[i].lookup_ret_value_counts); - polys.incl_main_tag_err_counts.set_if_valid_index(i, rows[i].incl_main_tag_err_counts); - polys.incl_mem_tag_err_counts.set_if_valid_index(i, rows[i].incl_mem_tag_err_counts); - }); - })); + polys.byte_lookup_sel_bin.set_if_valid_index(i, rows[i].byte_lookup_sel_bin); + polys.byte_lookup_table_byte_lengths.set_if_valid_index(i, rows[i].byte_lookup_table_byte_lengths); + polys.byte_lookup_table_in_tags.set_if_valid_index(i, rows[i].byte_lookup_table_in_tags); + polys.byte_lookup_table_input_a.set_if_valid_index(i, rows[i].byte_lookup_table_input_a); + polys.byte_lookup_table_input_b.set_if_valid_index(i, rows[i].byte_lookup_table_input_b); + polys.byte_lookup_table_op_id.set_if_valid_index(i, rows[i].byte_lookup_table_op_id); + polys.byte_lookup_table_output.set_if_valid_index(i, rows[i].byte_lookup_table_output); + polys.gas_base_da_gas_fixed_table.set_if_valid_index(i, rows[i].gas_base_da_gas_fixed_table); + polys.gas_base_l2_gas_fixed_table.set_if_valid_index(i, rows[i].gas_base_l2_gas_fixed_table); + polys.gas_dyn_da_gas_fixed_table.set_if_valid_index(i, rows[i].gas_dyn_da_gas_fixed_table); + polys.gas_dyn_l2_gas_fixed_table.set_if_valid_index(i, rows[i].gas_dyn_l2_gas_fixed_table); + polys.gas_sel_gas_cost.set_if_valid_index(i, rows[i].gas_sel_gas_cost); + polys.main_clk.set_if_valid_index(i, rows[i].main_clk); + polys.main_sel_da_end_gas_kernel_input.set_if_valid_index(i, rows[i].main_sel_da_end_gas_kernel_input); + polys.main_sel_da_start_gas_kernel_input.set_if_valid_index(i, rows[i].main_sel_da_start_gas_kernel_input); + polys.main_sel_first.set_if_valid_index(i, rows[i].main_sel_first); + polys.main_sel_l2_end_gas_kernel_input.set_if_valid_index(i, rows[i].main_sel_l2_end_gas_kernel_input); + polys.main_sel_l2_start_gas_kernel_input.set_if_valid_index(i, rows[i].main_sel_l2_start_gas_kernel_input); + polys.main_sel_start_exec.set_if_valid_index(i, rows[i].main_sel_start_exec); + polys.main_zeroes.set_if_valid_index(i, rows[i].main_zeroes); + polys.powers_power_of_2.set_if_valid_index(i, rows[i].powers_power_of_2); + polys.main_kernel_inputs.set_if_valid_index(i, rows[i].main_kernel_inputs); + polys.main_kernel_value_out.set_if_valid_index(i, rows[i].main_kernel_value_out); + polys.main_kernel_side_effect_out.set_if_valid_index(i, rows[i].main_kernel_side_effect_out); + polys.main_kernel_metadata_out.set_if_valid_index(i, rows[i].main_kernel_metadata_out); + polys.main_calldata.set_if_valid_index(i, rows[i].main_calldata); + polys.main_returndata.set_if_valid_index(i, rows[i].main_returndata); + polys.alu_a_hi.set_if_valid_index(i, rows[i].alu_a_hi); + polys.alu_a_lo.set_if_valid_index(i, rows[i].alu_a_lo); + polys.alu_b_hi.set_if_valid_index(i, rows[i].alu_b_hi); + polys.alu_b_lo.set_if_valid_index(i, rows[i].alu_b_lo); + polys.alu_b_pow.set_if_valid_index(i, rows[i].alu_b_pow); + polys.alu_c_hi.set_if_valid_index(i, rows[i].alu_c_hi); + polys.alu_c_lo.set_if_valid_index(i, rows[i].alu_c_lo); + polys.alu_cf.set_if_valid_index(i, rows[i].alu_cf); + polys.alu_clk.set_if_valid_index(i, rows[i].alu_clk); + polys.alu_cmp_gadget_gt.set_if_valid_index(i, rows[i].alu_cmp_gadget_gt); + polys.alu_cmp_gadget_input_a.set_if_valid_index(i, rows[i].alu_cmp_gadget_input_a); + polys.alu_cmp_gadget_input_b.set_if_valid_index(i, rows[i].alu_cmp_gadget_input_b); + polys.alu_cmp_gadget_result.set_if_valid_index(i, rows[i].alu_cmp_gadget_result); + polys.alu_cmp_gadget_sel.set_if_valid_index(i, rows[i].alu_cmp_gadget_sel); + polys.alu_ff_tag.set_if_valid_index(i, rows[i].alu_ff_tag); + polys.alu_ia.set_if_valid_index(i, rows[i].alu_ia); + polys.alu_ib.set_if_valid_index(i, rows[i].alu_ib); + polys.alu_ic.set_if_valid_index(i, rows[i].alu_ic); + polys.alu_in_tag.set_if_valid_index(i, rows[i].alu_in_tag); + polys.alu_max_bits_sub_b_bits.set_if_valid_index(i, rows[i].alu_max_bits_sub_b_bits); + polys.alu_max_bits_sub_b_pow.set_if_valid_index(i, rows[i].alu_max_bits_sub_b_pow); + polys.alu_op_add.set_if_valid_index(i, rows[i].alu_op_add); + polys.alu_op_cast.set_if_valid_index(i, rows[i].alu_op_cast); + polys.alu_op_div.set_if_valid_index(i, rows[i].alu_op_div); + polys.alu_op_eq.set_if_valid_index(i, rows[i].alu_op_eq); + polys.alu_op_lt.set_if_valid_index(i, rows[i].alu_op_lt); + polys.alu_op_lte.set_if_valid_index(i, rows[i].alu_op_lte); + polys.alu_op_mul.set_if_valid_index(i, rows[i].alu_op_mul); + polys.alu_op_not.set_if_valid_index(i, rows[i].alu_op_not); + polys.alu_op_shl.set_if_valid_index(i, rows[i].alu_op_shl); + polys.alu_op_shr.set_if_valid_index(i, rows[i].alu_op_shr); + polys.alu_op_sub.set_if_valid_index(i, rows[i].alu_op_sub); + polys.alu_partial_prod_hi.set_if_valid_index(i, rows[i].alu_partial_prod_hi); + polys.alu_partial_prod_lo.set_if_valid_index(i, rows[i].alu_partial_prod_lo); + polys.alu_range_check_input_value.set_if_valid_index(i, rows[i].alu_range_check_input_value); + polys.alu_range_check_num_bits.set_if_valid_index(i, rows[i].alu_range_check_num_bits); + polys.alu_range_check_sel.set_if_valid_index(i, rows[i].alu_range_check_sel); + polys.alu_remainder.set_if_valid_index(i, rows[i].alu_remainder); + polys.alu_sel_alu.set_if_valid_index(i, rows[i].alu_sel_alu); + polys.alu_sel_cmp.set_if_valid_index(i, rows[i].alu_sel_cmp); + polys.alu_sel_shift_which.set_if_valid_index(i, rows[i].alu_sel_shift_which); + polys.alu_u128_tag.set_if_valid_index(i, rows[i].alu_u128_tag); + polys.alu_u16_tag.set_if_valid_index(i, rows[i].alu_u16_tag); + polys.alu_u1_tag.set_if_valid_index(i, rows[i].alu_u1_tag); + polys.alu_u32_tag.set_if_valid_index(i, rows[i].alu_u32_tag); + polys.alu_u64_tag.set_if_valid_index(i, rows[i].alu_u64_tag); + polys.alu_u8_tag.set_if_valid_index(i, rows[i].alu_u8_tag); + polys.alu_zero_shift.set_if_valid_index(i, rows[i].alu_zero_shift); + polys.binary_acc_ia.set_if_valid_index(i, rows[i].binary_acc_ia); + polys.binary_acc_ib.set_if_valid_index(i, rows[i].binary_acc_ib); + polys.binary_acc_ic.set_if_valid_index(i, rows[i].binary_acc_ic); + polys.binary_clk.set_if_valid_index(i, rows[i].binary_clk); + polys.binary_ia_bytes.set_if_valid_index(i, rows[i].binary_ia_bytes); + polys.binary_ib_bytes.set_if_valid_index(i, rows[i].binary_ib_bytes); + polys.binary_ic_bytes.set_if_valid_index(i, rows[i].binary_ic_bytes); + polys.binary_in_tag.set_if_valid_index(i, rows[i].binary_in_tag); + polys.binary_mem_tag_ctr.set_if_valid_index(i, rows[i].binary_mem_tag_ctr); + polys.binary_mem_tag_ctr_inv.set_if_valid_index(i, rows[i].binary_mem_tag_ctr_inv); + polys.binary_op_id.set_if_valid_index(i, rows[i].binary_op_id); + polys.binary_sel_bin.set_if_valid_index(i, rows[i].binary_sel_bin); + polys.binary_start.set_if_valid_index(i, rows[i].binary_start); + polys.cmp_a_hi.set_if_valid_index(i, rows[i].cmp_a_hi); + polys.cmp_a_lo.set_if_valid_index(i, rows[i].cmp_a_lo); + polys.cmp_b_hi.set_if_valid_index(i, rows[i].cmp_b_hi); + polys.cmp_b_lo.set_if_valid_index(i, rows[i].cmp_b_lo); + polys.cmp_borrow.set_if_valid_index(i, rows[i].cmp_borrow); + polys.cmp_clk.set_if_valid_index(i, rows[i].cmp_clk); + polys.cmp_cmp_rng_ctr.set_if_valid_index(i, rows[i].cmp_cmp_rng_ctr); + polys.cmp_input_a.set_if_valid_index(i, rows[i].cmp_input_a); + polys.cmp_input_b.set_if_valid_index(i, rows[i].cmp_input_b); + polys.cmp_op_eq.set_if_valid_index(i, rows[i].cmp_op_eq); + polys.cmp_op_eq_diff_inv.set_if_valid_index(i, rows[i].cmp_op_eq_diff_inv); + polys.cmp_op_gt.set_if_valid_index(i, rows[i].cmp_op_gt); + polys.cmp_p_a_borrow.set_if_valid_index(i, rows[i].cmp_p_a_borrow); + polys.cmp_p_b_borrow.set_if_valid_index(i, rows[i].cmp_p_b_borrow); + polys.cmp_p_sub_a_hi.set_if_valid_index(i, rows[i].cmp_p_sub_a_hi); + polys.cmp_p_sub_a_lo.set_if_valid_index(i, rows[i].cmp_p_sub_a_lo); + polys.cmp_p_sub_b_hi.set_if_valid_index(i, rows[i].cmp_p_sub_b_hi); + polys.cmp_p_sub_b_lo.set_if_valid_index(i, rows[i].cmp_p_sub_b_lo); + polys.cmp_range_chk_clk.set_if_valid_index(i, rows[i].cmp_range_chk_clk); + polys.cmp_res_hi.set_if_valid_index(i, rows[i].cmp_res_hi); + polys.cmp_res_lo.set_if_valid_index(i, rows[i].cmp_res_lo); + polys.cmp_result.set_if_valid_index(i, rows[i].cmp_result); + polys.cmp_sel_cmp.set_if_valid_index(i, rows[i].cmp_sel_cmp); + polys.cmp_sel_rng_chk.set_if_valid_index(i, rows[i].cmp_sel_rng_chk); + polys.cmp_shift_sel.set_if_valid_index(i, rows[i].cmp_shift_sel); + polys.conversion_clk.set_if_valid_index(i, rows[i].conversion_clk); + polys.conversion_input.set_if_valid_index(i, rows[i].conversion_input); + polys.conversion_num_limbs.set_if_valid_index(i, rows[i].conversion_num_limbs); + polys.conversion_output_bits.set_if_valid_index(i, rows[i].conversion_output_bits); + polys.conversion_radix.set_if_valid_index(i, rows[i].conversion_radix); + polys.conversion_sel_to_radix_le.set_if_valid_index(i, rows[i].conversion_sel_to_radix_le); + polys.keccakf1600_clk.set_if_valid_index(i, rows[i].keccakf1600_clk); + polys.keccakf1600_input.set_if_valid_index(i, rows[i].keccakf1600_input); + polys.keccakf1600_output.set_if_valid_index(i, rows[i].keccakf1600_output); + polys.keccakf1600_sel_keccakf1600.set_if_valid_index(i, rows[i].keccakf1600_sel_keccakf1600); + polys.main_abs_da_rem_gas.set_if_valid_index(i, rows[i].main_abs_da_rem_gas); + polys.main_abs_l2_rem_gas.set_if_valid_index(i, rows[i].main_abs_l2_rem_gas); + polys.main_alu_in_tag.set_if_valid_index(i, rows[i].main_alu_in_tag); + polys.main_base_da_gas_op_cost.set_if_valid_index(i, rows[i].main_base_da_gas_op_cost); + polys.main_base_l2_gas_op_cost.set_if_valid_index(i, rows[i].main_base_l2_gas_op_cost); + polys.main_bin_op_id.set_if_valid_index(i, rows[i].main_bin_op_id); + polys.main_call_ptr.set_if_valid_index(i, rows[i].main_call_ptr); + polys.main_da_gas_remaining.set_if_valid_index(i, rows[i].main_da_gas_remaining); + polys.main_da_out_of_gas.set_if_valid_index(i, rows[i].main_da_out_of_gas); + polys.main_dyn_da_gas_op_cost.set_if_valid_index(i, rows[i].main_dyn_da_gas_op_cost); + polys.main_dyn_gas_multiplier.set_if_valid_index(i, rows[i].main_dyn_gas_multiplier); + polys.main_dyn_l2_gas_op_cost.set_if_valid_index(i, rows[i].main_dyn_l2_gas_op_cost); + polys.main_emit_l2_to_l1_msg_write_offset.set_if_valid_index(i, rows[i].main_emit_l2_to_l1_msg_write_offset); + polys.main_emit_note_hash_write_offset.set_if_valid_index(i, rows[i].main_emit_note_hash_write_offset); + polys.main_emit_nullifier_write_offset.set_if_valid_index(i, rows[i].main_emit_nullifier_write_offset); + polys.main_emit_unencrypted_log_write_offset.set_if_valid_index(i, rows[i].main_emit_unencrypted_log_write_offset); + polys.main_ia.set_if_valid_index(i, rows[i].main_ia); + polys.main_ib.set_if_valid_index(i, rows[i].main_ib); + polys.main_ic.set_if_valid_index(i, rows[i].main_ic); + polys.main_id.set_if_valid_index(i, rows[i].main_id); + polys.main_id_zero.set_if_valid_index(i, rows[i].main_id_zero); + polys.main_ind_addr_a.set_if_valid_index(i, rows[i].main_ind_addr_a); + polys.main_ind_addr_b.set_if_valid_index(i, rows[i].main_ind_addr_b); + polys.main_ind_addr_c.set_if_valid_index(i, rows[i].main_ind_addr_c); + polys.main_ind_addr_d.set_if_valid_index(i, rows[i].main_ind_addr_d); + polys.main_internal_return_ptr.set_if_valid_index(i, rows[i].main_internal_return_ptr); + polys.main_inv.set_if_valid_index(i, rows[i].main_inv); + polys.main_is_fake_row.set_if_valid_index(i, rows[i].main_is_fake_row); + polys.main_is_gas_accounted.set_if_valid_index(i, rows[i].main_is_gas_accounted); + polys.main_kernel_in_offset.set_if_valid_index(i, rows[i].main_kernel_in_offset); + polys.main_kernel_out_offset.set_if_valid_index(i, rows[i].main_kernel_out_offset); + polys.main_l1_to_l2_msg_exists_write_offset.set_if_valid_index(i, rows[i].main_l1_to_l2_msg_exists_write_offset); + polys.main_l2_gas_remaining.set_if_valid_index(i, rows[i].main_l2_gas_remaining); + polys.main_l2_out_of_gas.set_if_valid_index(i, rows[i].main_l2_out_of_gas); + polys.main_mem_addr_a.set_if_valid_index(i, rows[i].main_mem_addr_a); + polys.main_mem_addr_b.set_if_valid_index(i, rows[i].main_mem_addr_b); + polys.main_mem_addr_c.set_if_valid_index(i, rows[i].main_mem_addr_c); + polys.main_mem_addr_d.set_if_valid_index(i, rows[i].main_mem_addr_d); + polys.main_note_hash_exist_write_offset.set_if_valid_index(i, rows[i].main_note_hash_exist_write_offset); + polys.main_nullifier_exists_write_offset.set_if_valid_index(i, rows[i].main_nullifier_exists_write_offset); + polys.main_nullifier_non_exists_write_offset.set_if_valid_index(i, rows[i].main_nullifier_non_exists_write_offset); + polys.main_op_err.set_if_valid_index(i, rows[i].main_op_err); + polys.main_opcode_val.set_if_valid_index(i, rows[i].main_opcode_val); + polys.main_pc.set_if_valid_index(i, rows[i].main_pc); + polys.main_r_in_tag.set_if_valid_index(i, rows[i].main_r_in_tag); + polys.main_rwa.set_if_valid_index(i, rows[i].main_rwa); + polys.main_rwb.set_if_valid_index(i, rows[i].main_rwb); + polys.main_rwc.set_if_valid_index(i, rows[i].main_rwc); + polys.main_rwd.set_if_valid_index(i, rows[i].main_rwd); + polys.main_sel_alu.set_if_valid_index(i, rows[i].main_sel_alu); + polys.main_sel_bin.set_if_valid_index(i, rows[i].main_sel_bin); + polys.main_sel_calldata.set_if_valid_index(i, rows[i].main_sel_calldata); + polys.main_sel_execution_end.set_if_valid_index(i, rows[i].main_sel_execution_end); + polys.main_sel_execution_row.set_if_valid_index(i, rows[i].main_sel_execution_row); + polys.main_sel_kernel_inputs.set_if_valid_index(i, rows[i].main_sel_kernel_inputs); + polys.main_sel_kernel_out.set_if_valid_index(i, rows[i].main_sel_kernel_out); + polys.main_sel_mem_op_a.set_if_valid_index(i, rows[i].main_sel_mem_op_a); + polys.main_sel_mem_op_b.set_if_valid_index(i, rows[i].main_sel_mem_op_b); + polys.main_sel_mem_op_c.set_if_valid_index(i, rows[i].main_sel_mem_op_c); + polys.main_sel_mem_op_d.set_if_valid_index(i, rows[i].main_sel_mem_op_d); + polys.main_sel_mov_ia_to_ic.set_if_valid_index(i, rows[i].main_sel_mov_ia_to_ic); + polys.main_sel_mov_ib_to_ic.set_if_valid_index(i, rows[i].main_sel_mov_ib_to_ic); + polys.main_sel_op_add.set_if_valid_index(i, rows[i].main_sel_op_add); + polys.main_sel_op_address.set_if_valid_index(i, rows[i].main_sel_op_address); + polys.main_sel_op_and.set_if_valid_index(i, rows[i].main_sel_op_and); + polys.main_sel_op_block_number.set_if_valid_index(i, rows[i].main_sel_op_block_number); + polys.main_sel_op_calldata_copy.set_if_valid_index(i, rows[i].main_sel_op_calldata_copy); + polys.main_sel_op_cast.set_if_valid_index(i, rows[i].main_sel_op_cast); + polys.main_sel_op_chain_id.set_if_valid_index(i, rows[i].main_sel_op_chain_id); + polys.main_sel_op_dagasleft.set_if_valid_index(i, rows[i].main_sel_op_dagasleft); + polys.main_sel_op_div.set_if_valid_index(i, rows[i].main_sel_op_div); + polys.main_sel_op_ecadd.set_if_valid_index(i, rows[i].main_sel_op_ecadd); + polys.main_sel_op_emit_l2_to_l1_msg.set_if_valid_index(i, rows[i].main_sel_op_emit_l2_to_l1_msg); + polys.main_sel_op_emit_note_hash.set_if_valid_index(i, rows[i].main_sel_op_emit_note_hash); + polys.main_sel_op_emit_nullifier.set_if_valid_index(i, rows[i].main_sel_op_emit_nullifier); + polys.main_sel_op_emit_unencrypted_log.set_if_valid_index(i, rows[i].main_sel_op_emit_unencrypted_log); + polys.main_sel_op_eq.set_if_valid_index(i, rows[i].main_sel_op_eq); + polys.main_sel_op_external_call.set_if_valid_index(i, rows[i].main_sel_op_external_call); + polys.main_sel_op_external_return.set_if_valid_index(i, rows[i].main_sel_op_external_return); + polys.main_sel_op_external_revert.set_if_valid_index(i, rows[i].main_sel_op_external_revert); + polys.main_sel_op_fdiv.set_if_valid_index(i, rows[i].main_sel_op_fdiv); + polys.main_sel_op_fee_per_da_gas.set_if_valid_index(i, rows[i].main_sel_op_fee_per_da_gas); + polys.main_sel_op_fee_per_l2_gas.set_if_valid_index(i, rows[i].main_sel_op_fee_per_l2_gas); + polys.main_sel_op_function_selector.set_if_valid_index(i, rows[i].main_sel_op_function_selector); + polys.main_sel_op_get_contract_instance.set_if_valid_index(i, rows[i].main_sel_op_get_contract_instance); + polys.main_sel_op_internal_call.set_if_valid_index(i, rows[i].main_sel_op_internal_call); + polys.main_sel_op_internal_return.set_if_valid_index(i, rows[i].main_sel_op_internal_return); + polys.main_sel_op_is_static_call.set_if_valid_index(i, rows[i].main_sel_op_is_static_call); + polys.main_sel_op_jump.set_if_valid_index(i, rows[i].main_sel_op_jump); + polys.main_sel_op_jumpi.set_if_valid_index(i, rows[i].main_sel_op_jumpi); + polys.main_sel_op_keccak.set_if_valid_index(i, rows[i].main_sel_op_keccak); + polys.main_sel_op_l1_to_l2_msg_exists.set_if_valid_index(i, rows[i].main_sel_op_l1_to_l2_msg_exists); + polys.main_sel_op_l2gasleft.set_if_valid_index(i, rows[i].main_sel_op_l2gasleft); + polys.main_sel_op_lt.set_if_valid_index(i, rows[i].main_sel_op_lt); + polys.main_sel_op_lte.set_if_valid_index(i, rows[i].main_sel_op_lte); + polys.main_sel_op_mov.set_if_valid_index(i, rows[i].main_sel_op_mov); + polys.main_sel_op_msm.set_if_valid_index(i, rows[i].main_sel_op_msm); + polys.main_sel_op_mul.set_if_valid_index(i, rows[i].main_sel_op_mul); + polys.main_sel_op_not.set_if_valid_index(i, rows[i].main_sel_op_not); + polys.main_sel_op_note_hash_exists.set_if_valid_index(i, rows[i].main_sel_op_note_hash_exists); + polys.main_sel_op_nullifier_exists.set_if_valid_index(i, rows[i].main_sel_op_nullifier_exists); + polys.main_sel_op_or.set_if_valid_index(i, rows[i].main_sel_op_or); + polys.main_sel_op_poseidon2.set_if_valid_index(i, rows[i].main_sel_op_poseidon2); + polys.main_sel_op_radix_le.set_if_valid_index(i, rows[i].main_sel_op_radix_le); + polys.main_sel_op_sender.set_if_valid_index(i, rows[i].main_sel_op_sender); + polys.main_sel_op_set.set_if_valid_index(i, rows[i].main_sel_op_set); + polys.main_sel_op_sha256.set_if_valid_index(i, rows[i].main_sel_op_sha256); + polys.main_sel_op_shl.set_if_valid_index(i, rows[i].main_sel_op_shl); + polys.main_sel_op_shr.set_if_valid_index(i, rows[i].main_sel_op_shr); + polys.main_sel_op_sload.set_if_valid_index(i, rows[i].main_sel_op_sload); + polys.main_sel_op_sstore.set_if_valid_index(i, rows[i].main_sel_op_sstore); + polys.main_sel_op_static_call.set_if_valid_index(i, rows[i].main_sel_op_static_call); + polys.main_sel_op_storage_address.set_if_valid_index(i, rows[i].main_sel_op_storage_address); + polys.main_sel_op_sub.set_if_valid_index(i, rows[i].main_sel_op_sub); + polys.main_sel_op_timestamp.set_if_valid_index(i, rows[i].main_sel_op_timestamp); + polys.main_sel_op_transaction_fee.set_if_valid_index(i, rows[i].main_sel_op_transaction_fee); + polys.main_sel_op_version.set_if_valid_index(i, rows[i].main_sel_op_version); + polys.main_sel_op_xor.set_if_valid_index(i, rows[i].main_sel_op_xor); + polys.main_sel_q_kernel_lookup.set_if_valid_index(i, rows[i].main_sel_q_kernel_lookup); + polys.main_sel_q_kernel_output_lookup.set_if_valid_index(i, rows[i].main_sel_q_kernel_output_lookup); + polys.main_sel_resolve_ind_addr_a.set_if_valid_index(i, rows[i].main_sel_resolve_ind_addr_a); + polys.main_sel_resolve_ind_addr_b.set_if_valid_index(i, rows[i].main_sel_resolve_ind_addr_b); + polys.main_sel_resolve_ind_addr_c.set_if_valid_index(i, rows[i].main_sel_resolve_ind_addr_c); + polys.main_sel_resolve_ind_addr_d.set_if_valid_index(i, rows[i].main_sel_resolve_ind_addr_d); + polys.main_sel_returndata.set_if_valid_index(i, rows[i].main_sel_returndata); + polys.main_sel_rng_16.set_if_valid_index(i, rows[i].main_sel_rng_16); + polys.main_sel_rng_8.set_if_valid_index(i, rows[i].main_sel_rng_8); + polys.main_sel_slice_gadget.set_if_valid_index(i, rows[i].main_sel_slice_gadget); + polys.main_side_effect_counter.set_if_valid_index(i, rows[i].main_side_effect_counter); + polys.main_sload_write_offset.set_if_valid_index(i, rows[i].main_sload_write_offset); + polys.main_space_id.set_if_valid_index(i, rows[i].main_space_id); + polys.main_sstore_write_offset.set_if_valid_index(i, rows[i].main_sstore_write_offset); + polys.main_tag_err.set_if_valid_index(i, rows[i].main_tag_err); + polys.main_w_in_tag.set_if_valid_index(i, rows[i].main_w_in_tag); + polys.mem_addr.set_if_valid_index(i, rows[i].mem_addr); + polys.mem_clk.set_if_valid_index(i, rows[i].mem_clk); + polys.mem_diff.set_if_valid_index(i, rows[i].mem_diff); + polys.mem_glob_addr.set_if_valid_index(i, rows[i].mem_glob_addr); + polys.mem_last.set_if_valid_index(i, rows[i].mem_last); + polys.mem_lastAccess.set_if_valid_index(i, rows[i].mem_lastAccess); + polys.mem_one_min_inv.set_if_valid_index(i, rows[i].mem_one_min_inv); + polys.mem_r_in_tag.set_if_valid_index(i, rows[i].mem_r_in_tag); + polys.mem_rw.set_if_valid_index(i, rows[i].mem_rw); + polys.mem_sel_mem.set_if_valid_index(i, rows[i].mem_sel_mem); + polys.mem_sel_mov_ia_to_ic.set_if_valid_index(i, rows[i].mem_sel_mov_ia_to_ic); + polys.mem_sel_mov_ib_to_ic.set_if_valid_index(i, rows[i].mem_sel_mov_ib_to_ic); + polys.mem_sel_op_a.set_if_valid_index(i, rows[i].mem_sel_op_a); + polys.mem_sel_op_b.set_if_valid_index(i, rows[i].mem_sel_op_b); + polys.mem_sel_op_c.set_if_valid_index(i, rows[i].mem_sel_op_c); + polys.mem_sel_op_d.set_if_valid_index(i, rows[i].mem_sel_op_d); + polys.mem_sel_op_poseidon_read_a.set_if_valid_index(i, rows[i].mem_sel_op_poseidon_read_a); + polys.mem_sel_op_poseidon_read_b.set_if_valid_index(i, rows[i].mem_sel_op_poseidon_read_b); + polys.mem_sel_op_poseidon_read_c.set_if_valid_index(i, rows[i].mem_sel_op_poseidon_read_c); + polys.mem_sel_op_poseidon_read_d.set_if_valid_index(i, rows[i].mem_sel_op_poseidon_read_d); + polys.mem_sel_op_poseidon_write_a.set_if_valid_index(i, rows[i].mem_sel_op_poseidon_write_a); + polys.mem_sel_op_poseidon_write_b.set_if_valid_index(i, rows[i].mem_sel_op_poseidon_write_b); + polys.mem_sel_op_poseidon_write_c.set_if_valid_index(i, rows[i].mem_sel_op_poseidon_write_c); + polys.mem_sel_op_poseidon_write_d.set_if_valid_index(i, rows[i].mem_sel_op_poseidon_write_d); + polys.mem_sel_op_slice.set_if_valid_index(i, rows[i].mem_sel_op_slice); + polys.mem_sel_resolve_ind_addr_a.set_if_valid_index(i, rows[i].mem_sel_resolve_ind_addr_a); + polys.mem_sel_resolve_ind_addr_b.set_if_valid_index(i, rows[i].mem_sel_resolve_ind_addr_b); + polys.mem_sel_resolve_ind_addr_c.set_if_valid_index(i, rows[i].mem_sel_resolve_ind_addr_c); + polys.mem_sel_resolve_ind_addr_d.set_if_valid_index(i, rows[i].mem_sel_resolve_ind_addr_d); + polys.mem_sel_rng_chk.set_if_valid_index(i, rows[i].mem_sel_rng_chk); + polys.mem_skip_check_tag.set_if_valid_index(i, rows[i].mem_skip_check_tag); + polys.mem_space_id.set_if_valid_index(i, rows[i].mem_space_id); + polys.mem_tag.set_if_valid_index(i, rows[i].mem_tag); + polys.mem_tag_err.set_if_valid_index(i, rows[i].mem_tag_err); + polys.mem_tsp.set_if_valid_index(i, rows[i].mem_tsp); + polys.mem_val.set_if_valid_index(i, rows[i].mem_val); + polys.mem_w_in_tag.set_if_valid_index(i, rows[i].mem_w_in_tag); + polys.poseidon2_B_10_0.set_if_valid_index(i, rows[i].poseidon2_B_10_0); + polys.poseidon2_B_10_1.set_if_valid_index(i, rows[i].poseidon2_B_10_1); + polys.poseidon2_B_10_2.set_if_valid_index(i, rows[i].poseidon2_B_10_2); + polys.poseidon2_B_10_3.set_if_valid_index(i, rows[i].poseidon2_B_10_3); + polys.poseidon2_B_11_0.set_if_valid_index(i, rows[i].poseidon2_B_11_0); + polys.poseidon2_B_11_1.set_if_valid_index(i, rows[i].poseidon2_B_11_1); + polys.poseidon2_B_11_2.set_if_valid_index(i, rows[i].poseidon2_B_11_2); + polys.poseidon2_B_11_3.set_if_valid_index(i, rows[i].poseidon2_B_11_3); + polys.poseidon2_B_12_0.set_if_valid_index(i, rows[i].poseidon2_B_12_0); + polys.poseidon2_B_12_1.set_if_valid_index(i, rows[i].poseidon2_B_12_1); + polys.poseidon2_B_12_2.set_if_valid_index(i, rows[i].poseidon2_B_12_2); + polys.poseidon2_B_12_3.set_if_valid_index(i, rows[i].poseidon2_B_12_3); + polys.poseidon2_B_13_0.set_if_valid_index(i, rows[i].poseidon2_B_13_0); + polys.poseidon2_B_13_1.set_if_valid_index(i, rows[i].poseidon2_B_13_1); + polys.poseidon2_B_13_2.set_if_valid_index(i, rows[i].poseidon2_B_13_2); + polys.poseidon2_B_13_3.set_if_valid_index(i, rows[i].poseidon2_B_13_3); + polys.poseidon2_B_14_0.set_if_valid_index(i, rows[i].poseidon2_B_14_0); + polys.poseidon2_B_14_1.set_if_valid_index(i, rows[i].poseidon2_B_14_1); + polys.poseidon2_B_14_2.set_if_valid_index(i, rows[i].poseidon2_B_14_2); + polys.poseidon2_B_14_3.set_if_valid_index(i, rows[i].poseidon2_B_14_3); + polys.poseidon2_B_15_0.set_if_valid_index(i, rows[i].poseidon2_B_15_0); + polys.poseidon2_B_15_1.set_if_valid_index(i, rows[i].poseidon2_B_15_1); + polys.poseidon2_B_15_2.set_if_valid_index(i, rows[i].poseidon2_B_15_2); + polys.poseidon2_B_15_3.set_if_valid_index(i, rows[i].poseidon2_B_15_3); + polys.poseidon2_B_16_0.set_if_valid_index(i, rows[i].poseidon2_B_16_0); + polys.poseidon2_B_16_1.set_if_valid_index(i, rows[i].poseidon2_B_16_1); + polys.poseidon2_B_16_2.set_if_valid_index(i, rows[i].poseidon2_B_16_2); + polys.poseidon2_B_16_3.set_if_valid_index(i, rows[i].poseidon2_B_16_3); + polys.poseidon2_B_17_0.set_if_valid_index(i, rows[i].poseidon2_B_17_0); + polys.poseidon2_B_17_1.set_if_valid_index(i, rows[i].poseidon2_B_17_1); + polys.poseidon2_B_17_2.set_if_valid_index(i, rows[i].poseidon2_B_17_2); + polys.poseidon2_B_17_3.set_if_valid_index(i, rows[i].poseidon2_B_17_3); + polys.poseidon2_B_18_0.set_if_valid_index(i, rows[i].poseidon2_B_18_0); + polys.poseidon2_B_18_1.set_if_valid_index(i, rows[i].poseidon2_B_18_1); + polys.poseidon2_B_18_2.set_if_valid_index(i, rows[i].poseidon2_B_18_2); + polys.poseidon2_B_18_3.set_if_valid_index(i, rows[i].poseidon2_B_18_3); + polys.poseidon2_B_19_0.set_if_valid_index(i, rows[i].poseidon2_B_19_0); + polys.poseidon2_B_19_1.set_if_valid_index(i, rows[i].poseidon2_B_19_1); + polys.poseidon2_B_19_2.set_if_valid_index(i, rows[i].poseidon2_B_19_2); + polys.poseidon2_B_19_3.set_if_valid_index(i, rows[i].poseidon2_B_19_3); + polys.poseidon2_B_20_0.set_if_valid_index(i, rows[i].poseidon2_B_20_0); + polys.poseidon2_B_20_1.set_if_valid_index(i, rows[i].poseidon2_B_20_1); + polys.poseidon2_B_20_2.set_if_valid_index(i, rows[i].poseidon2_B_20_2); + polys.poseidon2_B_20_3.set_if_valid_index(i, rows[i].poseidon2_B_20_3); + polys.poseidon2_B_21_0.set_if_valid_index(i, rows[i].poseidon2_B_21_0); + polys.poseidon2_B_21_1.set_if_valid_index(i, rows[i].poseidon2_B_21_1); + polys.poseidon2_B_21_2.set_if_valid_index(i, rows[i].poseidon2_B_21_2); + polys.poseidon2_B_21_3.set_if_valid_index(i, rows[i].poseidon2_B_21_3); + polys.poseidon2_B_22_0.set_if_valid_index(i, rows[i].poseidon2_B_22_0); + polys.poseidon2_B_22_1.set_if_valid_index(i, rows[i].poseidon2_B_22_1); + polys.poseidon2_B_22_2.set_if_valid_index(i, rows[i].poseidon2_B_22_2); + polys.poseidon2_B_22_3.set_if_valid_index(i, rows[i].poseidon2_B_22_3); + polys.poseidon2_B_23_0.set_if_valid_index(i, rows[i].poseidon2_B_23_0); + polys.poseidon2_B_23_1.set_if_valid_index(i, rows[i].poseidon2_B_23_1); + polys.poseidon2_B_23_2.set_if_valid_index(i, rows[i].poseidon2_B_23_2); + polys.poseidon2_B_23_3.set_if_valid_index(i, rows[i].poseidon2_B_23_3); + polys.poseidon2_B_24_0.set_if_valid_index(i, rows[i].poseidon2_B_24_0); + polys.poseidon2_B_24_1.set_if_valid_index(i, rows[i].poseidon2_B_24_1); + polys.poseidon2_B_24_2.set_if_valid_index(i, rows[i].poseidon2_B_24_2); + polys.poseidon2_B_24_3.set_if_valid_index(i, rows[i].poseidon2_B_24_3); + polys.poseidon2_B_25_0.set_if_valid_index(i, rows[i].poseidon2_B_25_0); + polys.poseidon2_B_25_1.set_if_valid_index(i, rows[i].poseidon2_B_25_1); + polys.poseidon2_B_25_2.set_if_valid_index(i, rows[i].poseidon2_B_25_2); + polys.poseidon2_B_25_3.set_if_valid_index(i, rows[i].poseidon2_B_25_3); + polys.poseidon2_B_26_0.set_if_valid_index(i, rows[i].poseidon2_B_26_0); + polys.poseidon2_B_26_1.set_if_valid_index(i, rows[i].poseidon2_B_26_1); + polys.poseidon2_B_26_2.set_if_valid_index(i, rows[i].poseidon2_B_26_2); + polys.poseidon2_B_26_3.set_if_valid_index(i, rows[i].poseidon2_B_26_3); + polys.poseidon2_B_27_0.set_if_valid_index(i, rows[i].poseidon2_B_27_0); + polys.poseidon2_B_27_1.set_if_valid_index(i, rows[i].poseidon2_B_27_1); + polys.poseidon2_B_27_2.set_if_valid_index(i, rows[i].poseidon2_B_27_2); + polys.poseidon2_B_27_3.set_if_valid_index(i, rows[i].poseidon2_B_27_3); + polys.poseidon2_B_28_0.set_if_valid_index(i, rows[i].poseidon2_B_28_0); + polys.poseidon2_B_28_1.set_if_valid_index(i, rows[i].poseidon2_B_28_1); + polys.poseidon2_B_28_2.set_if_valid_index(i, rows[i].poseidon2_B_28_2); + polys.poseidon2_B_28_3.set_if_valid_index(i, rows[i].poseidon2_B_28_3); + polys.poseidon2_B_29_0.set_if_valid_index(i, rows[i].poseidon2_B_29_0); + polys.poseidon2_B_29_1.set_if_valid_index(i, rows[i].poseidon2_B_29_1); + polys.poseidon2_B_29_2.set_if_valid_index(i, rows[i].poseidon2_B_29_2); + polys.poseidon2_B_29_3.set_if_valid_index(i, rows[i].poseidon2_B_29_3); + polys.poseidon2_B_30_0.set_if_valid_index(i, rows[i].poseidon2_B_30_0); + polys.poseidon2_B_30_1.set_if_valid_index(i, rows[i].poseidon2_B_30_1); + polys.poseidon2_B_30_2.set_if_valid_index(i, rows[i].poseidon2_B_30_2); + polys.poseidon2_B_30_3.set_if_valid_index(i, rows[i].poseidon2_B_30_3); + polys.poseidon2_B_31_0.set_if_valid_index(i, rows[i].poseidon2_B_31_0); + polys.poseidon2_B_31_1.set_if_valid_index(i, rows[i].poseidon2_B_31_1); + polys.poseidon2_B_31_2.set_if_valid_index(i, rows[i].poseidon2_B_31_2); + polys.poseidon2_B_31_3.set_if_valid_index(i, rows[i].poseidon2_B_31_3); + polys.poseidon2_B_32_0.set_if_valid_index(i, rows[i].poseidon2_B_32_0); + polys.poseidon2_B_32_1.set_if_valid_index(i, rows[i].poseidon2_B_32_1); + polys.poseidon2_B_32_2.set_if_valid_index(i, rows[i].poseidon2_B_32_2); + polys.poseidon2_B_32_3.set_if_valid_index(i, rows[i].poseidon2_B_32_3); + polys.poseidon2_B_33_0.set_if_valid_index(i, rows[i].poseidon2_B_33_0); + polys.poseidon2_B_33_1.set_if_valid_index(i, rows[i].poseidon2_B_33_1); + polys.poseidon2_B_33_2.set_if_valid_index(i, rows[i].poseidon2_B_33_2); + polys.poseidon2_B_33_3.set_if_valid_index(i, rows[i].poseidon2_B_33_3); + polys.poseidon2_B_34_0.set_if_valid_index(i, rows[i].poseidon2_B_34_0); + polys.poseidon2_B_34_1.set_if_valid_index(i, rows[i].poseidon2_B_34_1); + polys.poseidon2_B_34_2.set_if_valid_index(i, rows[i].poseidon2_B_34_2); + polys.poseidon2_B_34_3.set_if_valid_index(i, rows[i].poseidon2_B_34_3); + polys.poseidon2_B_35_0.set_if_valid_index(i, rows[i].poseidon2_B_35_0); + polys.poseidon2_B_35_1.set_if_valid_index(i, rows[i].poseidon2_B_35_1); + polys.poseidon2_B_35_2.set_if_valid_index(i, rows[i].poseidon2_B_35_2); + polys.poseidon2_B_35_3.set_if_valid_index(i, rows[i].poseidon2_B_35_3); + polys.poseidon2_B_36_0.set_if_valid_index(i, rows[i].poseidon2_B_36_0); + polys.poseidon2_B_36_1.set_if_valid_index(i, rows[i].poseidon2_B_36_1); + polys.poseidon2_B_36_2.set_if_valid_index(i, rows[i].poseidon2_B_36_2); + polys.poseidon2_B_36_3.set_if_valid_index(i, rows[i].poseidon2_B_36_3); + polys.poseidon2_B_37_0.set_if_valid_index(i, rows[i].poseidon2_B_37_0); + polys.poseidon2_B_37_1.set_if_valid_index(i, rows[i].poseidon2_B_37_1); + polys.poseidon2_B_37_2.set_if_valid_index(i, rows[i].poseidon2_B_37_2); + polys.poseidon2_B_37_3.set_if_valid_index(i, rows[i].poseidon2_B_37_3); + polys.poseidon2_B_38_0.set_if_valid_index(i, rows[i].poseidon2_B_38_0); + polys.poseidon2_B_38_1.set_if_valid_index(i, rows[i].poseidon2_B_38_1); + polys.poseidon2_B_38_2.set_if_valid_index(i, rows[i].poseidon2_B_38_2); + polys.poseidon2_B_38_3.set_if_valid_index(i, rows[i].poseidon2_B_38_3); + polys.poseidon2_B_39_0.set_if_valid_index(i, rows[i].poseidon2_B_39_0); + polys.poseidon2_B_39_1.set_if_valid_index(i, rows[i].poseidon2_B_39_1); + polys.poseidon2_B_39_2.set_if_valid_index(i, rows[i].poseidon2_B_39_2); + polys.poseidon2_B_39_3.set_if_valid_index(i, rows[i].poseidon2_B_39_3); + polys.poseidon2_B_40_0.set_if_valid_index(i, rows[i].poseidon2_B_40_0); + polys.poseidon2_B_40_1.set_if_valid_index(i, rows[i].poseidon2_B_40_1); + polys.poseidon2_B_40_2.set_if_valid_index(i, rows[i].poseidon2_B_40_2); + polys.poseidon2_B_40_3.set_if_valid_index(i, rows[i].poseidon2_B_40_3); + polys.poseidon2_B_41_0.set_if_valid_index(i, rows[i].poseidon2_B_41_0); + polys.poseidon2_B_41_1.set_if_valid_index(i, rows[i].poseidon2_B_41_1); + polys.poseidon2_B_41_2.set_if_valid_index(i, rows[i].poseidon2_B_41_2); + polys.poseidon2_B_41_3.set_if_valid_index(i, rows[i].poseidon2_B_41_3); + polys.poseidon2_B_42_0.set_if_valid_index(i, rows[i].poseidon2_B_42_0); + polys.poseidon2_B_42_1.set_if_valid_index(i, rows[i].poseidon2_B_42_1); + polys.poseidon2_B_42_2.set_if_valid_index(i, rows[i].poseidon2_B_42_2); + polys.poseidon2_B_42_3.set_if_valid_index(i, rows[i].poseidon2_B_42_3); + polys.poseidon2_B_43_0.set_if_valid_index(i, rows[i].poseidon2_B_43_0); + polys.poseidon2_B_43_1.set_if_valid_index(i, rows[i].poseidon2_B_43_1); + polys.poseidon2_B_43_2.set_if_valid_index(i, rows[i].poseidon2_B_43_2); + polys.poseidon2_B_43_3.set_if_valid_index(i, rows[i].poseidon2_B_43_3); + polys.poseidon2_B_44_0.set_if_valid_index(i, rows[i].poseidon2_B_44_0); + polys.poseidon2_B_44_1.set_if_valid_index(i, rows[i].poseidon2_B_44_1); + polys.poseidon2_B_44_2.set_if_valid_index(i, rows[i].poseidon2_B_44_2); + polys.poseidon2_B_44_3.set_if_valid_index(i, rows[i].poseidon2_B_44_3); + polys.poseidon2_B_45_0.set_if_valid_index(i, rows[i].poseidon2_B_45_0); + polys.poseidon2_B_45_1.set_if_valid_index(i, rows[i].poseidon2_B_45_1); + polys.poseidon2_B_45_2.set_if_valid_index(i, rows[i].poseidon2_B_45_2); + polys.poseidon2_B_45_3.set_if_valid_index(i, rows[i].poseidon2_B_45_3); + polys.poseidon2_B_46_0.set_if_valid_index(i, rows[i].poseidon2_B_46_0); + polys.poseidon2_B_46_1.set_if_valid_index(i, rows[i].poseidon2_B_46_1); + polys.poseidon2_B_46_2.set_if_valid_index(i, rows[i].poseidon2_B_46_2); + polys.poseidon2_B_46_3.set_if_valid_index(i, rows[i].poseidon2_B_46_3); + polys.poseidon2_B_47_0.set_if_valid_index(i, rows[i].poseidon2_B_47_0); + polys.poseidon2_B_47_1.set_if_valid_index(i, rows[i].poseidon2_B_47_1); + polys.poseidon2_B_47_2.set_if_valid_index(i, rows[i].poseidon2_B_47_2); + polys.poseidon2_B_47_3.set_if_valid_index(i, rows[i].poseidon2_B_47_3); + polys.poseidon2_B_48_0.set_if_valid_index(i, rows[i].poseidon2_B_48_0); + polys.poseidon2_B_48_1.set_if_valid_index(i, rows[i].poseidon2_B_48_1); + polys.poseidon2_B_48_2.set_if_valid_index(i, rows[i].poseidon2_B_48_2); + polys.poseidon2_B_48_3.set_if_valid_index(i, rows[i].poseidon2_B_48_3); + polys.poseidon2_B_49_0.set_if_valid_index(i, rows[i].poseidon2_B_49_0); + polys.poseidon2_B_49_1.set_if_valid_index(i, rows[i].poseidon2_B_49_1); + polys.poseidon2_B_49_2.set_if_valid_index(i, rows[i].poseidon2_B_49_2); + polys.poseidon2_B_49_3.set_if_valid_index(i, rows[i].poseidon2_B_49_3); + polys.poseidon2_B_4_0.set_if_valid_index(i, rows[i].poseidon2_B_4_0); + polys.poseidon2_B_4_1.set_if_valid_index(i, rows[i].poseidon2_B_4_1); + polys.poseidon2_B_4_2.set_if_valid_index(i, rows[i].poseidon2_B_4_2); + polys.poseidon2_B_4_3.set_if_valid_index(i, rows[i].poseidon2_B_4_3); + polys.poseidon2_B_50_0.set_if_valid_index(i, rows[i].poseidon2_B_50_0); + polys.poseidon2_B_50_1.set_if_valid_index(i, rows[i].poseidon2_B_50_1); + polys.poseidon2_B_50_2.set_if_valid_index(i, rows[i].poseidon2_B_50_2); + polys.poseidon2_B_50_3.set_if_valid_index(i, rows[i].poseidon2_B_50_3); + polys.poseidon2_B_51_0.set_if_valid_index(i, rows[i].poseidon2_B_51_0); + polys.poseidon2_B_51_1.set_if_valid_index(i, rows[i].poseidon2_B_51_1); + polys.poseidon2_B_51_2.set_if_valid_index(i, rows[i].poseidon2_B_51_2); + polys.poseidon2_B_51_3.set_if_valid_index(i, rows[i].poseidon2_B_51_3); + polys.poseidon2_B_52_0.set_if_valid_index(i, rows[i].poseidon2_B_52_0); + polys.poseidon2_B_52_1.set_if_valid_index(i, rows[i].poseidon2_B_52_1); + polys.poseidon2_B_52_2.set_if_valid_index(i, rows[i].poseidon2_B_52_2); + polys.poseidon2_B_52_3.set_if_valid_index(i, rows[i].poseidon2_B_52_3); + polys.poseidon2_B_53_0.set_if_valid_index(i, rows[i].poseidon2_B_53_0); + polys.poseidon2_B_53_1.set_if_valid_index(i, rows[i].poseidon2_B_53_1); + polys.poseidon2_B_53_2.set_if_valid_index(i, rows[i].poseidon2_B_53_2); + polys.poseidon2_B_53_3.set_if_valid_index(i, rows[i].poseidon2_B_53_3); + polys.poseidon2_B_54_0.set_if_valid_index(i, rows[i].poseidon2_B_54_0); + polys.poseidon2_B_54_1.set_if_valid_index(i, rows[i].poseidon2_B_54_1); + polys.poseidon2_B_54_2.set_if_valid_index(i, rows[i].poseidon2_B_54_2); + polys.poseidon2_B_54_3.set_if_valid_index(i, rows[i].poseidon2_B_54_3); + polys.poseidon2_B_55_0.set_if_valid_index(i, rows[i].poseidon2_B_55_0); + polys.poseidon2_B_55_1.set_if_valid_index(i, rows[i].poseidon2_B_55_1); + polys.poseidon2_B_55_2.set_if_valid_index(i, rows[i].poseidon2_B_55_2); + polys.poseidon2_B_55_3.set_if_valid_index(i, rows[i].poseidon2_B_55_3); + polys.poseidon2_B_56_0.set_if_valid_index(i, rows[i].poseidon2_B_56_0); + polys.poseidon2_B_56_1.set_if_valid_index(i, rows[i].poseidon2_B_56_1); + polys.poseidon2_B_56_2.set_if_valid_index(i, rows[i].poseidon2_B_56_2); + polys.poseidon2_B_56_3.set_if_valid_index(i, rows[i].poseidon2_B_56_3); + polys.poseidon2_B_57_0.set_if_valid_index(i, rows[i].poseidon2_B_57_0); + polys.poseidon2_B_57_1.set_if_valid_index(i, rows[i].poseidon2_B_57_1); + polys.poseidon2_B_57_2.set_if_valid_index(i, rows[i].poseidon2_B_57_2); + polys.poseidon2_B_57_3.set_if_valid_index(i, rows[i].poseidon2_B_57_3); + polys.poseidon2_B_58_0.set_if_valid_index(i, rows[i].poseidon2_B_58_0); + polys.poseidon2_B_58_1.set_if_valid_index(i, rows[i].poseidon2_B_58_1); + polys.poseidon2_B_58_2.set_if_valid_index(i, rows[i].poseidon2_B_58_2); + polys.poseidon2_B_58_3.set_if_valid_index(i, rows[i].poseidon2_B_58_3); + polys.poseidon2_B_59_0.set_if_valid_index(i, rows[i].poseidon2_B_59_0); + polys.poseidon2_B_59_1.set_if_valid_index(i, rows[i].poseidon2_B_59_1); + polys.poseidon2_B_59_2.set_if_valid_index(i, rows[i].poseidon2_B_59_2); + polys.poseidon2_B_59_3.set_if_valid_index(i, rows[i].poseidon2_B_59_3); + polys.poseidon2_B_5_0.set_if_valid_index(i, rows[i].poseidon2_B_5_0); + polys.poseidon2_B_5_1.set_if_valid_index(i, rows[i].poseidon2_B_5_1); + polys.poseidon2_B_5_2.set_if_valid_index(i, rows[i].poseidon2_B_5_2); + polys.poseidon2_B_5_3.set_if_valid_index(i, rows[i].poseidon2_B_5_3); + polys.poseidon2_B_6_0.set_if_valid_index(i, rows[i].poseidon2_B_6_0); + polys.poseidon2_B_6_1.set_if_valid_index(i, rows[i].poseidon2_B_6_1); + polys.poseidon2_B_6_2.set_if_valid_index(i, rows[i].poseidon2_B_6_2); + polys.poseidon2_B_6_3.set_if_valid_index(i, rows[i].poseidon2_B_6_3); + polys.poseidon2_B_7_0.set_if_valid_index(i, rows[i].poseidon2_B_7_0); + polys.poseidon2_B_7_1.set_if_valid_index(i, rows[i].poseidon2_B_7_1); + polys.poseidon2_B_7_2.set_if_valid_index(i, rows[i].poseidon2_B_7_2); + polys.poseidon2_B_7_3.set_if_valid_index(i, rows[i].poseidon2_B_7_3); + polys.poseidon2_B_8_0.set_if_valid_index(i, rows[i].poseidon2_B_8_0); + polys.poseidon2_B_8_1.set_if_valid_index(i, rows[i].poseidon2_B_8_1); + polys.poseidon2_B_8_2.set_if_valid_index(i, rows[i].poseidon2_B_8_2); + polys.poseidon2_B_8_3.set_if_valid_index(i, rows[i].poseidon2_B_8_3); + polys.poseidon2_B_9_0.set_if_valid_index(i, rows[i].poseidon2_B_9_0); + polys.poseidon2_B_9_1.set_if_valid_index(i, rows[i].poseidon2_B_9_1); + polys.poseidon2_B_9_2.set_if_valid_index(i, rows[i].poseidon2_B_9_2); + polys.poseidon2_B_9_3.set_if_valid_index(i, rows[i].poseidon2_B_9_3); + polys.poseidon2_EXT_LAYER_4.set_if_valid_index(i, rows[i].poseidon2_EXT_LAYER_4); + polys.poseidon2_EXT_LAYER_5.set_if_valid_index(i, rows[i].poseidon2_EXT_LAYER_5); + polys.poseidon2_EXT_LAYER_6.set_if_valid_index(i, rows[i].poseidon2_EXT_LAYER_6); + polys.poseidon2_EXT_LAYER_7.set_if_valid_index(i, rows[i].poseidon2_EXT_LAYER_7); + polys.poseidon2_T_0_4.set_if_valid_index(i, rows[i].poseidon2_T_0_4); + polys.poseidon2_T_0_5.set_if_valid_index(i, rows[i].poseidon2_T_0_5); + polys.poseidon2_T_0_6.set_if_valid_index(i, rows[i].poseidon2_T_0_6); + polys.poseidon2_T_0_7.set_if_valid_index(i, rows[i].poseidon2_T_0_7); + polys.poseidon2_T_1_4.set_if_valid_index(i, rows[i].poseidon2_T_1_4); + polys.poseidon2_T_1_5.set_if_valid_index(i, rows[i].poseidon2_T_1_5); + polys.poseidon2_T_1_6.set_if_valid_index(i, rows[i].poseidon2_T_1_6); + polys.poseidon2_T_1_7.set_if_valid_index(i, rows[i].poseidon2_T_1_7); + polys.poseidon2_T_2_4.set_if_valid_index(i, rows[i].poseidon2_T_2_4); + polys.poseidon2_T_2_5.set_if_valid_index(i, rows[i].poseidon2_T_2_5); + polys.poseidon2_T_2_6.set_if_valid_index(i, rows[i].poseidon2_T_2_6); + polys.poseidon2_T_2_7.set_if_valid_index(i, rows[i].poseidon2_T_2_7); + polys.poseidon2_T_3_4.set_if_valid_index(i, rows[i].poseidon2_T_3_4); + polys.poseidon2_T_3_5.set_if_valid_index(i, rows[i].poseidon2_T_3_5); + polys.poseidon2_T_3_6.set_if_valid_index(i, rows[i].poseidon2_T_3_6); + polys.poseidon2_T_3_7.set_if_valid_index(i, rows[i].poseidon2_T_3_7); + polys.poseidon2_T_60_4.set_if_valid_index(i, rows[i].poseidon2_T_60_4); + polys.poseidon2_T_60_5.set_if_valid_index(i, rows[i].poseidon2_T_60_5); + polys.poseidon2_T_60_6.set_if_valid_index(i, rows[i].poseidon2_T_60_6); + polys.poseidon2_T_60_7.set_if_valid_index(i, rows[i].poseidon2_T_60_7); + polys.poseidon2_T_61_4.set_if_valid_index(i, rows[i].poseidon2_T_61_4); + polys.poseidon2_T_61_5.set_if_valid_index(i, rows[i].poseidon2_T_61_5); + polys.poseidon2_T_61_6.set_if_valid_index(i, rows[i].poseidon2_T_61_6); + polys.poseidon2_T_61_7.set_if_valid_index(i, rows[i].poseidon2_T_61_7); + polys.poseidon2_T_62_4.set_if_valid_index(i, rows[i].poseidon2_T_62_4); + polys.poseidon2_T_62_5.set_if_valid_index(i, rows[i].poseidon2_T_62_5); + polys.poseidon2_T_62_6.set_if_valid_index(i, rows[i].poseidon2_T_62_6); + polys.poseidon2_T_62_7.set_if_valid_index(i, rows[i].poseidon2_T_62_7); + polys.poseidon2_T_63_4.set_if_valid_index(i, rows[i].poseidon2_T_63_4); + polys.poseidon2_T_63_5.set_if_valid_index(i, rows[i].poseidon2_T_63_5); + polys.poseidon2_T_63_6.set_if_valid_index(i, rows[i].poseidon2_T_63_6); + polys.poseidon2_T_63_7.set_if_valid_index(i, rows[i].poseidon2_T_63_7); + polys.poseidon2_a_0.set_if_valid_index(i, rows[i].poseidon2_a_0); + polys.poseidon2_a_1.set_if_valid_index(i, rows[i].poseidon2_a_1); + polys.poseidon2_a_2.set_if_valid_index(i, rows[i].poseidon2_a_2); + polys.poseidon2_a_3.set_if_valid_index(i, rows[i].poseidon2_a_3); + polys.poseidon2_b_0.set_if_valid_index(i, rows[i].poseidon2_b_0); + polys.poseidon2_b_1.set_if_valid_index(i, rows[i].poseidon2_b_1); + polys.poseidon2_b_2.set_if_valid_index(i, rows[i].poseidon2_b_2); + polys.poseidon2_b_3.set_if_valid_index(i, rows[i].poseidon2_b_3); + polys.poseidon2_clk.set_if_valid_index(i, rows[i].poseidon2_clk); + polys.poseidon2_input_addr.set_if_valid_index(i, rows[i].poseidon2_input_addr); + polys.poseidon2_mem_addr_read_a.set_if_valid_index(i, rows[i].poseidon2_mem_addr_read_a); + polys.poseidon2_mem_addr_read_b.set_if_valid_index(i, rows[i].poseidon2_mem_addr_read_b); + polys.poseidon2_mem_addr_read_c.set_if_valid_index(i, rows[i].poseidon2_mem_addr_read_c); + polys.poseidon2_mem_addr_read_d.set_if_valid_index(i, rows[i].poseidon2_mem_addr_read_d); + polys.poseidon2_mem_addr_write_a.set_if_valid_index(i, rows[i].poseidon2_mem_addr_write_a); + polys.poseidon2_mem_addr_write_b.set_if_valid_index(i, rows[i].poseidon2_mem_addr_write_b); + polys.poseidon2_mem_addr_write_c.set_if_valid_index(i, rows[i].poseidon2_mem_addr_write_c); + polys.poseidon2_mem_addr_write_d.set_if_valid_index(i, rows[i].poseidon2_mem_addr_write_d); + polys.poseidon2_output_addr.set_if_valid_index(i, rows[i].poseidon2_output_addr); + polys.poseidon2_sel_poseidon_perm.set_if_valid_index(i, rows[i].poseidon2_sel_poseidon_perm); + polys.poseidon2_space_id.set_if_valid_index(i, rows[i].poseidon2_space_id); + polys.range_check_alu_rng_chk.set_if_valid_index(i, rows[i].range_check_alu_rng_chk); + polys.range_check_clk.set_if_valid_index(i, rows[i].range_check_clk); + polys.range_check_cmp_hi_bits_rng_chk.set_if_valid_index(i, rows[i].range_check_cmp_hi_bits_rng_chk); + polys.range_check_cmp_lo_bits_rng_chk.set_if_valid_index(i, rows[i].range_check_cmp_lo_bits_rng_chk); + polys.range_check_dyn_diff.set_if_valid_index(i, rows[i].range_check_dyn_diff); + polys.range_check_dyn_rng_chk_bits.set_if_valid_index(i, rows[i].range_check_dyn_rng_chk_bits); + polys.range_check_dyn_rng_chk_pow_2.set_if_valid_index(i, rows[i].range_check_dyn_rng_chk_pow_2); + polys.range_check_gas_da_rng_chk.set_if_valid_index(i, rows[i].range_check_gas_da_rng_chk); + polys.range_check_gas_l2_rng_chk.set_if_valid_index(i, rows[i].range_check_gas_l2_rng_chk); + polys.range_check_is_lte_u112.set_if_valid_index(i, rows[i].range_check_is_lte_u112); + polys.range_check_is_lte_u128.set_if_valid_index(i, rows[i].range_check_is_lte_u128); + polys.range_check_is_lte_u16.set_if_valid_index(i, rows[i].range_check_is_lte_u16); + polys.range_check_is_lte_u32.set_if_valid_index(i, rows[i].range_check_is_lte_u32); + polys.range_check_is_lte_u48.set_if_valid_index(i, rows[i].range_check_is_lte_u48); + polys.range_check_is_lte_u64.set_if_valid_index(i, rows[i].range_check_is_lte_u64); + polys.range_check_is_lte_u80.set_if_valid_index(i, rows[i].range_check_is_lte_u80); + polys.range_check_is_lte_u96.set_if_valid_index(i, rows[i].range_check_is_lte_u96); + polys.range_check_mem_rng_chk.set_if_valid_index(i, rows[i].range_check_mem_rng_chk); + polys.range_check_rng_chk_bits.set_if_valid_index(i, rows[i].range_check_rng_chk_bits); + polys.range_check_sel_lookup_0.set_if_valid_index(i, rows[i].range_check_sel_lookup_0); + polys.range_check_sel_lookup_1.set_if_valid_index(i, rows[i].range_check_sel_lookup_1); + polys.range_check_sel_lookup_2.set_if_valid_index(i, rows[i].range_check_sel_lookup_2); + polys.range_check_sel_lookup_3.set_if_valid_index(i, rows[i].range_check_sel_lookup_3); + polys.range_check_sel_lookup_4.set_if_valid_index(i, rows[i].range_check_sel_lookup_4); + polys.range_check_sel_lookup_5.set_if_valid_index(i, rows[i].range_check_sel_lookup_5); + polys.range_check_sel_lookup_6.set_if_valid_index(i, rows[i].range_check_sel_lookup_6); + polys.range_check_sel_rng_chk.set_if_valid_index(i, rows[i].range_check_sel_rng_chk); + polys.range_check_u16_r0.set_if_valid_index(i, rows[i].range_check_u16_r0); + polys.range_check_u16_r1.set_if_valid_index(i, rows[i].range_check_u16_r1); + polys.range_check_u16_r2.set_if_valid_index(i, rows[i].range_check_u16_r2); + polys.range_check_u16_r3.set_if_valid_index(i, rows[i].range_check_u16_r3); + polys.range_check_u16_r4.set_if_valid_index(i, rows[i].range_check_u16_r4); + polys.range_check_u16_r5.set_if_valid_index(i, rows[i].range_check_u16_r5); + polys.range_check_u16_r6.set_if_valid_index(i, rows[i].range_check_u16_r6); + polys.range_check_u16_r7.set_if_valid_index(i, rows[i].range_check_u16_r7); + polys.range_check_value.set_if_valid_index(i, rows[i].range_check_value); + polys.sha256_clk.set_if_valid_index(i, rows[i].sha256_clk); + polys.sha256_input.set_if_valid_index(i, rows[i].sha256_input); + polys.sha256_output.set_if_valid_index(i, rows[i].sha256_output); + polys.sha256_sel_sha256_compression.set_if_valid_index(i, rows[i].sha256_sel_sha256_compression); + polys.sha256_state.set_if_valid_index(i, rows[i].sha256_state); + polys.slice_addr.set_if_valid_index(i, rows[i].slice_addr); + polys.slice_clk.set_if_valid_index(i, rows[i].slice_clk); + polys.slice_cnt.set_if_valid_index(i, rows[i].slice_cnt); + polys.slice_col_offset.set_if_valid_index(i, rows[i].slice_col_offset); + polys.slice_one_min_inv.set_if_valid_index(i, rows[i].slice_one_min_inv); + polys.slice_sel_cd_cpy.set_if_valid_index(i, rows[i].slice_sel_cd_cpy); + polys.slice_sel_mem_active.set_if_valid_index(i, rows[i].slice_sel_mem_active); + polys.slice_sel_return.set_if_valid_index(i, rows[i].slice_sel_return); + polys.slice_sel_start.set_if_valid_index(i, rows[i].slice_sel_start); + polys.slice_space_id.set_if_valid_index(i, rows[i].slice_space_id); + polys.slice_val.set_if_valid_index(i, rows[i].slice_val); + polys.lookup_rng_chk_pow_2_counts.set_if_valid_index(i, rows[i].lookup_rng_chk_pow_2_counts); + polys.lookup_rng_chk_diff_counts.set_if_valid_index(i, rows[i].lookup_rng_chk_diff_counts); + polys.lookup_rng_chk_0_counts.set_if_valid_index(i, rows[i].lookup_rng_chk_0_counts); + polys.lookup_rng_chk_1_counts.set_if_valid_index(i, rows[i].lookup_rng_chk_1_counts); + polys.lookup_rng_chk_2_counts.set_if_valid_index(i, rows[i].lookup_rng_chk_2_counts); + polys.lookup_rng_chk_3_counts.set_if_valid_index(i, rows[i].lookup_rng_chk_3_counts); + polys.lookup_rng_chk_4_counts.set_if_valid_index(i, rows[i].lookup_rng_chk_4_counts); + polys.lookup_rng_chk_5_counts.set_if_valid_index(i, rows[i].lookup_rng_chk_5_counts); + polys.lookup_rng_chk_6_counts.set_if_valid_index(i, rows[i].lookup_rng_chk_6_counts); + polys.lookup_rng_chk_7_counts.set_if_valid_index(i, rows[i].lookup_rng_chk_7_counts); + polys.lookup_pow_2_0_counts.set_if_valid_index(i, rows[i].lookup_pow_2_0_counts); + polys.lookup_pow_2_1_counts.set_if_valid_index(i, rows[i].lookup_pow_2_1_counts); + polys.lookup_byte_lengths_counts.set_if_valid_index(i, rows[i].lookup_byte_lengths_counts); + polys.lookup_byte_operations_counts.set_if_valid_index(i, rows[i].lookup_byte_operations_counts); + polys.lookup_opcode_gas_counts.set_if_valid_index(i, rows[i].lookup_opcode_gas_counts); + polys.kernel_output_lookup_counts.set_if_valid_index(i, rows[i].kernel_output_lookup_counts); + polys.lookup_into_kernel_counts.set_if_valid_index(i, rows[i].lookup_into_kernel_counts); + polys.lookup_cd_value_counts.set_if_valid_index(i, rows[i].lookup_cd_value_counts); + polys.lookup_ret_value_counts.set_if_valid_index(i, rows[i].lookup_ret_value_counts); + polys.incl_main_tag_err_counts.set_if_valid_index(i, rows[i].incl_main_tag_err_counts); + polys.incl_mem_tag_err_counts.set_if_valid_index(i, rows[i].incl_mem_tag_err_counts); + }); + })); - AVM_TRACK_TIME("circuit_builder/set_polys_shifted", ({ - for (auto [shifted, to_be_shifted] : zip_view(polys.get_shifted(), polys.get_to_be_shifted())) { - shifted = to_be_shifted.shifted(); - } - })); + AVM_TRACK_TIME( + "circuit_builder/set_polys_shifted", ({ + for (auto [shifted, to_be_shifted] : zip_view(polys.get_shifted(), polys.get_to_be_shifted())) { + shifted = to_be_shifted.shifted(); + } + })); return polys; } -bool AvmCircuitBuilder::check_circuit() const -{ +bool AvmCircuitBuilder::check_circuit() const { const FF gamma = FF::random_element(); const FF beta = FF::random_element(); bb::RelationParameters params{ @@ -810,4 +794,4 @@ bool AvmCircuitBuilder::check_circuit() const return errors.empty(); } -} // namespace bb \ No newline at end of file +} // namespace bb \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/circuit_builder.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/circuit_builder.hpp index a59e1044b0b..4f6ee4dd0c4 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/circuit_builder.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/circuit_builder.hpp @@ -3,8 +3,8 @@ #include -#include "barretenberg/vm/avm/generated/flavor.hpp" #include "barretenberg/vm/avm/generated/full_row.hpp" +#include "barretenberg/vm/avm/generated/flavor.hpp" namespace bb { @@ -44,4 +44,4 @@ class AvmCircuitBuilder { std::vector rows; }; -} // namespace bb \ No newline at end of file +} // namespace bb \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/flavor.cpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/flavor.cpp index 484a1936a0c..017dc0ff7b4 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/flavor.cpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/flavor.cpp @@ -3,765 +3,9 @@ namespace bb { -AvmFlavor::AllConstRefValues::AllConstRefValues( - const RefArray& il) - : byte_lookup_sel_bin(il[0]) - , byte_lookup_table_byte_lengths(il[1]) - , byte_lookup_table_in_tags(il[2]) - , byte_lookup_table_input_a(il[3]) - , byte_lookup_table_input_b(il[4]) - , byte_lookup_table_op_id(il[5]) - , byte_lookup_table_output(il[6]) - , gas_base_da_gas_fixed_table(il[7]) - , gas_base_l2_gas_fixed_table(il[8]) - , gas_dyn_da_gas_fixed_table(il[9]) - , gas_dyn_l2_gas_fixed_table(il[10]) - , gas_sel_gas_cost(il[11]) - , main_clk(il[12]) - , main_sel_da_end_gas_kernel_input(il[13]) - , main_sel_da_start_gas_kernel_input(il[14]) - , main_sel_first(il[15]) - , main_sel_l2_end_gas_kernel_input(il[16]) - , main_sel_l2_start_gas_kernel_input(il[17]) - , main_sel_start_exec(il[18]) - , main_zeroes(il[19]) - , powers_power_of_2(il[20]) - , main_kernel_inputs(il[21]) - , main_kernel_value_out(il[22]) - , main_kernel_side_effect_out(il[23]) - , main_kernel_metadata_out(il[24]) - , main_calldata(il[25]) - , main_returndata(il[26]) - , alu_a_hi(il[27]) - , alu_a_lo(il[28]) - , alu_b_hi(il[29]) - , alu_b_lo(il[30]) - , alu_b_pow(il[31]) - , alu_c_hi(il[32]) - , alu_c_lo(il[33]) - , alu_cf(il[34]) - , alu_clk(il[35]) - , alu_cmp_gadget_gt(il[36]) - , alu_cmp_gadget_input_a(il[37]) - , alu_cmp_gadget_input_b(il[38]) - , alu_cmp_gadget_result(il[39]) - , alu_cmp_gadget_sel(il[40]) - , alu_ff_tag(il[41]) - , alu_ia(il[42]) - , alu_ib(il[43]) - , alu_ic(il[44]) - , alu_in_tag(il[45]) - , alu_max_bits_sub_b_bits(il[46]) - , alu_max_bits_sub_b_pow(il[47]) - , alu_op_add(il[48]) - , alu_op_cast(il[49]) - , alu_op_div(il[50]) - , alu_op_eq(il[51]) - , alu_op_lt(il[52]) - , alu_op_lte(il[53]) - , alu_op_mul(il[54]) - , alu_op_not(il[55]) - , alu_op_shl(il[56]) - , alu_op_shr(il[57]) - , alu_op_sub(il[58]) - , alu_partial_prod_hi(il[59]) - , alu_partial_prod_lo(il[60]) - , alu_range_check_input_value(il[61]) - , alu_range_check_num_bits(il[62]) - , alu_range_check_sel(il[63]) - , alu_remainder(il[64]) - , alu_sel_alu(il[65]) - , alu_sel_cmp(il[66]) - , alu_sel_shift_which(il[67]) - , alu_u128_tag(il[68]) - , alu_u16_tag(il[69]) - , alu_u1_tag(il[70]) - , alu_u32_tag(il[71]) - , alu_u64_tag(il[72]) - , alu_u8_tag(il[73]) - , alu_zero_shift(il[74]) - , binary_acc_ia(il[75]) - , binary_acc_ib(il[76]) - , binary_acc_ic(il[77]) - , binary_clk(il[78]) - , binary_ia_bytes(il[79]) - , binary_ib_bytes(il[80]) - , binary_ic_bytes(il[81]) - , binary_in_tag(il[82]) - , binary_mem_tag_ctr(il[83]) - , binary_mem_tag_ctr_inv(il[84]) - , binary_op_id(il[85]) - , binary_sel_bin(il[86]) - , binary_start(il[87]) - , cmp_a_hi(il[88]) - , cmp_a_lo(il[89]) - , cmp_b_hi(il[90]) - , cmp_b_lo(il[91]) - , cmp_borrow(il[92]) - , cmp_clk(il[93]) - , cmp_cmp_rng_ctr(il[94]) - , cmp_input_a(il[95]) - , cmp_input_b(il[96]) - , cmp_op_eq(il[97]) - , cmp_op_eq_diff_inv(il[98]) - , cmp_op_gt(il[99]) - , cmp_p_a_borrow(il[100]) - , cmp_p_b_borrow(il[101]) - , cmp_p_sub_a_hi(il[102]) - , cmp_p_sub_a_lo(il[103]) - , cmp_p_sub_b_hi(il[104]) - , cmp_p_sub_b_lo(il[105]) - , cmp_range_chk_clk(il[106]) - , cmp_res_hi(il[107]) - , cmp_res_lo(il[108]) - , cmp_result(il[109]) - , cmp_sel_cmp(il[110]) - , cmp_sel_rng_chk(il[111]) - , cmp_shift_sel(il[112]) - , conversion_clk(il[113]) - , conversion_input(il[114]) - , conversion_num_limbs(il[115]) - , conversion_output_bits(il[116]) - , conversion_radix(il[117]) - , conversion_sel_to_radix_le(il[118]) - , keccakf1600_clk(il[119]) - , keccakf1600_input(il[120]) - , keccakf1600_output(il[121]) - , keccakf1600_sel_keccakf1600(il[122]) - , main_abs_da_rem_gas(il[123]) - , main_abs_l2_rem_gas(il[124]) - , main_alu_in_tag(il[125]) - , main_base_da_gas_op_cost(il[126]) - , main_base_l2_gas_op_cost(il[127]) - , main_bin_op_id(il[128]) - , main_call_ptr(il[129]) - , main_da_gas_remaining(il[130]) - , main_da_out_of_gas(il[131]) - , main_dyn_da_gas_op_cost(il[132]) - , main_dyn_gas_multiplier(il[133]) - , main_dyn_l2_gas_op_cost(il[134]) - , main_emit_l2_to_l1_msg_write_offset(il[135]) - , main_emit_note_hash_write_offset(il[136]) - , main_emit_nullifier_write_offset(il[137]) - , main_emit_unencrypted_log_write_offset(il[138]) - , main_ia(il[139]) - , main_ib(il[140]) - , main_ic(il[141]) - , main_id(il[142]) - , main_id_zero(il[143]) - , main_ind_addr_a(il[144]) - , main_ind_addr_b(il[145]) - , main_ind_addr_c(il[146]) - , main_ind_addr_d(il[147]) - , main_internal_return_ptr(il[148]) - , main_inv(il[149]) - , main_is_fake_row(il[150]) - , main_is_gas_accounted(il[151]) - , main_kernel_in_offset(il[152]) - , main_kernel_out_offset(il[153]) - , main_l1_to_l2_msg_exists_write_offset(il[154]) - , main_l2_gas_remaining(il[155]) - , main_l2_out_of_gas(il[156]) - , main_mem_addr_a(il[157]) - , main_mem_addr_b(il[158]) - , main_mem_addr_c(il[159]) - , main_mem_addr_d(il[160]) - , main_note_hash_exist_write_offset(il[161]) - , main_nullifier_exists_write_offset(il[162]) - , main_nullifier_non_exists_write_offset(il[163]) - , main_op_err(il[164]) - , main_opcode_val(il[165]) - , main_pc(il[166]) - , main_r_in_tag(il[167]) - , main_rwa(il[168]) - , main_rwb(il[169]) - , main_rwc(il[170]) - , main_rwd(il[171]) - , main_sel_alu(il[172]) - , main_sel_bin(il[173]) - , main_sel_calldata(il[174]) - , main_sel_execution_end(il[175]) - , main_sel_execution_row(il[176]) - , main_sel_kernel_inputs(il[177]) - , main_sel_kernel_out(il[178]) - , main_sel_mem_op_a(il[179]) - , main_sel_mem_op_b(il[180]) - , main_sel_mem_op_c(il[181]) - , main_sel_mem_op_d(il[182]) - , main_sel_mov_ia_to_ic(il[183]) - , main_sel_mov_ib_to_ic(il[184]) - , main_sel_op_add(il[185]) - , main_sel_op_address(il[186]) - , main_sel_op_and(il[187]) - , main_sel_op_block_number(il[188]) - , main_sel_op_calldata_copy(il[189]) - , main_sel_op_cast(il[190]) - , main_sel_op_chain_id(il[191]) - , main_sel_op_dagasleft(il[192]) - , main_sel_op_div(il[193]) - , main_sel_op_ecadd(il[194]) - , main_sel_op_emit_l2_to_l1_msg(il[195]) - , main_sel_op_emit_note_hash(il[196]) - , main_sel_op_emit_nullifier(il[197]) - , main_sel_op_emit_unencrypted_log(il[198]) - , main_sel_op_eq(il[199]) - , main_sel_op_external_call(il[200]) - , main_sel_op_external_return(il[201]) - , main_sel_op_external_revert(il[202]) - , main_sel_op_fdiv(il[203]) - , main_sel_op_fee_per_da_gas(il[204]) - , main_sel_op_fee_per_l2_gas(il[205]) - , main_sel_op_function_selector(il[206]) - , main_sel_op_get_contract_instance(il[207]) - , main_sel_op_internal_call(il[208]) - , main_sel_op_internal_return(il[209]) - , main_sel_op_is_static_call(il[210]) - , main_sel_op_jump(il[211]) - , main_sel_op_jumpi(il[212]) - , main_sel_op_keccak(il[213]) - , main_sel_op_l1_to_l2_msg_exists(il[214]) - , main_sel_op_l2gasleft(il[215]) - , main_sel_op_lt(il[216]) - , main_sel_op_lte(il[217]) - , main_sel_op_mov(il[218]) - , main_sel_op_msm(il[219]) - , main_sel_op_mul(il[220]) - , main_sel_op_not(il[221]) - , main_sel_op_note_hash_exists(il[222]) - , main_sel_op_nullifier_exists(il[223]) - , main_sel_op_or(il[224]) - , main_sel_op_pedersen(il[225]) - , main_sel_op_pedersen_commit(il[226]) - , main_sel_op_poseidon2(il[227]) - , main_sel_op_radix_le(il[228]) - , main_sel_op_sender(il[229]) - , main_sel_op_set(il[230]) - , main_sel_op_sha256(il[231]) - , main_sel_op_shl(il[232]) - , main_sel_op_shr(il[233]) - , main_sel_op_sload(il[234]) - , main_sel_op_sstore(il[235]) - , main_sel_op_static_call(il[236]) - , main_sel_op_storage_address(il[237]) - , main_sel_op_sub(il[238]) - , main_sel_op_timestamp(il[239]) - , main_sel_op_transaction_fee(il[240]) - , main_sel_op_version(il[241]) - , main_sel_op_xor(il[242]) - , main_sel_q_kernel_lookup(il[243]) - , main_sel_q_kernel_output_lookup(il[244]) - , main_sel_resolve_ind_addr_a(il[245]) - , main_sel_resolve_ind_addr_b(il[246]) - , main_sel_resolve_ind_addr_c(il[247]) - , main_sel_resolve_ind_addr_d(il[248]) - , main_sel_returndata(il[249]) - , main_sel_rng_16(il[250]) - , main_sel_rng_8(il[251]) - , main_sel_slice_gadget(il[252]) - , main_side_effect_counter(il[253]) - , main_sload_write_offset(il[254]) - , main_space_id(il[255]) - , main_sstore_write_offset(il[256]) - , main_tag_err(il[257]) - , main_w_in_tag(il[258]) - , mem_addr(il[259]) - , mem_clk(il[260]) - , mem_diff(il[261]) - , mem_glob_addr(il[262]) - , mem_last(il[263]) - , mem_lastAccess(il[264]) - , mem_one_min_inv(il[265]) - , mem_r_in_tag(il[266]) - , mem_rw(il[267]) - , mem_sel_mem(il[268]) - , mem_sel_mov_ia_to_ic(il[269]) - , mem_sel_mov_ib_to_ic(il[270]) - , mem_sel_op_a(il[271]) - , mem_sel_op_b(il[272]) - , mem_sel_op_c(il[273]) - , mem_sel_op_d(il[274]) - , mem_sel_op_poseidon_read_a(il[275]) - , mem_sel_op_poseidon_read_b(il[276]) - , mem_sel_op_poseidon_read_c(il[277]) - , mem_sel_op_poseidon_read_d(il[278]) - , mem_sel_op_poseidon_write_a(il[279]) - , mem_sel_op_poseidon_write_b(il[280]) - , mem_sel_op_poseidon_write_c(il[281]) - , mem_sel_op_poseidon_write_d(il[282]) - , mem_sel_op_slice(il[283]) - , mem_sel_resolve_ind_addr_a(il[284]) - , mem_sel_resolve_ind_addr_b(il[285]) - , mem_sel_resolve_ind_addr_c(il[286]) - , mem_sel_resolve_ind_addr_d(il[287]) - , mem_sel_rng_chk(il[288]) - , mem_skip_check_tag(il[289]) - , mem_space_id(il[290]) - , mem_tag(il[291]) - , mem_tag_err(il[292]) - , mem_tsp(il[293]) - , mem_val(il[294]) - , mem_w_in_tag(il[295]) - , pedersen_clk(il[296]) - , pedersen_input(il[297]) - , pedersen_output(il[298]) - , pedersen_sel_pedersen(il[299]) - , poseidon2_B_10_0(il[300]) - , poseidon2_B_10_1(il[301]) - , poseidon2_B_10_2(il[302]) - , poseidon2_B_10_3(il[303]) - , poseidon2_B_11_0(il[304]) - , poseidon2_B_11_1(il[305]) - , poseidon2_B_11_2(il[306]) - , poseidon2_B_11_3(il[307]) - , poseidon2_B_12_0(il[308]) - , poseidon2_B_12_1(il[309]) - , poseidon2_B_12_2(il[310]) - , poseidon2_B_12_3(il[311]) - , poseidon2_B_13_0(il[312]) - , poseidon2_B_13_1(il[313]) - , poseidon2_B_13_2(il[314]) - , poseidon2_B_13_3(il[315]) - , poseidon2_B_14_0(il[316]) - , poseidon2_B_14_1(il[317]) - , poseidon2_B_14_2(il[318]) - , poseidon2_B_14_3(il[319]) - , poseidon2_B_15_0(il[320]) - , poseidon2_B_15_1(il[321]) - , poseidon2_B_15_2(il[322]) - , poseidon2_B_15_3(il[323]) - , poseidon2_B_16_0(il[324]) - , poseidon2_B_16_1(il[325]) - , poseidon2_B_16_2(il[326]) - , poseidon2_B_16_3(il[327]) - , poseidon2_B_17_0(il[328]) - , poseidon2_B_17_1(il[329]) - , poseidon2_B_17_2(il[330]) - , poseidon2_B_17_3(il[331]) - , poseidon2_B_18_0(il[332]) - , poseidon2_B_18_1(il[333]) - , poseidon2_B_18_2(il[334]) - , poseidon2_B_18_3(il[335]) - , poseidon2_B_19_0(il[336]) - , poseidon2_B_19_1(il[337]) - , poseidon2_B_19_2(il[338]) - , poseidon2_B_19_3(il[339]) - , poseidon2_B_20_0(il[340]) - , poseidon2_B_20_1(il[341]) - , poseidon2_B_20_2(il[342]) - , poseidon2_B_20_3(il[343]) - , poseidon2_B_21_0(il[344]) - , poseidon2_B_21_1(il[345]) - , poseidon2_B_21_2(il[346]) - , poseidon2_B_21_3(il[347]) - , poseidon2_B_22_0(il[348]) - , poseidon2_B_22_1(il[349]) - , poseidon2_B_22_2(il[350]) - , poseidon2_B_22_3(il[351]) - , poseidon2_B_23_0(il[352]) - , poseidon2_B_23_1(il[353]) - , poseidon2_B_23_2(il[354]) - , poseidon2_B_23_3(il[355]) - , poseidon2_B_24_0(il[356]) - , poseidon2_B_24_1(il[357]) - , poseidon2_B_24_2(il[358]) - , poseidon2_B_24_3(il[359]) - , poseidon2_B_25_0(il[360]) - , poseidon2_B_25_1(il[361]) - , poseidon2_B_25_2(il[362]) - , poseidon2_B_25_3(il[363]) - , poseidon2_B_26_0(il[364]) - , poseidon2_B_26_1(il[365]) - , poseidon2_B_26_2(il[366]) - , poseidon2_B_26_3(il[367]) - , poseidon2_B_27_0(il[368]) - , poseidon2_B_27_1(il[369]) - , poseidon2_B_27_2(il[370]) - , poseidon2_B_27_3(il[371]) - , poseidon2_B_28_0(il[372]) - , poseidon2_B_28_1(il[373]) - , poseidon2_B_28_2(il[374]) - , poseidon2_B_28_3(il[375]) - , poseidon2_B_29_0(il[376]) - , poseidon2_B_29_1(il[377]) - , poseidon2_B_29_2(il[378]) - , poseidon2_B_29_3(il[379]) - , poseidon2_B_30_0(il[380]) - , poseidon2_B_30_1(il[381]) - , poseidon2_B_30_2(il[382]) - , poseidon2_B_30_3(il[383]) - , poseidon2_B_31_0(il[384]) - , poseidon2_B_31_1(il[385]) - , poseidon2_B_31_2(il[386]) - , poseidon2_B_31_3(il[387]) - , poseidon2_B_32_0(il[388]) - , poseidon2_B_32_1(il[389]) - , poseidon2_B_32_2(il[390]) - , poseidon2_B_32_3(il[391]) - , poseidon2_B_33_0(il[392]) - , poseidon2_B_33_1(il[393]) - , poseidon2_B_33_2(il[394]) - , poseidon2_B_33_3(il[395]) - , poseidon2_B_34_0(il[396]) - , poseidon2_B_34_1(il[397]) - , poseidon2_B_34_2(il[398]) - , poseidon2_B_34_3(il[399]) - , poseidon2_B_35_0(il[400]) - , poseidon2_B_35_1(il[401]) - , poseidon2_B_35_2(il[402]) - , poseidon2_B_35_3(il[403]) - , poseidon2_B_36_0(il[404]) - , poseidon2_B_36_1(il[405]) - , poseidon2_B_36_2(il[406]) - , poseidon2_B_36_3(il[407]) - , poseidon2_B_37_0(il[408]) - , poseidon2_B_37_1(il[409]) - , poseidon2_B_37_2(il[410]) - , poseidon2_B_37_3(il[411]) - , poseidon2_B_38_0(il[412]) - , poseidon2_B_38_1(il[413]) - , poseidon2_B_38_2(il[414]) - , poseidon2_B_38_3(il[415]) - , poseidon2_B_39_0(il[416]) - , poseidon2_B_39_1(il[417]) - , poseidon2_B_39_2(il[418]) - , poseidon2_B_39_3(il[419]) - , poseidon2_B_40_0(il[420]) - , poseidon2_B_40_1(il[421]) - , poseidon2_B_40_2(il[422]) - , poseidon2_B_40_3(il[423]) - , poseidon2_B_41_0(il[424]) - , poseidon2_B_41_1(il[425]) - , poseidon2_B_41_2(il[426]) - , poseidon2_B_41_3(il[427]) - , poseidon2_B_42_0(il[428]) - , poseidon2_B_42_1(il[429]) - , poseidon2_B_42_2(il[430]) - , poseidon2_B_42_3(il[431]) - , poseidon2_B_43_0(il[432]) - , poseidon2_B_43_1(il[433]) - , poseidon2_B_43_2(il[434]) - , poseidon2_B_43_3(il[435]) - , poseidon2_B_44_0(il[436]) - , poseidon2_B_44_1(il[437]) - , poseidon2_B_44_2(il[438]) - , poseidon2_B_44_3(il[439]) - , poseidon2_B_45_0(il[440]) - , poseidon2_B_45_1(il[441]) - , poseidon2_B_45_2(il[442]) - , poseidon2_B_45_3(il[443]) - , poseidon2_B_46_0(il[444]) - , poseidon2_B_46_1(il[445]) - , poseidon2_B_46_2(il[446]) - , poseidon2_B_46_3(il[447]) - , poseidon2_B_47_0(il[448]) - , poseidon2_B_47_1(il[449]) - , poseidon2_B_47_2(il[450]) - , poseidon2_B_47_3(il[451]) - , poseidon2_B_48_0(il[452]) - , poseidon2_B_48_1(il[453]) - , poseidon2_B_48_2(il[454]) - , poseidon2_B_48_3(il[455]) - , poseidon2_B_49_0(il[456]) - , poseidon2_B_49_1(il[457]) - , poseidon2_B_49_2(il[458]) - , poseidon2_B_49_3(il[459]) - , poseidon2_B_4_0(il[460]) - , poseidon2_B_4_1(il[461]) - , poseidon2_B_4_2(il[462]) - , poseidon2_B_4_3(il[463]) - , poseidon2_B_50_0(il[464]) - , poseidon2_B_50_1(il[465]) - , poseidon2_B_50_2(il[466]) - , poseidon2_B_50_3(il[467]) - , poseidon2_B_51_0(il[468]) - , poseidon2_B_51_1(il[469]) - , poseidon2_B_51_2(il[470]) - , poseidon2_B_51_3(il[471]) - , poseidon2_B_52_0(il[472]) - , poseidon2_B_52_1(il[473]) - , poseidon2_B_52_2(il[474]) - , poseidon2_B_52_3(il[475]) - , poseidon2_B_53_0(il[476]) - , poseidon2_B_53_1(il[477]) - , poseidon2_B_53_2(il[478]) - , poseidon2_B_53_3(il[479]) - , poseidon2_B_54_0(il[480]) - , poseidon2_B_54_1(il[481]) - , poseidon2_B_54_2(il[482]) - , poseidon2_B_54_3(il[483]) - , poseidon2_B_55_0(il[484]) - , poseidon2_B_55_1(il[485]) - , poseidon2_B_55_2(il[486]) - , poseidon2_B_55_3(il[487]) - , poseidon2_B_56_0(il[488]) - , poseidon2_B_56_1(il[489]) - , poseidon2_B_56_2(il[490]) - , poseidon2_B_56_3(il[491]) - , poseidon2_B_57_0(il[492]) - , poseidon2_B_57_1(il[493]) - , poseidon2_B_57_2(il[494]) - , poseidon2_B_57_3(il[495]) - , poseidon2_B_58_0(il[496]) - , poseidon2_B_58_1(il[497]) - , poseidon2_B_58_2(il[498]) - , poseidon2_B_58_3(il[499]) - , poseidon2_B_59_0(il[500]) - , poseidon2_B_59_1(il[501]) - , poseidon2_B_59_2(il[502]) - , poseidon2_B_59_3(il[503]) - , poseidon2_B_5_0(il[504]) - , poseidon2_B_5_1(il[505]) - , poseidon2_B_5_2(il[506]) - , poseidon2_B_5_3(il[507]) - , poseidon2_B_6_0(il[508]) - , poseidon2_B_6_1(il[509]) - , poseidon2_B_6_2(il[510]) - , poseidon2_B_6_3(il[511]) - , poseidon2_B_7_0(il[512]) - , poseidon2_B_7_1(il[513]) - , poseidon2_B_7_2(il[514]) - , poseidon2_B_7_3(il[515]) - , poseidon2_B_8_0(il[516]) - , poseidon2_B_8_1(il[517]) - , poseidon2_B_8_2(il[518]) - , poseidon2_B_8_3(il[519]) - , poseidon2_B_9_0(il[520]) - , poseidon2_B_9_1(il[521]) - , poseidon2_B_9_2(il[522]) - , poseidon2_B_9_3(il[523]) - , poseidon2_EXT_LAYER_4(il[524]) - , poseidon2_EXT_LAYER_5(il[525]) - , poseidon2_EXT_LAYER_6(il[526]) - , poseidon2_EXT_LAYER_7(il[527]) - , poseidon2_T_0_4(il[528]) - , poseidon2_T_0_5(il[529]) - , poseidon2_T_0_6(il[530]) - , poseidon2_T_0_7(il[531]) - , poseidon2_T_1_4(il[532]) - , poseidon2_T_1_5(il[533]) - , poseidon2_T_1_6(il[534]) - , poseidon2_T_1_7(il[535]) - , poseidon2_T_2_4(il[536]) - , poseidon2_T_2_5(il[537]) - , poseidon2_T_2_6(il[538]) - , poseidon2_T_2_7(il[539]) - , poseidon2_T_3_4(il[540]) - , poseidon2_T_3_5(il[541]) - , poseidon2_T_3_6(il[542]) - , poseidon2_T_3_7(il[543]) - , poseidon2_T_60_4(il[544]) - , poseidon2_T_60_5(il[545]) - , poseidon2_T_60_6(il[546]) - , poseidon2_T_60_7(il[547]) - , poseidon2_T_61_4(il[548]) - , poseidon2_T_61_5(il[549]) - , poseidon2_T_61_6(il[550]) - , poseidon2_T_61_7(il[551]) - , poseidon2_T_62_4(il[552]) - , poseidon2_T_62_5(il[553]) - , poseidon2_T_62_6(il[554]) - , poseidon2_T_62_7(il[555]) - , poseidon2_T_63_4(il[556]) - , poseidon2_T_63_5(il[557]) - , poseidon2_T_63_6(il[558]) - , poseidon2_T_63_7(il[559]) - , poseidon2_a_0(il[560]) - , poseidon2_a_1(il[561]) - , poseidon2_a_2(il[562]) - , poseidon2_a_3(il[563]) - , poseidon2_b_0(il[564]) - , poseidon2_b_1(il[565]) - , poseidon2_b_2(il[566]) - , poseidon2_b_3(il[567]) - , poseidon2_clk(il[568]) - , poseidon2_input_addr(il[569]) - , poseidon2_mem_addr_read_a(il[570]) - , poseidon2_mem_addr_read_b(il[571]) - , poseidon2_mem_addr_read_c(il[572]) - , poseidon2_mem_addr_read_d(il[573]) - , poseidon2_mem_addr_write_a(il[574]) - , poseidon2_mem_addr_write_b(il[575]) - , poseidon2_mem_addr_write_c(il[576]) - , poseidon2_mem_addr_write_d(il[577]) - , poseidon2_output_addr(il[578]) - , poseidon2_sel_poseidon_perm(il[579]) - , poseidon2_space_id(il[580]) - , range_check_alu_rng_chk(il[581]) - , range_check_clk(il[582]) - , range_check_cmp_hi_bits_rng_chk(il[583]) - , range_check_cmp_lo_bits_rng_chk(il[584]) - , range_check_dyn_diff(il[585]) - , range_check_dyn_rng_chk_bits(il[586]) - , range_check_dyn_rng_chk_pow_2(il[587]) - , range_check_gas_da_rng_chk(il[588]) - , range_check_gas_l2_rng_chk(il[589]) - , range_check_is_lte_u112(il[590]) - , range_check_is_lte_u128(il[591]) - , range_check_is_lte_u16(il[592]) - , range_check_is_lte_u32(il[593]) - , range_check_is_lte_u48(il[594]) - , range_check_is_lte_u64(il[595]) - , range_check_is_lte_u80(il[596]) - , range_check_is_lte_u96(il[597]) - , range_check_mem_rng_chk(il[598]) - , range_check_rng_chk_bits(il[599]) - , range_check_sel_lookup_0(il[600]) - , range_check_sel_lookup_1(il[601]) - , range_check_sel_lookup_2(il[602]) - , range_check_sel_lookup_3(il[603]) - , range_check_sel_lookup_4(il[604]) - , range_check_sel_lookup_5(il[605]) - , range_check_sel_lookup_6(il[606]) - , range_check_sel_rng_chk(il[607]) - , range_check_u16_r0(il[608]) - , range_check_u16_r1(il[609]) - , range_check_u16_r2(il[610]) - , range_check_u16_r3(il[611]) - , range_check_u16_r4(il[612]) - , range_check_u16_r5(il[613]) - , range_check_u16_r6(il[614]) - , range_check_u16_r7(il[615]) - , range_check_value(il[616]) - , sha256_clk(il[617]) - , sha256_input(il[618]) - , sha256_output(il[619]) - , sha256_sel_sha256_compression(il[620]) - , sha256_state(il[621]) - , slice_addr(il[622]) - , slice_clk(il[623]) - , slice_cnt(il[624]) - , slice_col_offset(il[625]) - , slice_one_min_inv(il[626]) - , slice_sel_cd_cpy(il[627]) - , slice_sel_mem_active(il[628]) - , slice_sel_return(il[629]) - , slice_sel_start(il[630]) - , slice_space_id(il[631]) - , slice_val(il[632]) - , lookup_rng_chk_pow_2_counts(il[633]) - , lookup_rng_chk_diff_counts(il[634]) - , lookup_rng_chk_0_counts(il[635]) - , lookup_rng_chk_1_counts(il[636]) - , lookup_rng_chk_2_counts(il[637]) - , lookup_rng_chk_3_counts(il[638]) - , lookup_rng_chk_4_counts(il[639]) - , lookup_rng_chk_5_counts(il[640]) - , lookup_rng_chk_6_counts(il[641]) - , lookup_rng_chk_7_counts(il[642]) - , lookup_pow_2_0_counts(il[643]) - , lookup_pow_2_1_counts(il[644]) - , lookup_byte_lengths_counts(il[645]) - , lookup_byte_operations_counts(il[646]) - , lookup_opcode_gas_counts(il[647]) - , kernel_output_lookup_counts(il[648]) - , lookup_into_kernel_counts(il[649]) - , lookup_cd_value_counts(il[650]) - , lookup_ret_value_counts(il[651]) - , incl_main_tag_err_counts(il[652]) - , incl_mem_tag_err_counts(il[653]) - , perm_rng_mem_inv(il[654]) - , perm_rng_cmp_lo_inv(il[655]) - , perm_rng_cmp_hi_inv(il[656]) - , perm_rng_alu_inv(il[657]) - , perm_cmp_alu_inv(il[658]) - , perm_rng_gas_l2_inv(il[659]) - , perm_rng_gas_da_inv(il[660]) - , perm_l2_start_gas_inv(il[661]) - , perm_da_start_gas_inv(il[662]) - , perm_l2_end_gas_inv(il[663]) - , perm_da_end_gas_inv(il[664]) - , perm_pos_mem_read_a_inv(il[665]) - , perm_pos_mem_read_b_inv(il[666]) - , perm_pos_mem_read_c_inv(il[667]) - , perm_pos_mem_read_d_inv(il[668]) - , perm_pos_mem_write_a_inv(il[669]) - , perm_pos_mem_write_b_inv(il[670]) - , perm_pos_mem_write_c_inv(il[671]) - , perm_pos_mem_write_d_inv(il[672]) - , perm_slice_mem_inv(il[673]) - , perm_main_alu_inv(il[674]) - , perm_main_bin_inv(il[675]) - , perm_main_conv_inv(il[676]) - , perm_main_pos2_perm_inv(il[677]) - , perm_main_pedersen_inv(il[678]) - , perm_main_slice_inv(il[679]) - , perm_main_mem_a_inv(il[680]) - , perm_main_mem_b_inv(il[681]) - , perm_main_mem_c_inv(il[682]) - , perm_main_mem_d_inv(il[683]) - , perm_main_mem_ind_addr_a_inv(il[684]) - , perm_main_mem_ind_addr_b_inv(il[685]) - , perm_main_mem_ind_addr_c_inv(il[686]) - , perm_main_mem_ind_addr_d_inv(il[687]) - , lookup_rng_chk_pow_2_inv(il[688]) - , lookup_rng_chk_diff_inv(il[689]) - , lookup_rng_chk_0_inv(il[690]) - , lookup_rng_chk_1_inv(il[691]) - , lookup_rng_chk_2_inv(il[692]) - , lookup_rng_chk_3_inv(il[693]) - , lookup_rng_chk_4_inv(il[694]) - , lookup_rng_chk_5_inv(il[695]) - , lookup_rng_chk_6_inv(il[696]) - , lookup_rng_chk_7_inv(il[697]) - , lookup_pow_2_0_inv(il[698]) - , lookup_pow_2_1_inv(il[699]) - , lookup_byte_lengths_inv(il[700]) - , lookup_byte_operations_inv(il[701]) - , lookup_opcode_gas_inv(il[702]) - , kernel_output_lookup_inv(il[703]) - , lookup_into_kernel_inv(il[704]) - , lookup_cd_value_inv(il[705]) - , lookup_ret_value_inv(il[706]) - , incl_main_tag_err_inv(il[707]) - , incl_mem_tag_err_inv(il[708]) - , binary_acc_ia_shift(il[709]) - , binary_acc_ib_shift(il[710]) - , binary_acc_ic_shift(il[711]) - , binary_mem_tag_ctr_shift(il[712]) - , binary_op_id_shift(il[713]) - , cmp_a_hi_shift(il[714]) - , cmp_a_lo_shift(il[715]) - , cmp_b_hi_shift(il[716]) - , cmp_b_lo_shift(il[717]) - , cmp_cmp_rng_ctr_shift(il[718]) - , cmp_op_gt_shift(il[719]) - , cmp_p_sub_a_hi_shift(il[720]) - , cmp_p_sub_a_lo_shift(il[721]) - , cmp_p_sub_b_hi_shift(il[722]) - , cmp_p_sub_b_lo_shift(il[723]) - , cmp_sel_rng_chk_shift(il[724]) - , main_da_gas_remaining_shift(il[725]) - , main_emit_l2_to_l1_msg_write_offset_shift(il[726]) - , main_emit_note_hash_write_offset_shift(il[727]) - , main_emit_nullifier_write_offset_shift(il[728]) - , main_emit_unencrypted_log_write_offset_shift(il[729]) - , main_internal_return_ptr_shift(il[730]) - , main_l1_to_l2_msg_exists_write_offset_shift(il[731]) - , main_l2_gas_remaining_shift(il[732]) - , main_note_hash_exist_write_offset_shift(il[733]) - , main_nullifier_exists_write_offset_shift(il[734]) - , main_nullifier_non_exists_write_offset_shift(il[735]) - , main_pc_shift(il[736]) - , main_sel_execution_end_shift(il[737]) - , main_sel_execution_row_shift(il[738]) - , main_sload_write_offset_shift(il[739]) - , main_sstore_write_offset_shift(il[740]) - , mem_glob_addr_shift(il[741]) - , mem_rw_shift(il[742]) - , mem_sel_mem_shift(il[743]) - , mem_tag_shift(il[744]) - , mem_tsp_shift(il[745]) - , mem_val_shift(il[746]) - , slice_addr_shift(il[747]) - , slice_clk_shift(il[748]) - , slice_cnt_shift(il[749]) - , slice_col_offset_shift(il[750]) - , slice_sel_cd_cpy_shift(il[751]) - , slice_sel_mem_active_shift(il[752]) - , slice_sel_return_shift(il[753]) - , slice_sel_start_shift(il[754]) - , slice_space_id_shift(il[755]) -{} +AvmFlavor::AllConstRefValues::AllConstRefValues(const RefArray& il) : + byte_lookup_sel_bin(il[0]),byte_lookup_table_byte_lengths(il[1]),byte_lookup_table_in_tags(il[2]),byte_lookup_table_input_a(il[3]),byte_lookup_table_input_b(il[4]),byte_lookup_table_op_id(il[5]),byte_lookup_table_output(il[6]),gas_base_da_gas_fixed_table(il[7]),gas_base_l2_gas_fixed_table(il[8]),gas_dyn_da_gas_fixed_table(il[9]),gas_dyn_l2_gas_fixed_table(il[10]),gas_sel_gas_cost(il[11]),main_clk(il[12]),main_sel_da_end_gas_kernel_input(il[13]),main_sel_da_start_gas_kernel_input(il[14]),main_sel_first(il[15]),main_sel_l2_end_gas_kernel_input(il[16]),main_sel_l2_start_gas_kernel_input(il[17]),main_sel_start_exec(il[18]),main_zeroes(il[19]),powers_power_of_2(il[20]),main_kernel_inputs(il[21]),main_kernel_value_out(il[22]),main_kernel_side_effect_out(il[23]),main_kernel_metadata_out(il[24]),main_calldata(il[25]),main_returndata(il[26]),alu_a_hi(il[27]),alu_a_lo(il[28]),alu_b_hi(il[29]),alu_b_lo(il[30]),alu_b_pow(il[31]),alu_c_hi(il[32]),alu_c_lo(il[33]),alu_cf(il[34]),alu_clk(il[35]),alu_cmp_gadget_gt(il[36]),alu_cmp_gadget_input_a(il[37]),alu_cmp_gadget_input_b(il[38]),alu_cmp_gadget_result(il[39]),alu_cmp_gadget_sel(il[40]),alu_ff_tag(il[41]),alu_ia(il[42]),alu_ib(il[43]),alu_ic(il[44]),alu_in_tag(il[45]),alu_max_bits_sub_b_bits(il[46]),alu_max_bits_sub_b_pow(il[47]),alu_op_add(il[48]),alu_op_cast(il[49]),alu_op_div(il[50]),alu_op_eq(il[51]),alu_op_lt(il[52]),alu_op_lte(il[53]),alu_op_mul(il[54]),alu_op_not(il[55]),alu_op_shl(il[56]),alu_op_shr(il[57]),alu_op_sub(il[58]),alu_partial_prod_hi(il[59]),alu_partial_prod_lo(il[60]),alu_range_check_input_value(il[61]),alu_range_check_num_bits(il[62]),alu_range_check_sel(il[63]),alu_remainder(il[64]),alu_sel_alu(il[65]),alu_sel_cmp(il[66]),alu_sel_shift_which(il[67]),alu_u128_tag(il[68]),alu_u16_tag(il[69]),alu_u1_tag(il[70]),alu_u32_tag(il[71]),alu_u64_tag(il[72]),alu_u8_tag(il[73]),alu_zero_shift(il[74]),binary_acc_ia(il[75]),binary_acc_ib(il[76]),binary_acc_ic(il[77]),binary_clk(il[78]),binary_ia_bytes(il[79]),binary_ib_bytes(il[80]),binary_ic_bytes(il[81]),binary_in_tag(il[82]),binary_mem_tag_ctr(il[83]),binary_mem_tag_ctr_inv(il[84]),binary_op_id(il[85]),binary_sel_bin(il[86]),binary_start(il[87]),cmp_a_hi(il[88]),cmp_a_lo(il[89]),cmp_b_hi(il[90]),cmp_b_lo(il[91]),cmp_borrow(il[92]),cmp_clk(il[93]),cmp_cmp_rng_ctr(il[94]),cmp_input_a(il[95]),cmp_input_b(il[96]),cmp_op_eq(il[97]),cmp_op_eq_diff_inv(il[98]),cmp_op_gt(il[99]),cmp_p_a_borrow(il[100]),cmp_p_b_borrow(il[101]),cmp_p_sub_a_hi(il[102]),cmp_p_sub_a_lo(il[103]),cmp_p_sub_b_hi(il[104]),cmp_p_sub_b_lo(il[105]),cmp_range_chk_clk(il[106]),cmp_res_hi(il[107]),cmp_res_lo(il[108]),cmp_result(il[109]),cmp_sel_cmp(il[110]),cmp_sel_rng_chk(il[111]),cmp_shift_sel(il[112]),conversion_clk(il[113]),conversion_input(il[114]),conversion_num_limbs(il[115]),conversion_output_bits(il[116]),conversion_radix(il[117]),conversion_sel_to_radix_le(il[118]),keccakf1600_clk(il[119]),keccakf1600_input(il[120]),keccakf1600_output(il[121]),keccakf1600_sel_keccakf1600(il[122]),main_abs_da_rem_gas(il[123]),main_abs_l2_rem_gas(il[124]),main_alu_in_tag(il[125]),main_base_da_gas_op_cost(il[126]),main_base_l2_gas_op_cost(il[127]),main_bin_op_id(il[128]),main_call_ptr(il[129]),main_da_gas_remaining(il[130]),main_da_out_of_gas(il[131]),main_dyn_da_gas_op_cost(il[132]),main_dyn_gas_multiplier(il[133]),main_dyn_l2_gas_op_cost(il[134]),main_emit_l2_to_l1_msg_write_offset(il[135]),main_emit_note_hash_write_offset(il[136]),main_emit_nullifier_write_offset(il[137]),main_emit_unencrypted_log_write_offset(il[138]),main_ia(il[139]),main_ib(il[140]),main_ic(il[141]),main_id(il[142]),main_id_zero(il[143]),main_ind_addr_a(il[144]),main_ind_addr_b(il[145]),main_ind_addr_c(il[146]),main_ind_addr_d(il[147]),main_internal_return_ptr(il[148]),main_inv(il[149]),main_is_fake_row(il[150]),main_is_gas_accounted(il[151]),main_kernel_in_offset(il[152]),main_kernel_out_offset(il[153]),main_l1_to_l2_msg_exists_write_offset(il[154]),main_l2_gas_remaining(il[155]),main_l2_out_of_gas(il[156]),main_mem_addr_a(il[157]),main_mem_addr_b(il[158]),main_mem_addr_c(il[159]),main_mem_addr_d(il[160]),main_note_hash_exist_write_offset(il[161]),main_nullifier_exists_write_offset(il[162]),main_nullifier_non_exists_write_offset(il[163]),main_op_err(il[164]),main_opcode_val(il[165]),main_pc(il[166]),main_r_in_tag(il[167]),main_rwa(il[168]),main_rwb(il[169]),main_rwc(il[170]),main_rwd(il[171]),main_sel_alu(il[172]),main_sel_bin(il[173]),main_sel_calldata(il[174]),main_sel_execution_end(il[175]),main_sel_execution_row(il[176]),main_sel_kernel_inputs(il[177]),main_sel_kernel_out(il[178]),main_sel_mem_op_a(il[179]),main_sel_mem_op_b(il[180]),main_sel_mem_op_c(il[181]),main_sel_mem_op_d(il[182]),main_sel_mov_ia_to_ic(il[183]),main_sel_mov_ib_to_ic(il[184]),main_sel_op_add(il[185]),main_sel_op_address(il[186]),main_sel_op_and(il[187]),main_sel_op_block_number(il[188]),main_sel_op_calldata_copy(il[189]),main_sel_op_cast(il[190]),main_sel_op_chain_id(il[191]),main_sel_op_dagasleft(il[192]),main_sel_op_div(il[193]),main_sel_op_ecadd(il[194]),main_sel_op_emit_l2_to_l1_msg(il[195]),main_sel_op_emit_note_hash(il[196]),main_sel_op_emit_nullifier(il[197]),main_sel_op_emit_unencrypted_log(il[198]),main_sel_op_eq(il[199]),main_sel_op_external_call(il[200]),main_sel_op_external_return(il[201]),main_sel_op_external_revert(il[202]),main_sel_op_fdiv(il[203]),main_sel_op_fee_per_da_gas(il[204]),main_sel_op_fee_per_l2_gas(il[205]),main_sel_op_function_selector(il[206]),main_sel_op_get_contract_instance(il[207]),main_sel_op_internal_call(il[208]),main_sel_op_internal_return(il[209]),main_sel_op_is_static_call(il[210]),main_sel_op_jump(il[211]),main_sel_op_jumpi(il[212]),main_sel_op_keccak(il[213]),main_sel_op_l1_to_l2_msg_exists(il[214]),main_sel_op_l2gasleft(il[215]),main_sel_op_lt(il[216]),main_sel_op_lte(il[217]),main_sel_op_mov(il[218]),main_sel_op_msm(il[219]),main_sel_op_mul(il[220]),main_sel_op_not(il[221]),main_sel_op_note_hash_exists(il[222]),main_sel_op_nullifier_exists(il[223]),main_sel_op_or(il[224]),main_sel_op_poseidon2(il[225]),main_sel_op_radix_le(il[226]),main_sel_op_sender(il[227]),main_sel_op_set(il[228]),main_sel_op_sha256(il[229]),main_sel_op_shl(il[230]),main_sel_op_shr(il[231]),main_sel_op_sload(il[232]),main_sel_op_sstore(il[233]),main_sel_op_static_call(il[234]),main_sel_op_storage_address(il[235]),main_sel_op_sub(il[236]),main_sel_op_timestamp(il[237]),main_sel_op_transaction_fee(il[238]),main_sel_op_version(il[239]),main_sel_op_xor(il[240]),main_sel_q_kernel_lookup(il[241]),main_sel_q_kernel_output_lookup(il[242]),main_sel_resolve_ind_addr_a(il[243]),main_sel_resolve_ind_addr_b(il[244]),main_sel_resolve_ind_addr_c(il[245]),main_sel_resolve_ind_addr_d(il[246]),main_sel_returndata(il[247]),main_sel_rng_16(il[248]),main_sel_rng_8(il[249]),main_sel_slice_gadget(il[250]),main_side_effect_counter(il[251]),main_sload_write_offset(il[252]),main_space_id(il[253]),main_sstore_write_offset(il[254]),main_tag_err(il[255]),main_w_in_tag(il[256]),mem_addr(il[257]),mem_clk(il[258]),mem_diff(il[259]),mem_glob_addr(il[260]),mem_last(il[261]),mem_lastAccess(il[262]),mem_one_min_inv(il[263]),mem_r_in_tag(il[264]),mem_rw(il[265]),mem_sel_mem(il[266]),mem_sel_mov_ia_to_ic(il[267]),mem_sel_mov_ib_to_ic(il[268]),mem_sel_op_a(il[269]),mem_sel_op_b(il[270]),mem_sel_op_c(il[271]),mem_sel_op_d(il[272]),mem_sel_op_poseidon_read_a(il[273]),mem_sel_op_poseidon_read_b(il[274]),mem_sel_op_poseidon_read_c(il[275]),mem_sel_op_poseidon_read_d(il[276]),mem_sel_op_poseidon_write_a(il[277]),mem_sel_op_poseidon_write_b(il[278]),mem_sel_op_poseidon_write_c(il[279]),mem_sel_op_poseidon_write_d(il[280]),mem_sel_op_slice(il[281]),mem_sel_resolve_ind_addr_a(il[282]),mem_sel_resolve_ind_addr_b(il[283]),mem_sel_resolve_ind_addr_c(il[284]),mem_sel_resolve_ind_addr_d(il[285]),mem_sel_rng_chk(il[286]),mem_skip_check_tag(il[287]),mem_space_id(il[288]),mem_tag(il[289]),mem_tag_err(il[290]),mem_tsp(il[291]),mem_val(il[292]),mem_w_in_tag(il[293]),poseidon2_B_10_0(il[294]),poseidon2_B_10_1(il[295]),poseidon2_B_10_2(il[296]),poseidon2_B_10_3(il[297]),poseidon2_B_11_0(il[298]),poseidon2_B_11_1(il[299]),poseidon2_B_11_2(il[300]),poseidon2_B_11_3(il[301]),poseidon2_B_12_0(il[302]),poseidon2_B_12_1(il[303]),poseidon2_B_12_2(il[304]),poseidon2_B_12_3(il[305]),poseidon2_B_13_0(il[306]),poseidon2_B_13_1(il[307]),poseidon2_B_13_2(il[308]),poseidon2_B_13_3(il[309]),poseidon2_B_14_0(il[310]),poseidon2_B_14_1(il[311]),poseidon2_B_14_2(il[312]),poseidon2_B_14_3(il[313]),poseidon2_B_15_0(il[314]),poseidon2_B_15_1(il[315]),poseidon2_B_15_2(il[316]),poseidon2_B_15_3(il[317]),poseidon2_B_16_0(il[318]),poseidon2_B_16_1(il[319]),poseidon2_B_16_2(il[320]),poseidon2_B_16_3(il[321]),poseidon2_B_17_0(il[322]),poseidon2_B_17_1(il[323]),poseidon2_B_17_2(il[324]),poseidon2_B_17_3(il[325]),poseidon2_B_18_0(il[326]),poseidon2_B_18_1(il[327]),poseidon2_B_18_2(il[328]),poseidon2_B_18_3(il[329]),poseidon2_B_19_0(il[330]),poseidon2_B_19_1(il[331]),poseidon2_B_19_2(il[332]),poseidon2_B_19_3(il[333]),poseidon2_B_20_0(il[334]),poseidon2_B_20_1(il[335]),poseidon2_B_20_2(il[336]),poseidon2_B_20_3(il[337]),poseidon2_B_21_0(il[338]),poseidon2_B_21_1(il[339]),poseidon2_B_21_2(il[340]),poseidon2_B_21_3(il[341]),poseidon2_B_22_0(il[342]),poseidon2_B_22_1(il[343]),poseidon2_B_22_2(il[344]),poseidon2_B_22_3(il[345]),poseidon2_B_23_0(il[346]),poseidon2_B_23_1(il[347]),poseidon2_B_23_2(il[348]),poseidon2_B_23_3(il[349]),poseidon2_B_24_0(il[350]),poseidon2_B_24_1(il[351]),poseidon2_B_24_2(il[352]),poseidon2_B_24_3(il[353]),poseidon2_B_25_0(il[354]),poseidon2_B_25_1(il[355]),poseidon2_B_25_2(il[356]),poseidon2_B_25_3(il[357]),poseidon2_B_26_0(il[358]),poseidon2_B_26_1(il[359]),poseidon2_B_26_2(il[360]),poseidon2_B_26_3(il[361]),poseidon2_B_27_0(il[362]),poseidon2_B_27_1(il[363]),poseidon2_B_27_2(il[364]),poseidon2_B_27_3(il[365]),poseidon2_B_28_0(il[366]),poseidon2_B_28_1(il[367]),poseidon2_B_28_2(il[368]),poseidon2_B_28_3(il[369]),poseidon2_B_29_0(il[370]),poseidon2_B_29_1(il[371]),poseidon2_B_29_2(il[372]),poseidon2_B_29_3(il[373]),poseidon2_B_30_0(il[374]),poseidon2_B_30_1(il[375]),poseidon2_B_30_2(il[376]),poseidon2_B_30_3(il[377]),poseidon2_B_31_0(il[378]),poseidon2_B_31_1(il[379]),poseidon2_B_31_2(il[380]),poseidon2_B_31_3(il[381]),poseidon2_B_32_0(il[382]),poseidon2_B_32_1(il[383]),poseidon2_B_32_2(il[384]),poseidon2_B_32_3(il[385]),poseidon2_B_33_0(il[386]),poseidon2_B_33_1(il[387]),poseidon2_B_33_2(il[388]),poseidon2_B_33_3(il[389]),poseidon2_B_34_0(il[390]),poseidon2_B_34_1(il[391]),poseidon2_B_34_2(il[392]),poseidon2_B_34_3(il[393]),poseidon2_B_35_0(il[394]),poseidon2_B_35_1(il[395]),poseidon2_B_35_2(il[396]),poseidon2_B_35_3(il[397]),poseidon2_B_36_0(il[398]),poseidon2_B_36_1(il[399]),poseidon2_B_36_2(il[400]),poseidon2_B_36_3(il[401]),poseidon2_B_37_0(il[402]),poseidon2_B_37_1(il[403]),poseidon2_B_37_2(il[404]),poseidon2_B_37_3(il[405]),poseidon2_B_38_0(il[406]),poseidon2_B_38_1(il[407]),poseidon2_B_38_2(il[408]),poseidon2_B_38_3(il[409]),poseidon2_B_39_0(il[410]),poseidon2_B_39_1(il[411]),poseidon2_B_39_2(il[412]),poseidon2_B_39_3(il[413]),poseidon2_B_40_0(il[414]),poseidon2_B_40_1(il[415]),poseidon2_B_40_2(il[416]),poseidon2_B_40_3(il[417]),poseidon2_B_41_0(il[418]),poseidon2_B_41_1(il[419]),poseidon2_B_41_2(il[420]),poseidon2_B_41_3(il[421]),poseidon2_B_42_0(il[422]),poseidon2_B_42_1(il[423]),poseidon2_B_42_2(il[424]),poseidon2_B_42_3(il[425]),poseidon2_B_43_0(il[426]),poseidon2_B_43_1(il[427]),poseidon2_B_43_2(il[428]),poseidon2_B_43_3(il[429]),poseidon2_B_44_0(il[430]),poseidon2_B_44_1(il[431]),poseidon2_B_44_2(il[432]),poseidon2_B_44_3(il[433]),poseidon2_B_45_0(il[434]),poseidon2_B_45_1(il[435]),poseidon2_B_45_2(il[436]),poseidon2_B_45_3(il[437]),poseidon2_B_46_0(il[438]),poseidon2_B_46_1(il[439]),poseidon2_B_46_2(il[440]),poseidon2_B_46_3(il[441]),poseidon2_B_47_0(il[442]),poseidon2_B_47_1(il[443]),poseidon2_B_47_2(il[444]),poseidon2_B_47_3(il[445]),poseidon2_B_48_0(il[446]),poseidon2_B_48_1(il[447]),poseidon2_B_48_2(il[448]),poseidon2_B_48_3(il[449]),poseidon2_B_49_0(il[450]),poseidon2_B_49_1(il[451]),poseidon2_B_49_2(il[452]),poseidon2_B_49_3(il[453]),poseidon2_B_4_0(il[454]),poseidon2_B_4_1(il[455]),poseidon2_B_4_2(il[456]),poseidon2_B_4_3(il[457]),poseidon2_B_50_0(il[458]),poseidon2_B_50_1(il[459]),poseidon2_B_50_2(il[460]),poseidon2_B_50_3(il[461]),poseidon2_B_51_0(il[462]),poseidon2_B_51_1(il[463]),poseidon2_B_51_2(il[464]),poseidon2_B_51_3(il[465]),poseidon2_B_52_0(il[466]),poseidon2_B_52_1(il[467]),poseidon2_B_52_2(il[468]),poseidon2_B_52_3(il[469]),poseidon2_B_53_0(il[470]),poseidon2_B_53_1(il[471]),poseidon2_B_53_2(il[472]),poseidon2_B_53_3(il[473]),poseidon2_B_54_0(il[474]),poseidon2_B_54_1(il[475]),poseidon2_B_54_2(il[476]),poseidon2_B_54_3(il[477]),poseidon2_B_55_0(il[478]),poseidon2_B_55_1(il[479]),poseidon2_B_55_2(il[480]),poseidon2_B_55_3(il[481]),poseidon2_B_56_0(il[482]),poseidon2_B_56_1(il[483]),poseidon2_B_56_2(il[484]),poseidon2_B_56_3(il[485]),poseidon2_B_57_0(il[486]),poseidon2_B_57_1(il[487]),poseidon2_B_57_2(il[488]),poseidon2_B_57_3(il[489]),poseidon2_B_58_0(il[490]),poseidon2_B_58_1(il[491]),poseidon2_B_58_2(il[492]),poseidon2_B_58_3(il[493]),poseidon2_B_59_0(il[494]),poseidon2_B_59_1(il[495]),poseidon2_B_59_2(il[496]),poseidon2_B_59_3(il[497]),poseidon2_B_5_0(il[498]),poseidon2_B_5_1(il[499]),poseidon2_B_5_2(il[500]),poseidon2_B_5_3(il[501]),poseidon2_B_6_0(il[502]),poseidon2_B_6_1(il[503]),poseidon2_B_6_2(il[504]),poseidon2_B_6_3(il[505]),poseidon2_B_7_0(il[506]),poseidon2_B_7_1(il[507]),poseidon2_B_7_2(il[508]),poseidon2_B_7_3(il[509]),poseidon2_B_8_0(il[510]),poseidon2_B_8_1(il[511]),poseidon2_B_8_2(il[512]),poseidon2_B_8_3(il[513]),poseidon2_B_9_0(il[514]),poseidon2_B_9_1(il[515]),poseidon2_B_9_2(il[516]),poseidon2_B_9_3(il[517]),poseidon2_EXT_LAYER_4(il[518]),poseidon2_EXT_LAYER_5(il[519]),poseidon2_EXT_LAYER_6(il[520]),poseidon2_EXT_LAYER_7(il[521]),poseidon2_T_0_4(il[522]),poseidon2_T_0_5(il[523]),poseidon2_T_0_6(il[524]),poseidon2_T_0_7(il[525]),poseidon2_T_1_4(il[526]),poseidon2_T_1_5(il[527]),poseidon2_T_1_6(il[528]),poseidon2_T_1_7(il[529]),poseidon2_T_2_4(il[530]),poseidon2_T_2_5(il[531]),poseidon2_T_2_6(il[532]),poseidon2_T_2_7(il[533]),poseidon2_T_3_4(il[534]),poseidon2_T_3_5(il[535]),poseidon2_T_3_6(il[536]),poseidon2_T_3_7(il[537]),poseidon2_T_60_4(il[538]),poseidon2_T_60_5(il[539]),poseidon2_T_60_6(il[540]),poseidon2_T_60_7(il[541]),poseidon2_T_61_4(il[542]),poseidon2_T_61_5(il[543]),poseidon2_T_61_6(il[544]),poseidon2_T_61_7(il[545]),poseidon2_T_62_4(il[546]),poseidon2_T_62_5(il[547]),poseidon2_T_62_6(il[548]),poseidon2_T_62_7(il[549]),poseidon2_T_63_4(il[550]),poseidon2_T_63_5(il[551]),poseidon2_T_63_6(il[552]),poseidon2_T_63_7(il[553]),poseidon2_a_0(il[554]),poseidon2_a_1(il[555]),poseidon2_a_2(il[556]),poseidon2_a_3(il[557]),poseidon2_b_0(il[558]),poseidon2_b_1(il[559]),poseidon2_b_2(il[560]),poseidon2_b_3(il[561]),poseidon2_clk(il[562]),poseidon2_input_addr(il[563]),poseidon2_mem_addr_read_a(il[564]),poseidon2_mem_addr_read_b(il[565]),poseidon2_mem_addr_read_c(il[566]),poseidon2_mem_addr_read_d(il[567]),poseidon2_mem_addr_write_a(il[568]),poseidon2_mem_addr_write_b(il[569]),poseidon2_mem_addr_write_c(il[570]),poseidon2_mem_addr_write_d(il[571]),poseidon2_output_addr(il[572]),poseidon2_sel_poseidon_perm(il[573]),poseidon2_space_id(il[574]),range_check_alu_rng_chk(il[575]),range_check_clk(il[576]),range_check_cmp_hi_bits_rng_chk(il[577]),range_check_cmp_lo_bits_rng_chk(il[578]),range_check_dyn_diff(il[579]),range_check_dyn_rng_chk_bits(il[580]),range_check_dyn_rng_chk_pow_2(il[581]),range_check_gas_da_rng_chk(il[582]),range_check_gas_l2_rng_chk(il[583]),range_check_is_lte_u112(il[584]),range_check_is_lte_u128(il[585]),range_check_is_lte_u16(il[586]),range_check_is_lte_u32(il[587]),range_check_is_lte_u48(il[588]),range_check_is_lte_u64(il[589]),range_check_is_lte_u80(il[590]),range_check_is_lte_u96(il[591]),range_check_mem_rng_chk(il[592]),range_check_rng_chk_bits(il[593]),range_check_sel_lookup_0(il[594]),range_check_sel_lookup_1(il[595]),range_check_sel_lookup_2(il[596]),range_check_sel_lookup_3(il[597]),range_check_sel_lookup_4(il[598]),range_check_sel_lookup_5(il[599]),range_check_sel_lookup_6(il[600]),range_check_sel_rng_chk(il[601]),range_check_u16_r0(il[602]),range_check_u16_r1(il[603]),range_check_u16_r2(il[604]),range_check_u16_r3(il[605]),range_check_u16_r4(il[606]),range_check_u16_r5(il[607]),range_check_u16_r6(il[608]),range_check_u16_r7(il[609]),range_check_value(il[610]),sha256_clk(il[611]),sha256_input(il[612]),sha256_output(il[613]),sha256_sel_sha256_compression(il[614]),sha256_state(il[615]),slice_addr(il[616]),slice_clk(il[617]),slice_cnt(il[618]),slice_col_offset(il[619]),slice_one_min_inv(il[620]),slice_sel_cd_cpy(il[621]),slice_sel_mem_active(il[622]),slice_sel_return(il[623]),slice_sel_start(il[624]),slice_space_id(il[625]),slice_val(il[626]),lookup_rng_chk_pow_2_counts(il[627]),lookup_rng_chk_diff_counts(il[628]),lookup_rng_chk_0_counts(il[629]),lookup_rng_chk_1_counts(il[630]),lookup_rng_chk_2_counts(il[631]),lookup_rng_chk_3_counts(il[632]),lookup_rng_chk_4_counts(il[633]),lookup_rng_chk_5_counts(il[634]),lookup_rng_chk_6_counts(il[635]),lookup_rng_chk_7_counts(il[636]),lookup_pow_2_0_counts(il[637]),lookup_pow_2_1_counts(il[638]),lookup_byte_lengths_counts(il[639]),lookup_byte_operations_counts(il[640]),lookup_opcode_gas_counts(il[641]),kernel_output_lookup_counts(il[642]),lookup_into_kernel_counts(il[643]),lookup_cd_value_counts(il[644]),lookup_ret_value_counts(il[645]),incl_main_tag_err_counts(il[646]),incl_mem_tag_err_counts(il[647]),perm_rng_mem_inv(il[648]),perm_rng_cmp_lo_inv(il[649]),perm_rng_cmp_hi_inv(il[650]),perm_rng_alu_inv(il[651]),perm_cmp_alu_inv(il[652]),perm_rng_gas_l2_inv(il[653]),perm_rng_gas_da_inv(il[654]),perm_l2_start_gas_inv(il[655]),perm_da_start_gas_inv(il[656]),perm_l2_end_gas_inv(il[657]),perm_da_end_gas_inv(il[658]),perm_pos_mem_read_a_inv(il[659]),perm_pos_mem_read_b_inv(il[660]),perm_pos_mem_read_c_inv(il[661]),perm_pos_mem_read_d_inv(il[662]),perm_pos_mem_write_a_inv(il[663]),perm_pos_mem_write_b_inv(il[664]),perm_pos_mem_write_c_inv(il[665]),perm_pos_mem_write_d_inv(il[666]),perm_slice_mem_inv(il[667]),perm_main_alu_inv(il[668]),perm_main_bin_inv(il[669]),perm_main_conv_inv(il[670]),perm_main_sha256_inv(il[671]),perm_main_pos2_perm_inv(il[672]),perm_main_slice_inv(il[673]),perm_main_mem_a_inv(il[674]),perm_main_mem_b_inv(il[675]),perm_main_mem_c_inv(il[676]),perm_main_mem_d_inv(il[677]),perm_main_mem_ind_addr_a_inv(il[678]),perm_main_mem_ind_addr_b_inv(il[679]),perm_main_mem_ind_addr_c_inv(il[680]),perm_main_mem_ind_addr_d_inv(il[681]),lookup_rng_chk_pow_2_inv(il[682]),lookup_rng_chk_diff_inv(il[683]),lookup_rng_chk_0_inv(il[684]),lookup_rng_chk_1_inv(il[685]),lookup_rng_chk_2_inv(il[686]),lookup_rng_chk_3_inv(il[687]),lookup_rng_chk_4_inv(il[688]),lookup_rng_chk_5_inv(il[689]),lookup_rng_chk_6_inv(il[690]),lookup_rng_chk_7_inv(il[691]),lookup_pow_2_0_inv(il[692]),lookup_pow_2_1_inv(il[693]),lookup_byte_lengths_inv(il[694]),lookup_byte_operations_inv(il[695]),lookup_opcode_gas_inv(il[696]),kernel_output_lookup_inv(il[697]),lookup_into_kernel_inv(il[698]),lookup_cd_value_inv(il[699]),lookup_ret_value_inv(il[700]),incl_main_tag_err_inv(il[701]),incl_mem_tag_err_inv(il[702]),binary_acc_ia_shift(il[703]),binary_acc_ib_shift(il[704]),binary_acc_ic_shift(il[705]),binary_mem_tag_ctr_shift(il[706]),binary_op_id_shift(il[707]),cmp_a_hi_shift(il[708]),cmp_a_lo_shift(il[709]),cmp_b_hi_shift(il[710]),cmp_b_lo_shift(il[711]),cmp_cmp_rng_ctr_shift(il[712]),cmp_op_gt_shift(il[713]),cmp_p_sub_a_hi_shift(il[714]),cmp_p_sub_a_lo_shift(il[715]),cmp_p_sub_b_hi_shift(il[716]),cmp_p_sub_b_lo_shift(il[717]),cmp_sel_rng_chk_shift(il[718]),main_da_gas_remaining_shift(il[719]),main_emit_l2_to_l1_msg_write_offset_shift(il[720]),main_emit_note_hash_write_offset_shift(il[721]),main_emit_nullifier_write_offset_shift(il[722]),main_emit_unencrypted_log_write_offset_shift(il[723]),main_internal_return_ptr_shift(il[724]),main_l1_to_l2_msg_exists_write_offset_shift(il[725]),main_l2_gas_remaining_shift(il[726]),main_note_hash_exist_write_offset_shift(il[727]),main_nullifier_exists_write_offset_shift(il[728]),main_nullifier_non_exists_write_offset_shift(il[729]),main_pc_shift(il[730]),main_sel_execution_end_shift(il[731]),main_sel_execution_row_shift(il[732]),main_sload_write_offset_shift(il[733]),main_sstore_write_offset_shift(il[734]),mem_glob_addr_shift(il[735]),mem_rw_shift(il[736]),mem_sel_mem_shift(il[737]),mem_tag_shift(il[738]),mem_tsp_shift(il[739]),mem_val_shift(il[740]),slice_addr_shift(il[741]),slice_clk_shift(il[742]),slice_cnt_shift(il[743]),slice_col_offset_shift(il[744]),slice_sel_cd_cpy_shift(il[745]),slice_sel_mem_active_shift(il[746]),slice_sel_return_shift(il[747]),slice_sel_start_shift(il[748]),slice_space_id_shift(il[749]) + {} AvmFlavor::ProverPolynomials::ProverPolynomials(ProvingKey& proving_key) { @@ -777,762 +21,758 @@ AvmFlavor::ProverPolynomials::ProverPolynomials(ProvingKey& proving_key) AvmFlavor::AllConstRefValues AvmFlavor::ProverPolynomials::get_row(size_t row_idx) const { - return RefArray{ byte_lookup_sel_bin[row_idx], - byte_lookup_table_byte_lengths[row_idx], - byte_lookup_table_in_tags[row_idx], - byte_lookup_table_input_a[row_idx], - byte_lookup_table_input_b[row_idx], - byte_lookup_table_op_id[row_idx], - byte_lookup_table_output[row_idx], - gas_base_da_gas_fixed_table[row_idx], - gas_base_l2_gas_fixed_table[row_idx], - gas_dyn_da_gas_fixed_table[row_idx], - gas_dyn_l2_gas_fixed_table[row_idx], - gas_sel_gas_cost[row_idx], - main_clk[row_idx], - main_sel_da_end_gas_kernel_input[row_idx], - main_sel_da_start_gas_kernel_input[row_idx], - main_sel_first[row_idx], - main_sel_l2_end_gas_kernel_input[row_idx], - main_sel_l2_start_gas_kernel_input[row_idx], - main_sel_start_exec[row_idx], - main_zeroes[row_idx], - powers_power_of_2[row_idx], - main_kernel_inputs[row_idx], - main_kernel_value_out[row_idx], - main_kernel_side_effect_out[row_idx], - main_kernel_metadata_out[row_idx], - main_calldata[row_idx], - main_returndata[row_idx], - alu_a_hi[row_idx], - alu_a_lo[row_idx], - alu_b_hi[row_idx], - alu_b_lo[row_idx], - alu_b_pow[row_idx], - alu_c_hi[row_idx], - alu_c_lo[row_idx], - alu_cf[row_idx], - alu_clk[row_idx], - alu_cmp_gadget_gt[row_idx], - alu_cmp_gadget_input_a[row_idx], - alu_cmp_gadget_input_b[row_idx], - alu_cmp_gadget_result[row_idx], - alu_cmp_gadget_sel[row_idx], - alu_ff_tag[row_idx], - alu_ia[row_idx], - alu_ib[row_idx], - alu_ic[row_idx], - alu_in_tag[row_idx], - alu_max_bits_sub_b_bits[row_idx], - alu_max_bits_sub_b_pow[row_idx], - alu_op_add[row_idx], - alu_op_cast[row_idx], - alu_op_div[row_idx], - alu_op_eq[row_idx], - alu_op_lt[row_idx], - alu_op_lte[row_idx], - alu_op_mul[row_idx], - alu_op_not[row_idx], - alu_op_shl[row_idx], - alu_op_shr[row_idx], - alu_op_sub[row_idx], - alu_partial_prod_hi[row_idx], - alu_partial_prod_lo[row_idx], - alu_range_check_input_value[row_idx], - alu_range_check_num_bits[row_idx], - alu_range_check_sel[row_idx], - alu_remainder[row_idx], - alu_sel_alu[row_idx], - alu_sel_cmp[row_idx], - alu_sel_shift_which[row_idx], - alu_u128_tag[row_idx], - alu_u16_tag[row_idx], - alu_u1_tag[row_idx], - alu_u32_tag[row_idx], - alu_u64_tag[row_idx], - alu_u8_tag[row_idx], - alu_zero_shift[row_idx], - binary_acc_ia[row_idx], - binary_acc_ib[row_idx], - binary_acc_ic[row_idx], - binary_clk[row_idx], - binary_ia_bytes[row_idx], - binary_ib_bytes[row_idx], - binary_ic_bytes[row_idx], - binary_in_tag[row_idx], - binary_mem_tag_ctr[row_idx], - binary_mem_tag_ctr_inv[row_idx], - binary_op_id[row_idx], - binary_sel_bin[row_idx], - binary_start[row_idx], - cmp_a_hi[row_idx], - cmp_a_lo[row_idx], - cmp_b_hi[row_idx], - cmp_b_lo[row_idx], - cmp_borrow[row_idx], - cmp_clk[row_idx], - cmp_cmp_rng_ctr[row_idx], - cmp_input_a[row_idx], - cmp_input_b[row_idx], - cmp_op_eq[row_idx], - cmp_op_eq_diff_inv[row_idx], - cmp_op_gt[row_idx], - cmp_p_a_borrow[row_idx], - cmp_p_b_borrow[row_idx], - cmp_p_sub_a_hi[row_idx], - cmp_p_sub_a_lo[row_idx], - cmp_p_sub_b_hi[row_idx], - cmp_p_sub_b_lo[row_idx], - cmp_range_chk_clk[row_idx], - cmp_res_hi[row_idx], - cmp_res_lo[row_idx], - cmp_result[row_idx], - cmp_sel_cmp[row_idx], - cmp_sel_rng_chk[row_idx], - cmp_shift_sel[row_idx], - conversion_clk[row_idx], - conversion_input[row_idx], - conversion_num_limbs[row_idx], - conversion_output_bits[row_idx], - conversion_radix[row_idx], - conversion_sel_to_radix_le[row_idx], - keccakf1600_clk[row_idx], - keccakf1600_input[row_idx], - keccakf1600_output[row_idx], - keccakf1600_sel_keccakf1600[row_idx], - main_abs_da_rem_gas[row_idx], - main_abs_l2_rem_gas[row_idx], - main_alu_in_tag[row_idx], - main_base_da_gas_op_cost[row_idx], - main_base_l2_gas_op_cost[row_idx], - main_bin_op_id[row_idx], - main_call_ptr[row_idx], - main_da_gas_remaining[row_idx], - main_da_out_of_gas[row_idx], - main_dyn_da_gas_op_cost[row_idx], - main_dyn_gas_multiplier[row_idx], - main_dyn_l2_gas_op_cost[row_idx], - main_emit_l2_to_l1_msg_write_offset[row_idx], - main_emit_note_hash_write_offset[row_idx], - main_emit_nullifier_write_offset[row_idx], - main_emit_unencrypted_log_write_offset[row_idx], - main_ia[row_idx], - main_ib[row_idx], - main_ic[row_idx], - main_id[row_idx], - main_id_zero[row_idx], - main_ind_addr_a[row_idx], - main_ind_addr_b[row_idx], - main_ind_addr_c[row_idx], - main_ind_addr_d[row_idx], - main_internal_return_ptr[row_idx], - main_inv[row_idx], - main_is_fake_row[row_idx], - main_is_gas_accounted[row_idx], - main_kernel_in_offset[row_idx], - main_kernel_out_offset[row_idx], - main_l1_to_l2_msg_exists_write_offset[row_idx], - main_l2_gas_remaining[row_idx], - main_l2_out_of_gas[row_idx], - main_mem_addr_a[row_idx], - main_mem_addr_b[row_idx], - main_mem_addr_c[row_idx], - main_mem_addr_d[row_idx], - main_note_hash_exist_write_offset[row_idx], - main_nullifier_exists_write_offset[row_idx], - main_nullifier_non_exists_write_offset[row_idx], - main_op_err[row_idx], - main_opcode_val[row_idx], - main_pc[row_idx], - main_r_in_tag[row_idx], - main_rwa[row_idx], - main_rwb[row_idx], - main_rwc[row_idx], - main_rwd[row_idx], - main_sel_alu[row_idx], - main_sel_bin[row_idx], - main_sel_calldata[row_idx], - main_sel_execution_end[row_idx], - main_sel_execution_row[row_idx], - main_sel_kernel_inputs[row_idx], - main_sel_kernel_out[row_idx], - main_sel_mem_op_a[row_idx], - main_sel_mem_op_b[row_idx], - main_sel_mem_op_c[row_idx], - main_sel_mem_op_d[row_idx], - main_sel_mov_ia_to_ic[row_idx], - main_sel_mov_ib_to_ic[row_idx], - main_sel_op_add[row_idx], - main_sel_op_address[row_idx], - main_sel_op_and[row_idx], - main_sel_op_block_number[row_idx], - main_sel_op_calldata_copy[row_idx], - main_sel_op_cast[row_idx], - main_sel_op_chain_id[row_idx], - main_sel_op_dagasleft[row_idx], - main_sel_op_div[row_idx], - main_sel_op_ecadd[row_idx], - main_sel_op_emit_l2_to_l1_msg[row_idx], - main_sel_op_emit_note_hash[row_idx], - main_sel_op_emit_nullifier[row_idx], - main_sel_op_emit_unencrypted_log[row_idx], - main_sel_op_eq[row_idx], - main_sel_op_external_call[row_idx], - main_sel_op_external_return[row_idx], - main_sel_op_external_revert[row_idx], - main_sel_op_fdiv[row_idx], - main_sel_op_fee_per_da_gas[row_idx], - main_sel_op_fee_per_l2_gas[row_idx], - main_sel_op_function_selector[row_idx], - main_sel_op_get_contract_instance[row_idx], - main_sel_op_internal_call[row_idx], - main_sel_op_internal_return[row_idx], - main_sel_op_is_static_call[row_idx], - main_sel_op_jump[row_idx], - main_sel_op_jumpi[row_idx], - main_sel_op_keccak[row_idx], - main_sel_op_l1_to_l2_msg_exists[row_idx], - main_sel_op_l2gasleft[row_idx], - main_sel_op_lt[row_idx], - main_sel_op_lte[row_idx], - main_sel_op_mov[row_idx], - main_sel_op_msm[row_idx], - main_sel_op_mul[row_idx], - main_sel_op_not[row_idx], - main_sel_op_note_hash_exists[row_idx], - main_sel_op_nullifier_exists[row_idx], - main_sel_op_or[row_idx], - main_sel_op_pedersen[row_idx], - main_sel_op_pedersen_commit[row_idx], - main_sel_op_poseidon2[row_idx], - main_sel_op_radix_le[row_idx], - main_sel_op_sender[row_idx], - main_sel_op_set[row_idx], - main_sel_op_sha256[row_idx], - main_sel_op_shl[row_idx], - main_sel_op_shr[row_idx], - main_sel_op_sload[row_idx], - main_sel_op_sstore[row_idx], - main_sel_op_static_call[row_idx], - main_sel_op_storage_address[row_idx], - main_sel_op_sub[row_idx], - main_sel_op_timestamp[row_idx], - main_sel_op_transaction_fee[row_idx], - main_sel_op_version[row_idx], - main_sel_op_xor[row_idx], - main_sel_q_kernel_lookup[row_idx], - main_sel_q_kernel_output_lookup[row_idx], - main_sel_resolve_ind_addr_a[row_idx], - main_sel_resolve_ind_addr_b[row_idx], - main_sel_resolve_ind_addr_c[row_idx], - main_sel_resolve_ind_addr_d[row_idx], - main_sel_returndata[row_idx], - main_sel_rng_16[row_idx], - main_sel_rng_8[row_idx], - main_sel_slice_gadget[row_idx], - main_side_effect_counter[row_idx], - main_sload_write_offset[row_idx], - main_space_id[row_idx], - main_sstore_write_offset[row_idx], - main_tag_err[row_idx], - main_w_in_tag[row_idx], - mem_addr[row_idx], - mem_clk[row_idx], - mem_diff[row_idx], - mem_glob_addr[row_idx], - mem_last[row_idx], - mem_lastAccess[row_idx], - mem_one_min_inv[row_idx], - mem_r_in_tag[row_idx], - mem_rw[row_idx], - mem_sel_mem[row_idx], - mem_sel_mov_ia_to_ic[row_idx], - mem_sel_mov_ib_to_ic[row_idx], - mem_sel_op_a[row_idx], - mem_sel_op_b[row_idx], - mem_sel_op_c[row_idx], - mem_sel_op_d[row_idx], - mem_sel_op_poseidon_read_a[row_idx], - mem_sel_op_poseidon_read_b[row_idx], - mem_sel_op_poseidon_read_c[row_idx], - mem_sel_op_poseidon_read_d[row_idx], - mem_sel_op_poseidon_write_a[row_idx], - mem_sel_op_poseidon_write_b[row_idx], - mem_sel_op_poseidon_write_c[row_idx], - mem_sel_op_poseidon_write_d[row_idx], - mem_sel_op_slice[row_idx], - mem_sel_resolve_ind_addr_a[row_idx], - mem_sel_resolve_ind_addr_b[row_idx], - mem_sel_resolve_ind_addr_c[row_idx], - mem_sel_resolve_ind_addr_d[row_idx], - mem_sel_rng_chk[row_idx], - mem_skip_check_tag[row_idx], - mem_space_id[row_idx], - mem_tag[row_idx], - mem_tag_err[row_idx], - mem_tsp[row_idx], - mem_val[row_idx], - mem_w_in_tag[row_idx], - pedersen_clk[row_idx], - pedersen_input[row_idx], - pedersen_output[row_idx], - pedersen_sel_pedersen[row_idx], - poseidon2_B_10_0[row_idx], - poseidon2_B_10_1[row_idx], - poseidon2_B_10_2[row_idx], - poseidon2_B_10_3[row_idx], - poseidon2_B_11_0[row_idx], - poseidon2_B_11_1[row_idx], - poseidon2_B_11_2[row_idx], - poseidon2_B_11_3[row_idx], - poseidon2_B_12_0[row_idx], - poseidon2_B_12_1[row_idx], - poseidon2_B_12_2[row_idx], - poseidon2_B_12_3[row_idx], - poseidon2_B_13_0[row_idx], - poseidon2_B_13_1[row_idx], - poseidon2_B_13_2[row_idx], - poseidon2_B_13_3[row_idx], - poseidon2_B_14_0[row_idx], - poseidon2_B_14_1[row_idx], - poseidon2_B_14_2[row_idx], - poseidon2_B_14_3[row_idx], - poseidon2_B_15_0[row_idx], - poseidon2_B_15_1[row_idx], - poseidon2_B_15_2[row_idx], - poseidon2_B_15_3[row_idx], - poseidon2_B_16_0[row_idx], - poseidon2_B_16_1[row_idx], - poseidon2_B_16_2[row_idx], - poseidon2_B_16_3[row_idx], - poseidon2_B_17_0[row_idx], - poseidon2_B_17_1[row_idx], - poseidon2_B_17_2[row_idx], - poseidon2_B_17_3[row_idx], - poseidon2_B_18_0[row_idx], - poseidon2_B_18_1[row_idx], - poseidon2_B_18_2[row_idx], - poseidon2_B_18_3[row_idx], - poseidon2_B_19_0[row_idx], - poseidon2_B_19_1[row_idx], - poseidon2_B_19_2[row_idx], - poseidon2_B_19_3[row_idx], - poseidon2_B_20_0[row_idx], - poseidon2_B_20_1[row_idx], - poseidon2_B_20_2[row_idx], - poseidon2_B_20_3[row_idx], - poseidon2_B_21_0[row_idx], - poseidon2_B_21_1[row_idx], - poseidon2_B_21_2[row_idx], - poseidon2_B_21_3[row_idx], - poseidon2_B_22_0[row_idx], - poseidon2_B_22_1[row_idx], - poseidon2_B_22_2[row_idx], - poseidon2_B_22_3[row_idx], - poseidon2_B_23_0[row_idx], - poseidon2_B_23_1[row_idx], - poseidon2_B_23_2[row_idx], - poseidon2_B_23_3[row_idx], - poseidon2_B_24_0[row_idx], - poseidon2_B_24_1[row_idx], - poseidon2_B_24_2[row_idx], - poseidon2_B_24_3[row_idx], - poseidon2_B_25_0[row_idx], - poseidon2_B_25_1[row_idx], - poseidon2_B_25_2[row_idx], - poseidon2_B_25_3[row_idx], - poseidon2_B_26_0[row_idx], - poseidon2_B_26_1[row_idx], - poseidon2_B_26_2[row_idx], - poseidon2_B_26_3[row_idx], - poseidon2_B_27_0[row_idx], - poseidon2_B_27_1[row_idx], - poseidon2_B_27_2[row_idx], - poseidon2_B_27_3[row_idx], - poseidon2_B_28_0[row_idx], - poseidon2_B_28_1[row_idx], - poseidon2_B_28_2[row_idx], - poseidon2_B_28_3[row_idx], - poseidon2_B_29_0[row_idx], - poseidon2_B_29_1[row_idx], - poseidon2_B_29_2[row_idx], - poseidon2_B_29_3[row_idx], - poseidon2_B_30_0[row_idx], - poseidon2_B_30_1[row_idx], - poseidon2_B_30_2[row_idx], - poseidon2_B_30_3[row_idx], - poseidon2_B_31_0[row_idx], - poseidon2_B_31_1[row_idx], - poseidon2_B_31_2[row_idx], - poseidon2_B_31_3[row_idx], - poseidon2_B_32_0[row_idx], - poseidon2_B_32_1[row_idx], - poseidon2_B_32_2[row_idx], - poseidon2_B_32_3[row_idx], - poseidon2_B_33_0[row_idx], - poseidon2_B_33_1[row_idx], - poseidon2_B_33_2[row_idx], - poseidon2_B_33_3[row_idx], - poseidon2_B_34_0[row_idx], - poseidon2_B_34_1[row_idx], - poseidon2_B_34_2[row_idx], - poseidon2_B_34_3[row_idx], - poseidon2_B_35_0[row_idx], - poseidon2_B_35_1[row_idx], - poseidon2_B_35_2[row_idx], - poseidon2_B_35_3[row_idx], - poseidon2_B_36_0[row_idx], - poseidon2_B_36_1[row_idx], - poseidon2_B_36_2[row_idx], - poseidon2_B_36_3[row_idx], - poseidon2_B_37_0[row_idx], - poseidon2_B_37_1[row_idx], - poseidon2_B_37_2[row_idx], - poseidon2_B_37_3[row_idx], - poseidon2_B_38_0[row_idx], - poseidon2_B_38_1[row_idx], - poseidon2_B_38_2[row_idx], - poseidon2_B_38_3[row_idx], - poseidon2_B_39_0[row_idx], - poseidon2_B_39_1[row_idx], - poseidon2_B_39_2[row_idx], - poseidon2_B_39_3[row_idx], - poseidon2_B_40_0[row_idx], - poseidon2_B_40_1[row_idx], - poseidon2_B_40_2[row_idx], - poseidon2_B_40_3[row_idx], - poseidon2_B_41_0[row_idx], - poseidon2_B_41_1[row_idx], - poseidon2_B_41_2[row_idx], - poseidon2_B_41_3[row_idx], - poseidon2_B_42_0[row_idx], - poseidon2_B_42_1[row_idx], - poseidon2_B_42_2[row_idx], - poseidon2_B_42_3[row_idx], - poseidon2_B_43_0[row_idx], - poseidon2_B_43_1[row_idx], - poseidon2_B_43_2[row_idx], - poseidon2_B_43_3[row_idx], - poseidon2_B_44_0[row_idx], - poseidon2_B_44_1[row_idx], - poseidon2_B_44_2[row_idx], - poseidon2_B_44_3[row_idx], - poseidon2_B_45_0[row_idx], - poseidon2_B_45_1[row_idx], - poseidon2_B_45_2[row_idx], - poseidon2_B_45_3[row_idx], - poseidon2_B_46_0[row_idx], - poseidon2_B_46_1[row_idx], - poseidon2_B_46_2[row_idx], - poseidon2_B_46_3[row_idx], - poseidon2_B_47_0[row_idx], - poseidon2_B_47_1[row_idx], - poseidon2_B_47_2[row_idx], - poseidon2_B_47_3[row_idx], - poseidon2_B_48_0[row_idx], - poseidon2_B_48_1[row_idx], - poseidon2_B_48_2[row_idx], - poseidon2_B_48_3[row_idx], - poseidon2_B_49_0[row_idx], - poseidon2_B_49_1[row_idx], - poseidon2_B_49_2[row_idx], - poseidon2_B_49_3[row_idx], - poseidon2_B_4_0[row_idx], - poseidon2_B_4_1[row_idx], - poseidon2_B_4_2[row_idx], - poseidon2_B_4_3[row_idx], - poseidon2_B_50_0[row_idx], - poseidon2_B_50_1[row_idx], - poseidon2_B_50_2[row_idx], - poseidon2_B_50_3[row_idx], - poseidon2_B_51_0[row_idx], - poseidon2_B_51_1[row_idx], - poseidon2_B_51_2[row_idx], - poseidon2_B_51_3[row_idx], - poseidon2_B_52_0[row_idx], - poseidon2_B_52_1[row_idx], - poseidon2_B_52_2[row_idx], - poseidon2_B_52_3[row_idx], - poseidon2_B_53_0[row_idx], - poseidon2_B_53_1[row_idx], - poseidon2_B_53_2[row_idx], - poseidon2_B_53_3[row_idx], - poseidon2_B_54_0[row_idx], - poseidon2_B_54_1[row_idx], - poseidon2_B_54_2[row_idx], - poseidon2_B_54_3[row_idx], - poseidon2_B_55_0[row_idx], - poseidon2_B_55_1[row_idx], - poseidon2_B_55_2[row_idx], - poseidon2_B_55_3[row_idx], - poseidon2_B_56_0[row_idx], - poseidon2_B_56_1[row_idx], - poseidon2_B_56_2[row_idx], - poseidon2_B_56_3[row_idx], - poseidon2_B_57_0[row_idx], - poseidon2_B_57_1[row_idx], - poseidon2_B_57_2[row_idx], - poseidon2_B_57_3[row_idx], - poseidon2_B_58_0[row_idx], - poseidon2_B_58_1[row_idx], - poseidon2_B_58_2[row_idx], - poseidon2_B_58_3[row_idx], - poseidon2_B_59_0[row_idx], - poseidon2_B_59_1[row_idx], - poseidon2_B_59_2[row_idx], - poseidon2_B_59_3[row_idx], - poseidon2_B_5_0[row_idx], - poseidon2_B_5_1[row_idx], - poseidon2_B_5_2[row_idx], - poseidon2_B_5_3[row_idx], - poseidon2_B_6_0[row_idx], - poseidon2_B_6_1[row_idx], - poseidon2_B_6_2[row_idx], - poseidon2_B_6_3[row_idx], - poseidon2_B_7_0[row_idx], - poseidon2_B_7_1[row_idx], - poseidon2_B_7_2[row_idx], - poseidon2_B_7_3[row_idx], - poseidon2_B_8_0[row_idx], - poseidon2_B_8_1[row_idx], - poseidon2_B_8_2[row_idx], - poseidon2_B_8_3[row_idx], - poseidon2_B_9_0[row_idx], - poseidon2_B_9_1[row_idx], - poseidon2_B_9_2[row_idx], - poseidon2_B_9_3[row_idx], - poseidon2_EXT_LAYER_4[row_idx], - poseidon2_EXT_LAYER_5[row_idx], - poseidon2_EXT_LAYER_6[row_idx], - poseidon2_EXT_LAYER_7[row_idx], - poseidon2_T_0_4[row_idx], - poseidon2_T_0_5[row_idx], - poseidon2_T_0_6[row_idx], - poseidon2_T_0_7[row_idx], - poseidon2_T_1_4[row_idx], - poseidon2_T_1_5[row_idx], - poseidon2_T_1_6[row_idx], - poseidon2_T_1_7[row_idx], - poseidon2_T_2_4[row_idx], - poseidon2_T_2_5[row_idx], - poseidon2_T_2_6[row_idx], - poseidon2_T_2_7[row_idx], - poseidon2_T_3_4[row_idx], - poseidon2_T_3_5[row_idx], - poseidon2_T_3_6[row_idx], - poseidon2_T_3_7[row_idx], - poseidon2_T_60_4[row_idx], - poseidon2_T_60_5[row_idx], - poseidon2_T_60_6[row_idx], - poseidon2_T_60_7[row_idx], - poseidon2_T_61_4[row_idx], - poseidon2_T_61_5[row_idx], - poseidon2_T_61_6[row_idx], - poseidon2_T_61_7[row_idx], - poseidon2_T_62_4[row_idx], - poseidon2_T_62_5[row_idx], - poseidon2_T_62_6[row_idx], - poseidon2_T_62_7[row_idx], - poseidon2_T_63_4[row_idx], - poseidon2_T_63_5[row_idx], - poseidon2_T_63_6[row_idx], - poseidon2_T_63_7[row_idx], - poseidon2_a_0[row_idx], - poseidon2_a_1[row_idx], - poseidon2_a_2[row_idx], - poseidon2_a_3[row_idx], - poseidon2_b_0[row_idx], - poseidon2_b_1[row_idx], - poseidon2_b_2[row_idx], - poseidon2_b_3[row_idx], - poseidon2_clk[row_idx], - poseidon2_input_addr[row_idx], - poseidon2_mem_addr_read_a[row_idx], - poseidon2_mem_addr_read_b[row_idx], - poseidon2_mem_addr_read_c[row_idx], - poseidon2_mem_addr_read_d[row_idx], - poseidon2_mem_addr_write_a[row_idx], - poseidon2_mem_addr_write_b[row_idx], - poseidon2_mem_addr_write_c[row_idx], - poseidon2_mem_addr_write_d[row_idx], - poseidon2_output_addr[row_idx], - poseidon2_sel_poseidon_perm[row_idx], - poseidon2_space_id[row_idx], - range_check_alu_rng_chk[row_idx], - range_check_clk[row_idx], - range_check_cmp_hi_bits_rng_chk[row_idx], - range_check_cmp_lo_bits_rng_chk[row_idx], - range_check_dyn_diff[row_idx], - range_check_dyn_rng_chk_bits[row_idx], - range_check_dyn_rng_chk_pow_2[row_idx], - range_check_gas_da_rng_chk[row_idx], - range_check_gas_l2_rng_chk[row_idx], - range_check_is_lte_u112[row_idx], - range_check_is_lte_u128[row_idx], - range_check_is_lte_u16[row_idx], - range_check_is_lte_u32[row_idx], - range_check_is_lte_u48[row_idx], - range_check_is_lte_u64[row_idx], - range_check_is_lte_u80[row_idx], - range_check_is_lte_u96[row_idx], - range_check_mem_rng_chk[row_idx], - range_check_rng_chk_bits[row_idx], - range_check_sel_lookup_0[row_idx], - range_check_sel_lookup_1[row_idx], - range_check_sel_lookup_2[row_idx], - range_check_sel_lookup_3[row_idx], - range_check_sel_lookup_4[row_idx], - range_check_sel_lookup_5[row_idx], - range_check_sel_lookup_6[row_idx], - range_check_sel_rng_chk[row_idx], - range_check_u16_r0[row_idx], - range_check_u16_r1[row_idx], - range_check_u16_r2[row_idx], - range_check_u16_r3[row_idx], - range_check_u16_r4[row_idx], - range_check_u16_r5[row_idx], - range_check_u16_r6[row_idx], - range_check_u16_r7[row_idx], - range_check_value[row_idx], - sha256_clk[row_idx], - sha256_input[row_idx], - sha256_output[row_idx], - sha256_sel_sha256_compression[row_idx], - sha256_state[row_idx], - slice_addr[row_idx], - slice_clk[row_idx], - slice_cnt[row_idx], - slice_col_offset[row_idx], - slice_one_min_inv[row_idx], - slice_sel_cd_cpy[row_idx], - slice_sel_mem_active[row_idx], - slice_sel_return[row_idx], - slice_sel_start[row_idx], - slice_space_id[row_idx], - slice_val[row_idx], - lookup_rng_chk_pow_2_counts[row_idx], - lookup_rng_chk_diff_counts[row_idx], - lookup_rng_chk_0_counts[row_idx], - lookup_rng_chk_1_counts[row_idx], - lookup_rng_chk_2_counts[row_idx], - lookup_rng_chk_3_counts[row_idx], - lookup_rng_chk_4_counts[row_idx], - lookup_rng_chk_5_counts[row_idx], - lookup_rng_chk_6_counts[row_idx], - lookup_rng_chk_7_counts[row_idx], - lookup_pow_2_0_counts[row_idx], - lookup_pow_2_1_counts[row_idx], - lookup_byte_lengths_counts[row_idx], - lookup_byte_operations_counts[row_idx], - lookup_opcode_gas_counts[row_idx], - kernel_output_lookup_counts[row_idx], - lookup_into_kernel_counts[row_idx], - lookup_cd_value_counts[row_idx], - lookup_ret_value_counts[row_idx], - incl_main_tag_err_counts[row_idx], - incl_mem_tag_err_counts[row_idx], - perm_rng_mem_inv[row_idx], - perm_rng_cmp_lo_inv[row_idx], - perm_rng_cmp_hi_inv[row_idx], - perm_rng_alu_inv[row_idx], - perm_cmp_alu_inv[row_idx], - perm_rng_gas_l2_inv[row_idx], - perm_rng_gas_da_inv[row_idx], - perm_l2_start_gas_inv[row_idx], - perm_da_start_gas_inv[row_idx], - perm_l2_end_gas_inv[row_idx], - perm_da_end_gas_inv[row_idx], - perm_pos_mem_read_a_inv[row_idx], - perm_pos_mem_read_b_inv[row_idx], - perm_pos_mem_read_c_inv[row_idx], - perm_pos_mem_read_d_inv[row_idx], - perm_pos_mem_write_a_inv[row_idx], - perm_pos_mem_write_b_inv[row_idx], - perm_pos_mem_write_c_inv[row_idx], - perm_pos_mem_write_d_inv[row_idx], - perm_slice_mem_inv[row_idx], - perm_main_alu_inv[row_idx], - perm_main_bin_inv[row_idx], - perm_main_conv_inv[row_idx], - perm_main_pos2_perm_inv[row_idx], - perm_main_pedersen_inv[row_idx], - perm_main_slice_inv[row_idx], - perm_main_mem_a_inv[row_idx], - perm_main_mem_b_inv[row_idx], - perm_main_mem_c_inv[row_idx], - perm_main_mem_d_inv[row_idx], - perm_main_mem_ind_addr_a_inv[row_idx], - perm_main_mem_ind_addr_b_inv[row_idx], - perm_main_mem_ind_addr_c_inv[row_idx], - perm_main_mem_ind_addr_d_inv[row_idx], - lookup_rng_chk_pow_2_inv[row_idx], - lookup_rng_chk_diff_inv[row_idx], - lookup_rng_chk_0_inv[row_idx], - lookup_rng_chk_1_inv[row_idx], - lookup_rng_chk_2_inv[row_idx], - lookup_rng_chk_3_inv[row_idx], - lookup_rng_chk_4_inv[row_idx], - lookup_rng_chk_5_inv[row_idx], - lookup_rng_chk_6_inv[row_idx], - lookup_rng_chk_7_inv[row_idx], - lookup_pow_2_0_inv[row_idx], - lookup_pow_2_1_inv[row_idx], - lookup_byte_lengths_inv[row_idx], - lookup_byte_operations_inv[row_idx], - lookup_opcode_gas_inv[row_idx], - kernel_output_lookup_inv[row_idx], - lookup_into_kernel_inv[row_idx], - lookup_cd_value_inv[row_idx], - lookup_ret_value_inv[row_idx], - incl_main_tag_err_inv[row_idx], - incl_mem_tag_err_inv[row_idx], - binary_acc_ia_shift[row_idx], - binary_acc_ib_shift[row_idx], - binary_acc_ic_shift[row_idx], - binary_mem_tag_ctr_shift[row_idx], - binary_op_id_shift[row_idx], - cmp_a_hi_shift[row_idx], - cmp_a_lo_shift[row_idx], - cmp_b_hi_shift[row_idx], - cmp_b_lo_shift[row_idx], - cmp_cmp_rng_ctr_shift[row_idx], - cmp_op_gt_shift[row_idx], - cmp_p_sub_a_hi_shift[row_idx], - cmp_p_sub_a_lo_shift[row_idx], - cmp_p_sub_b_hi_shift[row_idx], - cmp_p_sub_b_lo_shift[row_idx], - cmp_sel_rng_chk_shift[row_idx], - main_da_gas_remaining_shift[row_idx], - main_emit_l2_to_l1_msg_write_offset_shift[row_idx], - main_emit_note_hash_write_offset_shift[row_idx], - main_emit_nullifier_write_offset_shift[row_idx], - main_emit_unencrypted_log_write_offset_shift[row_idx], - main_internal_return_ptr_shift[row_idx], - main_l1_to_l2_msg_exists_write_offset_shift[row_idx], - main_l2_gas_remaining_shift[row_idx], - main_note_hash_exist_write_offset_shift[row_idx], - main_nullifier_exists_write_offset_shift[row_idx], - main_nullifier_non_exists_write_offset_shift[row_idx], - main_pc_shift[row_idx], - main_sel_execution_end_shift[row_idx], - main_sel_execution_row_shift[row_idx], - main_sload_write_offset_shift[row_idx], - main_sstore_write_offset_shift[row_idx], - mem_glob_addr_shift[row_idx], - mem_rw_shift[row_idx], - mem_sel_mem_shift[row_idx], - mem_tag_shift[row_idx], - mem_tsp_shift[row_idx], - mem_val_shift[row_idx], - slice_addr_shift[row_idx], - slice_clk_shift[row_idx], - slice_cnt_shift[row_idx], - slice_col_offset_shift[row_idx], - slice_sel_cd_cpy_shift[row_idx], - slice_sel_mem_active_shift[row_idx], - slice_sel_return_shift[row_idx], - slice_sel_start_shift[row_idx], - slice_space_id_shift[row_idx] }; + return RefArray{ + byte_lookup_sel_bin[row_idx], + byte_lookup_table_byte_lengths[row_idx], + byte_lookup_table_in_tags[row_idx], + byte_lookup_table_input_a[row_idx], + byte_lookup_table_input_b[row_idx], + byte_lookup_table_op_id[row_idx], + byte_lookup_table_output[row_idx], + gas_base_da_gas_fixed_table[row_idx], + gas_base_l2_gas_fixed_table[row_idx], + gas_dyn_da_gas_fixed_table[row_idx], + gas_dyn_l2_gas_fixed_table[row_idx], + gas_sel_gas_cost[row_idx], + main_clk[row_idx], + main_sel_da_end_gas_kernel_input[row_idx], + main_sel_da_start_gas_kernel_input[row_idx], + main_sel_first[row_idx], + main_sel_l2_end_gas_kernel_input[row_idx], + main_sel_l2_start_gas_kernel_input[row_idx], + main_sel_start_exec[row_idx], + main_zeroes[row_idx], + powers_power_of_2[row_idx], + main_kernel_inputs[row_idx], + main_kernel_value_out[row_idx], + main_kernel_side_effect_out[row_idx], + main_kernel_metadata_out[row_idx], + main_calldata[row_idx], + main_returndata[row_idx], + alu_a_hi[row_idx], + alu_a_lo[row_idx], + alu_b_hi[row_idx], + alu_b_lo[row_idx], + alu_b_pow[row_idx], + alu_c_hi[row_idx], + alu_c_lo[row_idx], + alu_cf[row_idx], + alu_clk[row_idx], + alu_cmp_gadget_gt[row_idx], + alu_cmp_gadget_input_a[row_idx], + alu_cmp_gadget_input_b[row_idx], + alu_cmp_gadget_result[row_idx], + alu_cmp_gadget_sel[row_idx], + alu_ff_tag[row_idx], + alu_ia[row_idx], + alu_ib[row_idx], + alu_ic[row_idx], + alu_in_tag[row_idx], + alu_max_bits_sub_b_bits[row_idx], + alu_max_bits_sub_b_pow[row_idx], + alu_op_add[row_idx], + alu_op_cast[row_idx], + alu_op_div[row_idx], + alu_op_eq[row_idx], + alu_op_lt[row_idx], + alu_op_lte[row_idx], + alu_op_mul[row_idx], + alu_op_not[row_idx], + alu_op_shl[row_idx], + alu_op_shr[row_idx], + alu_op_sub[row_idx], + alu_partial_prod_hi[row_idx], + alu_partial_prod_lo[row_idx], + alu_range_check_input_value[row_idx], + alu_range_check_num_bits[row_idx], + alu_range_check_sel[row_idx], + alu_remainder[row_idx], + alu_sel_alu[row_idx], + alu_sel_cmp[row_idx], + alu_sel_shift_which[row_idx], + alu_u128_tag[row_idx], + alu_u16_tag[row_idx], + alu_u1_tag[row_idx], + alu_u32_tag[row_idx], + alu_u64_tag[row_idx], + alu_u8_tag[row_idx], + alu_zero_shift[row_idx], + binary_acc_ia[row_idx], + binary_acc_ib[row_idx], + binary_acc_ic[row_idx], + binary_clk[row_idx], + binary_ia_bytes[row_idx], + binary_ib_bytes[row_idx], + binary_ic_bytes[row_idx], + binary_in_tag[row_idx], + binary_mem_tag_ctr[row_idx], + binary_mem_tag_ctr_inv[row_idx], + binary_op_id[row_idx], + binary_sel_bin[row_idx], + binary_start[row_idx], + cmp_a_hi[row_idx], + cmp_a_lo[row_idx], + cmp_b_hi[row_idx], + cmp_b_lo[row_idx], + cmp_borrow[row_idx], + cmp_clk[row_idx], + cmp_cmp_rng_ctr[row_idx], + cmp_input_a[row_idx], + cmp_input_b[row_idx], + cmp_op_eq[row_idx], + cmp_op_eq_diff_inv[row_idx], + cmp_op_gt[row_idx], + cmp_p_a_borrow[row_idx], + cmp_p_b_borrow[row_idx], + cmp_p_sub_a_hi[row_idx], + cmp_p_sub_a_lo[row_idx], + cmp_p_sub_b_hi[row_idx], + cmp_p_sub_b_lo[row_idx], + cmp_range_chk_clk[row_idx], + cmp_res_hi[row_idx], + cmp_res_lo[row_idx], + cmp_result[row_idx], + cmp_sel_cmp[row_idx], + cmp_sel_rng_chk[row_idx], + cmp_shift_sel[row_idx], + conversion_clk[row_idx], + conversion_input[row_idx], + conversion_num_limbs[row_idx], + conversion_output_bits[row_idx], + conversion_radix[row_idx], + conversion_sel_to_radix_le[row_idx], + keccakf1600_clk[row_idx], + keccakf1600_input[row_idx], + keccakf1600_output[row_idx], + keccakf1600_sel_keccakf1600[row_idx], + main_abs_da_rem_gas[row_idx], + main_abs_l2_rem_gas[row_idx], + main_alu_in_tag[row_idx], + main_base_da_gas_op_cost[row_idx], + main_base_l2_gas_op_cost[row_idx], + main_bin_op_id[row_idx], + main_call_ptr[row_idx], + main_da_gas_remaining[row_idx], + main_da_out_of_gas[row_idx], + main_dyn_da_gas_op_cost[row_idx], + main_dyn_gas_multiplier[row_idx], + main_dyn_l2_gas_op_cost[row_idx], + main_emit_l2_to_l1_msg_write_offset[row_idx], + main_emit_note_hash_write_offset[row_idx], + main_emit_nullifier_write_offset[row_idx], + main_emit_unencrypted_log_write_offset[row_idx], + main_ia[row_idx], + main_ib[row_idx], + main_ic[row_idx], + main_id[row_idx], + main_id_zero[row_idx], + main_ind_addr_a[row_idx], + main_ind_addr_b[row_idx], + main_ind_addr_c[row_idx], + main_ind_addr_d[row_idx], + main_internal_return_ptr[row_idx], + main_inv[row_idx], + main_is_fake_row[row_idx], + main_is_gas_accounted[row_idx], + main_kernel_in_offset[row_idx], + main_kernel_out_offset[row_idx], + main_l1_to_l2_msg_exists_write_offset[row_idx], + main_l2_gas_remaining[row_idx], + main_l2_out_of_gas[row_idx], + main_mem_addr_a[row_idx], + main_mem_addr_b[row_idx], + main_mem_addr_c[row_idx], + main_mem_addr_d[row_idx], + main_note_hash_exist_write_offset[row_idx], + main_nullifier_exists_write_offset[row_idx], + main_nullifier_non_exists_write_offset[row_idx], + main_op_err[row_idx], + main_opcode_val[row_idx], + main_pc[row_idx], + main_r_in_tag[row_idx], + main_rwa[row_idx], + main_rwb[row_idx], + main_rwc[row_idx], + main_rwd[row_idx], + main_sel_alu[row_idx], + main_sel_bin[row_idx], + main_sel_calldata[row_idx], + main_sel_execution_end[row_idx], + main_sel_execution_row[row_idx], + main_sel_kernel_inputs[row_idx], + main_sel_kernel_out[row_idx], + main_sel_mem_op_a[row_idx], + main_sel_mem_op_b[row_idx], + main_sel_mem_op_c[row_idx], + main_sel_mem_op_d[row_idx], + main_sel_mov_ia_to_ic[row_idx], + main_sel_mov_ib_to_ic[row_idx], + main_sel_op_add[row_idx], + main_sel_op_address[row_idx], + main_sel_op_and[row_idx], + main_sel_op_block_number[row_idx], + main_sel_op_calldata_copy[row_idx], + main_sel_op_cast[row_idx], + main_sel_op_chain_id[row_idx], + main_sel_op_dagasleft[row_idx], + main_sel_op_div[row_idx], + main_sel_op_ecadd[row_idx], + main_sel_op_emit_l2_to_l1_msg[row_idx], + main_sel_op_emit_note_hash[row_idx], + main_sel_op_emit_nullifier[row_idx], + main_sel_op_emit_unencrypted_log[row_idx], + main_sel_op_eq[row_idx], + main_sel_op_external_call[row_idx], + main_sel_op_external_return[row_idx], + main_sel_op_external_revert[row_idx], + main_sel_op_fdiv[row_idx], + main_sel_op_fee_per_da_gas[row_idx], + main_sel_op_fee_per_l2_gas[row_idx], + main_sel_op_function_selector[row_idx], + main_sel_op_get_contract_instance[row_idx], + main_sel_op_internal_call[row_idx], + main_sel_op_internal_return[row_idx], + main_sel_op_is_static_call[row_idx], + main_sel_op_jump[row_idx], + main_sel_op_jumpi[row_idx], + main_sel_op_keccak[row_idx], + main_sel_op_l1_to_l2_msg_exists[row_idx], + main_sel_op_l2gasleft[row_idx], + main_sel_op_lt[row_idx], + main_sel_op_lte[row_idx], + main_sel_op_mov[row_idx], + main_sel_op_msm[row_idx], + main_sel_op_mul[row_idx], + main_sel_op_not[row_idx], + main_sel_op_note_hash_exists[row_idx], + main_sel_op_nullifier_exists[row_idx], + main_sel_op_or[row_idx], + main_sel_op_poseidon2[row_idx], + main_sel_op_radix_le[row_idx], + main_sel_op_sender[row_idx], + main_sel_op_set[row_idx], + main_sel_op_sha256[row_idx], + main_sel_op_shl[row_idx], + main_sel_op_shr[row_idx], + main_sel_op_sload[row_idx], + main_sel_op_sstore[row_idx], + main_sel_op_static_call[row_idx], + main_sel_op_storage_address[row_idx], + main_sel_op_sub[row_idx], + main_sel_op_timestamp[row_idx], + main_sel_op_transaction_fee[row_idx], + main_sel_op_version[row_idx], + main_sel_op_xor[row_idx], + main_sel_q_kernel_lookup[row_idx], + main_sel_q_kernel_output_lookup[row_idx], + main_sel_resolve_ind_addr_a[row_idx], + main_sel_resolve_ind_addr_b[row_idx], + main_sel_resolve_ind_addr_c[row_idx], + main_sel_resolve_ind_addr_d[row_idx], + main_sel_returndata[row_idx], + main_sel_rng_16[row_idx], + main_sel_rng_8[row_idx], + main_sel_slice_gadget[row_idx], + main_side_effect_counter[row_idx], + main_sload_write_offset[row_idx], + main_space_id[row_idx], + main_sstore_write_offset[row_idx], + main_tag_err[row_idx], + main_w_in_tag[row_idx], + mem_addr[row_idx], + mem_clk[row_idx], + mem_diff[row_idx], + mem_glob_addr[row_idx], + mem_last[row_idx], + mem_lastAccess[row_idx], + mem_one_min_inv[row_idx], + mem_r_in_tag[row_idx], + mem_rw[row_idx], + mem_sel_mem[row_idx], + mem_sel_mov_ia_to_ic[row_idx], + mem_sel_mov_ib_to_ic[row_idx], + mem_sel_op_a[row_idx], + mem_sel_op_b[row_idx], + mem_sel_op_c[row_idx], + mem_sel_op_d[row_idx], + mem_sel_op_poseidon_read_a[row_idx], + mem_sel_op_poseidon_read_b[row_idx], + mem_sel_op_poseidon_read_c[row_idx], + mem_sel_op_poseidon_read_d[row_idx], + mem_sel_op_poseidon_write_a[row_idx], + mem_sel_op_poseidon_write_b[row_idx], + mem_sel_op_poseidon_write_c[row_idx], + mem_sel_op_poseidon_write_d[row_idx], + mem_sel_op_slice[row_idx], + mem_sel_resolve_ind_addr_a[row_idx], + mem_sel_resolve_ind_addr_b[row_idx], + mem_sel_resolve_ind_addr_c[row_idx], + mem_sel_resolve_ind_addr_d[row_idx], + mem_sel_rng_chk[row_idx], + mem_skip_check_tag[row_idx], + mem_space_id[row_idx], + mem_tag[row_idx], + mem_tag_err[row_idx], + mem_tsp[row_idx], + mem_val[row_idx], + mem_w_in_tag[row_idx], + poseidon2_B_10_0[row_idx], + poseidon2_B_10_1[row_idx], + poseidon2_B_10_2[row_idx], + poseidon2_B_10_3[row_idx], + poseidon2_B_11_0[row_idx], + poseidon2_B_11_1[row_idx], + poseidon2_B_11_2[row_idx], + poseidon2_B_11_3[row_idx], + poseidon2_B_12_0[row_idx], + poseidon2_B_12_1[row_idx], + poseidon2_B_12_2[row_idx], + poseidon2_B_12_3[row_idx], + poseidon2_B_13_0[row_idx], + poseidon2_B_13_1[row_idx], + poseidon2_B_13_2[row_idx], + poseidon2_B_13_3[row_idx], + poseidon2_B_14_0[row_idx], + poseidon2_B_14_1[row_idx], + poseidon2_B_14_2[row_idx], + poseidon2_B_14_3[row_idx], + poseidon2_B_15_0[row_idx], + poseidon2_B_15_1[row_idx], + poseidon2_B_15_2[row_idx], + poseidon2_B_15_3[row_idx], + poseidon2_B_16_0[row_idx], + poseidon2_B_16_1[row_idx], + poseidon2_B_16_2[row_idx], + poseidon2_B_16_3[row_idx], + poseidon2_B_17_0[row_idx], + poseidon2_B_17_1[row_idx], + poseidon2_B_17_2[row_idx], + poseidon2_B_17_3[row_idx], + poseidon2_B_18_0[row_idx], + poseidon2_B_18_1[row_idx], + poseidon2_B_18_2[row_idx], + poseidon2_B_18_3[row_idx], + poseidon2_B_19_0[row_idx], + poseidon2_B_19_1[row_idx], + poseidon2_B_19_2[row_idx], + poseidon2_B_19_3[row_idx], + poseidon2_B_20_0[row_idx], + poseidon2_B_20_1[row_idx], + poseidon2_B_20_2[row_idx], + poseidon2_B_20_3[row_idx], + poseidon2_B_21_0[row_idx], + poseidon2_B_21_1[row_idx], + poseidon2_B_21_2[row_idx], + poseidon2_B_21_3[row_idx], + poseidon2_B_22_0[row_idx], + poseidon2_B_22_1[row_idx], + poseidon2_B_22_2[row_idx], + poseidon2_B_22_3[row_idx], + poseidon2_B_23_0[row_idx], + poseidon2_B_23_1[row_idx], + poseidon2_B_23_2[row_idx], + poseidon2_B_23_3[row_idx], + poseidon2_B_24_0[row_idx], + poseidon2_B_24_1[row_idx], + poseidon2_B_24_2[row_idx], + poseidon2_B_24_3[row_idx], + poseidon2_B_25_0[row_idx], + poseidon2_B_25_1[row_idx], + poseidon2_B_25_2[row_idx], + poseidon2_B_25_3[row_idx], + poseidon2_B_26_0[row_idx], + poseidon2_B_26_1[row_idx], + poseidon2_B_26_2[row_idx], + poseidon2_B_26_3[row_idx], + poseidon2_B_27_0[row_idx], + poseidon2_B_27_1[row_idx], + poseidon2_B_27_2[row_idx], + poseidon2_B_27_3[row_idx], + poseidon2_B_28_0[row_idx], + poseidon2_B_28_1[row_idx], + poseidon2_B_28_2[row_idx], + poseidon2_B_28_3[row_idx], + poseidon2_B_29_0[row_idx], + poseidon2_B_29_1[row_idx], + poseidon2_B_29_2[row_idx], + poseidon2_B_29_3[row_idx], + poseidon2_B_30_0[row_idx], + poseidon2_B_30_1[row_idx], + poseidon2_B_30_2[row_idx], + poseidon2_B_30_3[row_idx], + poseidon2_B_31_0[row_idx], + poseidon2_B_31_1[row_idx], + poseidon2_B_31_2[row_idx], + poseidon2_B_31_3[row_idx], + poseidon2_B_32_0[row_idx], + poseidon2_B_32_1[row_idx], + poseidon2_B_32_2[row_idx], + poseidon2_B_32_3[row_idx], + poseidon2_B_33_0[row_idx], + poseidon2_B_33_1[row_idx], + poseidon2_B_33_2[row_idx], + poseidon2_B_33_3[row_idx], + poseidon2_B_34_0[row_idx], + poseidon2_B_34_1[row_idx], + poseidon2_B_34_2[row_idx], + poseidon2_B_34_3[row_idx], + poseidon2_B_35_0[row_idx], + poseidon2_B_35_1[row_idx], + poseidon2_B_35_2[row_idx], + poseidon2_B_35_3[row_idx], + poseidon2_B_36_0[row_idx], + poseidon2_B_36_1[row_idx], + poseidon2_B_36_2[row_idx], + poseidon2_B_36_3[row_idx], + poseidon2_B_37_0[row_idx], + poseidon2_B_37_1[row_idx], + poseidon2_B_37_2[row_idx], + poseidon2_B_37_3[row_idx], + poseidon2_B_38_0[row_idx], + poseidon2_B_38_1[row_idx], + poseidon2_B_38_2[row_idx], + poseidon2_B_38_3[row_idx], + poseidon2_B_39_0[row_idx], + poseidon2_B_39_1[row_idx], + poseidon2_B_39_2[row_idx], + poseidon2_B_39_3[row_idx], + poseidon2_B_40_0[row_idx], + poseidon2_B_40_1[row_idx], + poseidon2_B_40_2[row_idx], + poseidon2_B_40_3[row_idx], + poseidon2_B_41_0[row_idx], + poseidon2_B_41_1[row_idx], + poseidon2_B_41_2[row_idx], + poseidon2_B_41_3[row_idx], + poseidon2_B_42_0[row_idx], + poseidon2_B_42_1[row_idx], + poseidon2_B_42_2[row_idx], + poseidon2_B_42_3[row_idx], + poseidon2_B_43_0[row_idx], + poseidon2_B_43_1[row_idx], + poseidon2_B_43_2[row_idx], + poseidon2_B_43_3[row_idx], + poseidon2_B_44_0[row_idx], + poseidon2_B_44_1[row_idx], + poseidon2_B_44_2[row_idx], + poseidon2_B_44_3[row_idx], + poseidon2_B_45_0[row_idx], + poseidon2_B_45_1[row_idx], + poseidon2_B_45_2[row_idx], + poseidon2_B_45_3[row_idx], + poseidon2_B_46_0[row_idx], + poseidon2_B_46_1[row_idx], + poseidon2_B_46_2[row_idx], + poseidon2_B_46_3[row_idx], + poseidon2_B_47_0[row_idx], + poseidon2_B_47_1[row_idx], + poseidon2_B_47_2[row_idx], + poseidon2_B_47_3[row_idx], + poseidon2_B_48_0[row_idx], + poseidon2_B_48_1[row_idx], + poseidon2_B_48_2[row_idx], + poseidon2_B_48_3[row_idx], + poseidon2_B_49_0[row_idx], + poseidon2_B_49_1[row_idx], + poseidon2_B_49_2[row_idx], + poseidon2_B_49_3[row_idx], + poseidon2_B_4_0[row_idx], + poseidon2_B_4_1[row_idx], + poseidon2_B_4_2[row_idx], + poseidon2_B_4_3[row_idx], + poseidon2_B_50_0[row_idx], + poseidon2_B_50_1[row_idx], + poseidon2_B_50_2[row_idx], + poseidon2_B_50_3[row_idx], + poseidon2_B_51_0[row_idx], + poseidon2_B_51_1[row_idx], + poseidon2_B_51_2[row_idx], + poseidon2_B_51_3[row_idx], + poseidon2_B_52_0[row_idx], + poseidon2_B_52_1[row_idx], + poseidon2_B_52_2[row_idx], + poseidon2_B_52_3[row_idx], + poseidon2_B_53_0[row_idx], + poseidon2_B_53_1[row_idx], + poseidon2_B_53_2[row_idx], + poseidon2_B_53_3[row_idx], + poseidon2_B_54_0[row_idx], + poseidon2_B_54_1[row_idx], + poseidon2_B_54_2[row_idx], + poseidon2_B_54_3[row_idx], + poseidon2_B_55_0[row_idx], + poseidon2_B_55_1[row_idx], + poseidon2_B_55_2[row_idx], + poseidon2_B_55_3[row_idx], + poseidon2_B_56_0[row_idx], + poseidon2_B_56_1[row_idx], + poseidon2_B_56_2[row_idx], + poseidon2_B_56_3[row_idx], + poseidon2_B_57_0[row_idx], + poseidon2_B_57_1[row_idx], + poseidon2_B_57_2[row_idx], + poseidon2_B_57_3[row_idx], + poseidon2_B_58_0[row_idx], + poseidon2_B_58_1[row_idx], + poseidon2_B_58_2[row_idx], + poseidon2_B_58_3[row_idx], + poseidon2_B_59_0[row_idx], + poseidon2_B_59_1[row_idx], + poseidon2_B_59_2[row_idx], + poseidon2_B_59_3[row_idx], + poseidon2_B_5_0[row_idx], + poseidon2_B_5_1[row_idx], + poseidon2_B_5_2[row_idx], + poseidon2_B_5_3[row_idx], + poseidon2_B_6_0[row_idx], + poseidon2_B_6_1[row_idx], + poseidon2_B_6_2[row_idx], + poseidon2_B_6_3[row_idx], + poseidon2_B_7_0[row_idx], + poseidon2_B_7_1[row_idx], + poseidon2_B_7_2[row_idx], + poseidon2_B_7_3[row_idx], + poseidon2_B_8_0[row_idx], + poseidon2_B_8_1[row_idx], + poseidon2_B_8_2[row_idx], + poseidon2_B_8_3[row_idx], + poseidon2_B_9_0[row_idx], + poseidon2_B_9_1[row_idx], + poseidon2_B_9_2[row_idx], + poseidon2_B_9_3[row_idx], + poseidon2_EXT_LAYER_4[row_idx], + poseidon2_EXT_LAYER_5[row_idx], + poseidon2_EXT_LAYER_6[row_idx], + poseidon2_EXT_LAYER_7[row_idx], + poseidon2_T_0_4[row_idx], + poseidon2_T_0_5[row_idx], + poseidon2_T_0_6[row_idx], + poseidon2_T_0_7[row_idx], + poseidon2_T_1_4[row_idx], + poseidon2_T_1_5[row_idx], + poseidon2_T_1_6[row_idx], + poseidon2_T_1_7[row_idx], + poseidon2_T_2_4[row_idx], + poseidon2_T_2_5[row_idx], + poseidon2_T_2_6[row_idx], + poseidon2_T_2_7[row_idx], + poseidon2_T_3_4[row_idx], + poseidon2_T_3_5[row_idx], + poseidon2_T_3_6[row_idx], + poseidon2_T_3_7[row_idx], + poseidon2_T_60_4[row_idx], + poseidon2_T_60_5[row_idx], + poseidon2_T_60_6[row_idx], + poseidon2_T_60_7[row_idx], + poseidon2_T_61_4[row_idx], + poseidon2_T_61_5[row_idx], + poseidon2_T_61_6[row_idx], + poseidon2_T_61_7[row_idx], + poseidon2_T_62_4[row_idx], + poseidon2_T_62_5[row_idx], + poseidon2_T_62_6[row_idx], + poseidon2_T_62_7[row_idx], + poseidon2_T_63_4[row_idx], + poseidon2_T_63_5[row_idx], + poseidon2_T_63_6[row_idx], + poseidon2_T_63_7[row_idx], + poseidon2_a_0[row_idx], + poseidon2_a_1[row_idx], + poseidon2_a_2[row_idx], + poseidon2_a_3[row_idx], + poseidon2_b_0[row_idx], + poseidon2_b_1[row_idx], + poseidon2_b_2[row_idx], + poseidon2_b_3[row_idx], + poseidon2_clk[row_idx], + poseidon2_input_addr[row_idx], + poseidon2_mem_addr_read_a[row_idx], + poseidon2_mem_addr_read_b[row_idx], + poseidon2_mem_addr_read_c[row_idx], + poseidon2_mem_addr_read_d[row_idx], + poseidon2_mem_addr_write_a[row_idx], + poseidon2_mem_addr_write_b[row_idx], + poseidon2_mem_addr_write_c[row_idx], + poseidon2_mem_addr_write_d[row_idx], + poseidon2_output_addr[row_idx], + poseidon2_sel_poseidon_perm[row_idx], + poseidon2_space_id[row_idx], + range_check_alu_rng_chk[row_idx], + range_check_clk[row_idx], + range_check_cmp_hi_bits_rng_chk[row_idx], + range_check_cmp_lo_bits_rng_chk[row_idx], + range_check_dyn_diff[row_idx], + range_check_dyn_rng_chk_bits[row_idx], + range_check_dyn_rng_chk_pow_2[row_idx], + range_check_gas_da_rng_chk[row_idx], + range_check_gas_l2_rng_chk[row_idx], + range_check_is_lte_u112[row_idx], + range_check_is_lte_u128[row_idx], + range_check_is_lte_u16[row_idx], + range_check_is_lte_u32[row_idx], + range_check_is_lte_u48[row_idx], + range_check_is_lte_u64[row_idx], + range_check_is_lte_u80[row_idx], + range_check_is_lte_u96[row_idx], + range_check_mem_rng_chk[row_idx], + range_check_rng_chk_bits[row_idx], + range_check_sel_lookup_0[row_idx], + range_check_sel_lookup_1[row_idx], + range_check_sel_lookup_2[row_idx], + range_check_sel_lookup_3[row_idx], + range_check_sel_lookup_4[row_idx], + range_check_sel_lookup_5[row_idx], + range_check_sel_lookup_6[row_idx], + range_check_sel_rng_chk[row_idx], + range_check_u16_r0[row_idx], + range_check_u16_r1[row_idx], + range_check_u16_r2[row_idx], + range_check_u16_r3[row_idx], + range_check_u16_r4[row_idx], + range_check_u16_r5[row_idx], + range_check_u16_r6[row_idx], + range_check_u16_r7[row_idx], + range_check_value[row_idx], + sha256_clk[row_idx], + sha256_input[row_idx], + sha256_output[row_idx], + sha256_sel_sha256_compression[row_idx], + sha256_state[row_idx], + slice_addr[row_idx], + slice_clk[row_idx], + slice_cnt[row_idx], + slice_col_offset[row_idx], + slice_one_min_inv[row_idx], + slice_sel_cd_cpy[row_idx], + slice_sel_mem_active[row_idx], + slice_sel_return[row_idx], + slice_sel_start[row_idx], + slice_space_id[row_idx], + slice_val[row_idx], + lookup_rng_chk_pow_2_counts[row_idx], + lookup_rng_chk_diff_counts[row_idx], + lookup_rng_chk_0_counts[row_idx], + lookup_rng_chk_1_counts[row_idx], + lookup_rng_chk_2_counts[row_idx], + lookup_rng_chk_3_counts[row_idx], + lookup_rng_chk_4_counts[row_idx], + lookup_rng_chk_5_counts[row_idx], + lookup_rng_chk_6_counts[row_idx], + lookup_rng_chk_7_counts[row_idx], + lookup_pow_2_0_counts[row_idx], + lookup_pow_2_1_counts[row_idx], + lookup_byte_lengths_counts[row_idx], + lookup_byte_operations_counts[row_idx], + lookup_opcode_gas_counts[row_idx], + kernel_output_lookup_counts[row_idx], + lookup_into_kernel_counts[row_idx], + lookup_cd_value_counts[row_idx], + lookup_ret_value_counts[row_idx], + incl_main_tag_err_counts[row_idx], + incl_mem_tag_err_counts[row_idx], + perm_rng_mem_inv[row_idx], + perm_rng_cmp_lo_inv[row_idx], + perm_rng_cmp_hi_inv[row_idx], + perm_rng_alu_inv[row_idx], + perm_cmp_alu_inv[row_idx], + perm_rng_gas_l2_inv[row_idx], + perm_rng_gas_da_inv[row_idx], + perm_l2_start_gas_inv[row_idx], + perm_da_start_gas_inv[row_idx], + perm_l2_end_gas_inv[row_idx], + perm_da_end_gas_inv[row_idx], + perm_pos_mem_read_a_inv[row_idx], + perm_pos_mem_read_b_inv[row_idx], + perm_pos_mem_read_c_inv[row_idx], + perm_pos_mem_read_d_inv[row_idx], + perm_pos_mem_write_a_inv[row_idx], + perm_pos_mem_write_b_inv[row_idx], + perm_pos_mem_write_c_inv[row_idx], + perm_pos_mem_write_d_inv[row_idx], + perm_slice_mem_inv[row_idx], + perm_main_alu_inv[row_idx], + perm_main_bin_inv[row_idx], + perm_main_conv_inv[row_idx], + perm_main_sha256_inv[row_idx], + perm_main_pos2_perm_inv[row_idx], + perm_main_slice_inv[row_idx], + perm_main_mem_a_inv[row_idx], + perm_main_mem_b_inv[row_idx], + perm_main_mem_c_inv[row_idx], + perm_main_mem_d_inv[row_idx], + perm_main_mem_ind_addr_a_inv[row_idx], + perm_main_mem_ind_addr_b_inv[row_idx], + perm_main_mem_ind_addr_c_inv[row_idx], + perm_main_mem_ind_addr_d_inv[row_idx], + lookup_rng_chk_pow_2_inv[row_idx], + lookup_rng_chk_diff_inv[row_idx], + lookup_rng_chk_0_inv[row_idx], + lookup_rng_chk_1_inv[row_idx], + lookup_rng_chk_2_inv[row_idx], + lookup_rng_chk_3_inv[row_idx], + lookup_rng_chk_4_inv[row_idx], + lookup_rng_chk_5_inv[row_idx], + lookup_rng_chk_6_inv[row_idx], + lookup_rng_chk_7_inv[row_idx], + lookup_pow_2_0_inv[row_idx], + lookup_pow_2_1_inv[row_idx], + lookup_byte_lengths_inv[row_idx], + lookup_byte_operations_inv[row_idx], + lookup_opcode_gas_inv[row_idx], + kernel_output_lookup_inv[row_idx], + lookup_into_kernel_inv[row_idx], + lookup_cd_value_inv[row_idx], + lookup_ret_value_inv[row_idx], + incl_main_tag_err_inv[row_idx], + incl_mem_tag_err_inv[row_idx], + binary_acc_ia_shift[row_idx], + binary_acc_ib_shift[row_idx], + binary_acc_ic_shift[row_idx], + binary_mem_tag_ctr_shift[row_idx], + binary_op_id_shift[row_idx], + cmp_a_hi_shift[row_idx], + cmp_a_lo_shift[row_idx], + cmp_b_hi_shift[row_idx], + cmp_b_lo_shift[row_idx], + cmp_cmp_rng_ctr_shift[row_idx], + cmp_op_gt_shift[row_idx], + cmp_p_sub_a_hi_shift[row_idx], + cmp_p_sub_a_lo_shift[row_idx], + cmp_p_sub_b_hi_shift[row_idx], + cmp_p_sub_b_lo_shift[row_idx], + cmp_sel_rng_chk_shift[row_idx], + main_da_gas_remaining_shift[row_idx], + main_emit_l2_to_l1_msg_write_offset_shift[row_idx], + main_emit_note_hash_write_offset_shift[row_idx], + main_emit_nullifier_write_offset_shift[row_idx], + main_emit_unencrypted_log_write_offset_shift[row_idx], + main_internal_return_ptr_shift[row_idx], + main_l1_to_l2_msg_exists_write_offset_shift[row_idx], + main_l2_gas_remaining_shift[row_idx], + main_note_hash_exist_write_offset_shift[row_idx], + main_nullifier_exists_write_offset_shift[row_idx], + main_nullifier_non_exists_write_offset_shift[row_idx], + main_pc_shift[row_idx], + main_sel_execution_end_shift[row_idx], + main_sel_execution_row_shift[row_idx], + main_sload_write_offset_shift[row_idx], + main_sstore_write_offset_shift[row_idx], + mem_glob_addr_shift[row_idx], + mem_rw_shift[row_idx], + mem_sel_mem_shift[row_idx], + mem_tag_shift[row_idx], + mem_tsp_shift[row_idx], + mem_val_shift[row_idx], + slice_addr_shift[row_idx], + slice_clk_shift[row_idx], + slice_cnt_shift[row_idx], + slice_col_offset_shift[row_idx], + slice_sel_cd_cpy_shift[row_idx], + slice_sel_mem_active_shift[row_idx], + slice_sel_return_shift[row_idx], + slice_sel_start_shift[row_idx], + slice_space_id_shift[row_idx] + }; } AvmFlavor::CommitmentLabels::CommitmentLabels() @@ -1762,8 +1002,6 @@ AvmFlavor::CommitmentLabels::CommitmentLabels() Base::main_sel_op_note_hash_exists = "MAIN_SEL_OP_NOTE_HASH_EXISTS"; Base::main_sel_op_nullifier_exists = "MAIN_SEL_OP_NULLIFIER_EXISTS"; Base::main_sel_op_or = "MAIN_SEL_OP_OR"; - Base::main_sel_op_pedersen = "MAIN_SEL_OP_PEDERSEN"; - Base::main_sel_op_pedersen_commit = "MAIN_SEL_OP_PEDERSEN_COMMIT"; Base::main_sel_op_poseidon2 = "MAIN_SEL_OP_POSEIDON2"; Base::main_sel_op_radix_le = "MAIN_SEL_OP_RADIX_LE"; Base::main_sel_op_sender = "MAIN_SEL_OP_SENDER"; @@ -1833,10 +1071,6 @@ AvmFlavor::CommitmentLabels::CommitmentLabels() Base::mem_tsp = "MEM_TSP"; Base::mem_val = "MEM_VAL"; Base::mem_w_in_tag = "MEM_W_IN_TAG"; - Base::pedersen_clk = "PEDERSEN_CLK"; - Base::pedersen_input = "PEDERSEN_INPUT"; - Base::pedersen_output = "PEDERSEN_OUTPUT"; - Base::pedersen_sel_pedersen = "PEDERSEN_SEL_PEDERSEN"; Base::poseidon2_B_10_0 = "POSEIDON2_B_10_0"; Base::poseidon2_B_10_1 = "POSEIDON2_B_10_1"; Base::poseidon2_B_10_2 = "POSEIDON2_B_10_2"; @@ -2193,8 +1427,8 @@ AvmFlavor::CommitmentLabels::CommitmentLabels() Base::perm_main_alu_inv = "PERM_MAIN_ALU_INV"; Base::perm_main_bin_inv = "PERM_MAIN_BIN_INV"; Base::perm_main_conv_inv = "PERM_MAIN_CONV_INV"; + Base::perm_main_sha256_inv = "PERM_MAIN_SHA256_INV"; Base::perm_main_pos2_perm_inv = "PERM_MAIN_POS2_PERM_INV"; - Base::perm_main_pedersen_inv = "PERM_MAIN_PEDERSEN_INV"; Base::perm_main_slice_inv = "PERM_MAIN_SLICE_INV"; Base::perm_main_mem_a_inv = "PERM_MAIN_MEM_A_INV"; Base::perm_main_mem_b_inv = "PERM_MAIN_MEM_B_INV"; @@ -2252,8 +1486,7 @@ AvmFlavor::CommitmentLabels::CommitmentLabels() // current sumcheck implementation. Namely, this algorithm is padding to reach CONST_PROOF_SIZE_LOG_N sumcheck rounds. // Similarly, zeromorph implementation performs same padding over some commitments (zm_cq_comms). // In code below, the loops are of size log(circuit_size) instead of CONST_PROOF_SIZE_LOG_N. -void AvmFlavor::Transcript::deserialize_full_transcript() -{ +void AvmFlavor::Transcript::deserialize_full_transcript() { size_t num_frs_read = 0; circuit_size = deserialize_from_buffer(proof_data, num_frs_read); size_t log_n = numeric::get_msb(circuit_size); @@ -2262,11 +1495,12 @@ void AvmFlavor::Transcript::deserialize_full_transcript() commitment = deserialize_from_buffer(proof_data, num_frs_read); } for (size_t i = 0; i < log_n; ++i) { - sumcheck_univariates.emplace_back(deserialize_from_buffer>( - Transcript::proof_data, num_frs_read)); + sumcheck_univariates.emplace_back( + deserialize_from_buffer>( + Transcript::proof_data, num_frs_read)); } - sumcheck_evaluations = - deserialize_from_buffer>(Transcript::proof_data, num_frs_read); + sumcheck_evaluations = deserialize_from_buffer>( + Transcript::proof_data, num_frs_read); for (size_t i = 0; i < log_n; ++i) { zm_cq_comms.push_back(deserialize_from_buffer(proof_data, num_frs_read)); } @@ -2275,8 +1509,7 @@ void AvmFlavor::Transcript::deserialize_full_transcript() } // See note above AvmFlavor::Transcript::deserialize_full_transcript() -void AvmFlavor::Transcript::serialize_full_transcript() -{ +void AvmFlavor::Transcript::serialize_full_transcript() { size_t old_proof_length = proof_data.size(); Transcript::proof_data.clear(); size_t log_n = numeric::get_msb(circuit_size); diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/flavor.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/flavor.hpp index c96d4b97ac2..1055aaf54a4 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/flavor.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/flavor.hpp @@ -7,10 +7,10 @@ #include "barretenberg/polynomials/barycentric.hpp" #include "barretenberg/polynomials/univariate.hpp" -#include "barretenberg/flavor/flavor.hpp" #include "barretenberg/flavor/flavor_macros.hpp" -#include "barretenberg/polynomials/evaluation_domain.hpp" #include "barretenberg/transcript/transcript.hpp" +#include "barretenberg/polynomials/evaluation_domain.hpp" +#include "barretenberg/flavor/flavor.hpp" #include "barretenberg/vm/avm/generated/flavor_settings.hpp" #include "barretenberg/vm/aztec_constants.hpp" @@ -26,7 +26,6 @@ #include "barretenberg/vm/avm/generated/relations/main.hpp" #include "barretenberg/vm/avm/generated/relations/mem.hpp" #include "barretenberg/vm/avm/generated/relations/mem_slice.hpp" -#include "barretenberg/vm/avm/generated/relations/pedersen.hpp" #include "barretenberg/vm/avm/generated/relations/poseidon2.hpp" #include "barretenberg/vm/avm/generated/relations/range_check.hpp" #include "barretenberg/vm/avm/generated/relations/sha256.hpp" @@ -69,8 +68,8 @@ #include "barretenberg/vm/avm/generated/relations/perm_main_mem_ind_addr_b.hpp" #include "barretenberg/vm/avm/generated/relations/perm_main_mem_ind_addr_c.hpp" #include "barretenberg/vm/avm/generated/relations/perm_main_mem_ind_addr_d.hpp" -#include "barretenberg/vm/avm/generated/relations/perm_main_pedersen.hpp" #include "barretenberg/vm/avm/generated/relations/perm_main_pos2_perm.hpp" +#include "barretenberg/vm/avm/generated/relations/perm_main_sha256.hpp" #include "barretenberg/vm/avm/generated/relations/perm_main_slice.hpp" #include "barretenberg/vm/avm/generated/relations/perm_pos_mem_read_a.hpp" #include "barretenberg/vm/avm/generated/relations/perm_pos_mem_read_b.hpp" @@ -94,8 +93,8 @@ template using tuple_cat_t = decltype(std::tuple_cat(std:: // The entities that will be used in the flavor. // clang-format off #define PRECOMPUTED_ENTITIES byte_lookup_sel_bin, byte_lookup_table_byte_lengths, byte_lookup_table_in_tags, byte_lookup_table_input_a, byte_lookup_table_input_b, byte_lookup_table_op_id, byte_lookup_table_output, gas_base_da_gas_fixed_table, gas_base_l2_gas_fixed_table, gas_dyn_da_gas_fixed_table, gas_dyn_l2_gas_fixed_table, gas_sel_gas_cost, main_clk, main_sel_da_end_gas_kernel_input, main_sel_da_start_gas_kernel_input, main_sel_first, main_sel_l2_end_gas_kernel_input, main_sel_l2_start_gas_kernel_input, main_sel_start_exec, main_zeroes, powers_power_of_2 -#define WIRE_ENTITIES main_kernel_inputs, main_kernel_value_out, main_kernel_side_effect_out, main_kernel_metadata_out, main_calldata, main_returndata, alu_a_hi, alu_a_lo, alu_b_hi, alu_b_lo, alu_b_pow, alu_c_hi, alu_c_lo, alu_cf, alu_clk, alu_cmp_gadget_gt, alu_cmp_gadget_input_a, alu_cmp_gadget_input_b, alu_cmp_gadget_result, alu_cmp_gadget_sel, alu_ff_tag, alu_ia, alu_ib, alu_ic, alu_in_tag, alu_max_bits_sub_b_bits, alu_max_bits_sub_b_pow, alu_op_add, alu_op_cast, alu_op_div, alu_op_eq, alu_op_lt, alu_op_lte, alu_op_mul, alu_op_not, alu_op_shl, alu_op_shr, alu_op_sub, alu_partial_prod_hi, alu_partial_prod_lo, alu_range_check_input_value, alu_range_check_num_bits, alu_range_check_sel, alu_remainder, alu_sel_alu, alu_sel_cmp, alu_sel_shift_which, alu_u128_tag, alu_u16_tag, alu_u1_tag, alu_u32_tag, alu_u64_tag, alu_u8_tag, alu_zero_shift, binary_acc_ia, binary_acc_ib, binary_acc_ic, binary_clk, binary_ia_bytes, binary_ib_bytes, binary_ic_bytes, binary_in_tag, binary_mem_tag_ctr, binary_mem_tag_ctr_inv, binary_op_id, binary_sel_bin, binary_start, cmp_a_hi, cmp_a_lo, cmp_b_hi, cmp_b_lo, cmp_borrow, cmp_clk, cmp_cmp_rng_ctr, cmp_input_a, cmp_input_b, cmp_op_eq, cmp_op_eq_diff_inv, cmp_op_gt, cmp_p_a_borrow, cmp_p_b_borrow, cmp_p_sub_a_hi, cmp_p_sub_a_lo, cmp_p_sub_b_hi, cmp_p_sub_b_lo, cmp_range_chk_clk, cmp_res_hi, cmp_res_lo, cmp_result, cmp_sel_cmp, cmp_sel_rng_chk, cmp_shift_sel, conversion_clk, conversion_input, conversion_num_limbs, conversion_output_bits, conversion_radix, conversion_sel_to_radix_le, keccakf1600_clk, keccakf1600_input, keccakf1600_output, keccakf1600_sel_keccakf1600, main_abs_da_rem_gas, main_abs_l2_rem_gas, main_alu_in_tag, main_base_da_gas_op_cost, main_base_l2_gas_op_cost, main_bin_op_id, main_call_ptr, main_da_gas_remaining, main_da_out_of_gas, main_dyn_da_gas_op_cost, main_dyn_gas_multiplier, main_dyn_l2_gas_op_cost, main_emit_l2_to_l1_msg_write_offset, main_emit_note_hash_write_offset, main_emit_nullifier_write_offset, main_emit_unencrypted_log_write_offset, main_ia, main_ib, main_ic, main_id, main_id_zero, main_ind_addr_a, main_ind_addr_b, main_ind_addr_c, main_ind_addr_d, main_internal_return_ptr, main_inv, main_is_fake_row, main_is_gas_accounted, main_kernel_in_offset, main_kernel_out_offset, main_l1_to_l2_msg_exists_write_offset, main_l2_gas_remaining, main_l2_out_of_gas, main_mem_addr_a, main_mem_addr_b, main_mem_addr_c, main_mem_addr_d, main_note_hash_exist_write_offset, main_nullifier_exists_write_offset, main_nullifier_non_exists_write_offset, main_op_err, main_opcode_val, main_pc, main_r_in_tag, main_rwa, main_rwb, main_rwc, main_rwd, main_sel_alu, main_sel_bin, main_sel_calldata, main_sel_execution_end, main_sel_execution_row, main_sel_kernel_inputs, main_sel_kernel_out, main_sel_mem_op_a, main_sel_mem_op_b, main_sel_mem_op_c, main_sel_mem_op_d, main_sel_mov_ia_to_ic, main_sel_mov_ib_to_ic, main_sel_op_add, main_sel_op_address, main_sel_op_and, main_sel_op_block_number, main_sel_op_calldata_copy, main_sel_op_cast, main_sel_op_chain_id, main_sel_op_dagasleft, main_sel_op_div, main_sel_op_ecadd, main_sel_op_emit_l2_to_l1_msg, main_sel_op_emit_note_hash, main_sel_op_emit_nullifier, main_sel_op_emit_unencrypted_log, main_sel_op_eq, main_sel_op_external_call, main_sel_op_external_return, main_sel_op_external_revert, main_sel_op_fdiv, main_sel_op_fee_per_da_gas, main_sel_op_fee_per_l2_gas, main_sel_op_function_selector, main_sel_op_get_contract_instance, main_sel_op_internal_call, main_sel_op_internal_return, main_sel_op_is_static_call, main_sel_op_jump, main_sel_op_jumpi, main_sel_op_keccak, main_sel_op_l1_to_l2_msg_exists, main_sel_op_l2gasleft, main_sel_op_lt, main_sel_op_lte, main_sel_op_mov, main_sel_op_msm, main_sel_op_mul, main_sel_op_not, main_sel_op_note_hash_exists, main_sel_op_nullifier_exists, main_sel_op_or, main_sel_op_pedersen, main_sel_op_pedersen_commit, main_sel_op_poseidon2, main_sel_op_radix_le, main_sel_op_sender, main_sel_op_set, main_sel_op_sha256, main_sel_op_shl, main_sel_op_shr, main_sel_op_sload, main_sel_op_sstore, main_sel_op_static_call, main_sel_op_storage_address, main_sel_op_sub, main_sel_op_timestamp, main_sel_op_transaction_fee, main_sel_op_version, main_sel_op_xor, main_sel_q_kernel_lookup, main_sel_q_kernel_output_lookup, main_sel_resolve_ind_addr_a, main_sel_resolve_ind_addr_b, main_sel_resolve_ind_addr_c, main_sel_resolve_ind_addr_d, main_sel_returndata, main_sel_rng_16, main_sel_rng_8, main_sel_slice_gadget, main_side_effect_counter, main_sload_write_offset, main_space_id, main_sstore_write_offset, main_tag_err, main_w_in_tag, mem_addr, mem_clk, mem_diff, mem_glob_addr, mem_last, mem_lastAccess, mem_one_min_inv, mem_r_in_tag, mem_rw, mem_sel_mem, mem_sel_mov_ia_to_ic, mem_sel_mov_ib_to_ic, mem_sel_op_a, mem_sel_op_b, mem_sel_op_c, mem_sel_op_d, mem_sel_op_poseidon_read_a, mem_sel_op_poseidon_read_b, mem_sel_op_poseidon_read_c, mem_sel_op_poseidon_read_d, mem_sel_op_poseidon_write_a, mem_sel_op_poseidon_write_b, mem_sel_op_poseidon_write_c, mem_sel_op_poseidon_write_d, mem_sel_op_slice, mem_sel_resolve_ind_addr_a, mem_sel_resolve_ind_addr_b, mem_sel_resolve_ind_addr_c, mem_sel_resolve_ind_addr_d, mem_sel_rng_chk, mem_skip_check_tag, mem_space_id, mem_tag, mem_tag_err, mem_tsp, mem_val, mem_w_in_tag, pedersen_clk, pedersen_input, pedersen_output, pedersen_sel_pedersen, poseidon2_B_10_0, poseidon2_B_10_1, poseidon2_B_10_2, poseidon2_B_10_3, poseidon2_B_11_0, poseidon2_B_11_1, poseidon2_B_11_2, poseidon2_B_11_3, poseidon2_B_12_0, poseidon2_B_12_1, poseidon2_B_12_2, poseidon2_B_12_3, poseidon2_B_13_0, poseidon2_B_13_1, poseidon2_B_13_2, poseidon2_B_13_3, poseidon2_B_14_0, poseidon2_B_14_1, poseidon2_B_14_2, poseidon2_B_14_3, poseidon2_B_15_0, poseidon2_B_15_1, poseidon2_B_15_2, poseidon2_B_15_3, poseidon2_B_16_0, poseidon2_B_16_1, poseidon2_B_16_2, poseidon2_B_16_3, poseidon2_B_17_0, poseidon2_B_17_1, poseidon2_B_17_2, poseidon2_B_17_3, poseidon2_B_18_0, poseidon2_B_18_1, poseidon2_B_18_2, poseidon2_B_18_3, poseidon2_B_19_0, poseidon2_B_19_1, poseidon2_B_19_2, poseidon2_B_19_3, poseidon2_B_20_0, poseidon2_B_20_1, poseidon2_B_20_2, poseidon2_B_20_3, poseidon2_B_21_0, poseidon2_B_21_1, poseidon2_B_21_2, poseidon2_B_21_3, poseidon2_B_22_0, poseidon2_B_22_1, poseidon2_B_22_2, poseidon2_B_22_3, poseidon2_B_23_0, poseidon2_B_23_1, poseidon2_B_23_2, poseidon2_B_23_3, poseidon2_B_24_0, poseidon2_B_24_1, poseidon2_B_24_2, poseidon2_B_24_3, poseidon2_B_25_0, poseidon2_B_25_1, poseidon2_B_25_2, poseidon2_B_25_3, poseidon2_B_26_0, poseidon2_B_26_1, poseidon2_B_26_2, poseidon2_B_26_3, poseidon2_B_27_0, poseidon2_B_27_1, poseidon2_B_27_2, poseidon2_B_27_3, poseidon2_B_28_0, poseidon2_B_28_1, poseidon2_B_28_2, poseidon2_B_28_3, poseidon2_B_29_0, poseidon2_B_29_1, poseidon2_B_29_2, poseidon2_B_29_3, poseidon2_B_30_0, poseidon2_B_30_1, poseidon2_B_30_2, poseidon2_B_30_3, poseidon2_B_31_0, poseidon2_B_31_1, poseidon2_B_31_2, poseidon2_B_31_3, poseidon2_B_32_0, poseidon2_B_32_1, poseidon2_B_32_2, poseidon2_B_32_3, poseidon2_B_33_0, poseidon2_B_33_1, poseidon2_B_33_2, poseidon2_B_33_3, poseidon2_B_34_0, poseidon2_B_34_1, poseidon2_B_34_2, poseidon2_B_34_3, poseidon2_B_35_0, poseidon2_B_35_1, poseidon2_B_35_2, poseidon2_B_35_3, poseidon2_B_36_0, poseidon2_B_36_1, poseidon2_B_36_2, poseidon2_B_36_3, poseidon2_B_37_0, poseidon2_B_37_1, poseidon2_B_37_2, poseidon2_B_37_3, poseidon2_B_38_0, poseidon2_B_38_1, poseidon2_B_38_2, poseidon2_B_38_3, poseidon2_B_39_0, poseidon2_B_39_1, poseidon2_B_39_2, poseidon2_B_39_3, poseidon2_B_40_0, poseidon2_B_40_1, poseidon2_B_40_2, poseidon2_B_40_3, poseidon2_B_41_0, poseidon2_B_41_1, poseidon2_B_41_2, poseidon2_B_41_3, poseidon2_B_42_0, poseidon2_B_42_1, poseidon2_B_42_2, poseidon2_B_42_3, poseidon2_B_43_0, poseidon2_B_43_1, poseidon2_B_43_2, poseidon2_B_43_3, poseidon2_B_44_0, poseidon2_B_44_1, poseidon2_B_44_2, poseidon2_B_44_3, poseidon2_B_45_0, poseidon2_B_45_1, poseidon2_B_45_2, poseidon2_B_45_3, poseidon2_B_46_0, poseidon2_B_46_1, poseidon2_B_46_2, poseidon2_B_46_3, poseidon2_B_47_0, poseidon2_B_47_1, poseidon2_B_47_2, poseidon2_B_47_3, poseidon2_B_48_0, poseidon2_B_48_1, poseidon2_B_48_2, poseidon2_B_48_3, poseidon2_B_49_0, poseidon2_B_49_1, poseidon2_B_49_2, poseidon2_B_49_3, poseidon2_B_4_0, poseidon2_B_4_1, poseidon2_B_4_2, poseidon2_B_4_3, poseidon2_B_50_0, poseidon2_B_50_1, poseidon2_B_50_2, poseidon2_B_50_3, poseidon2_B_51_0, poseidon2_B_51_1, poseidon2_B_51_2, poseidon2_B_51_3, poseidon2_B_52_0, poseidon2_B_52_1, poseidon2_B_52_2, poseidon2_B_52_3, poseidon2_B_53_0, poseidon2_B_53_1, poseidon2_B_53_2, poseidon2_B_53_3, poseidon2_B_54_0, poseidon2_B_54_1, poseidon2_B_54_2, poseidon2_B_54_3, poseidon2_B_55_0, poseidon2_B_55_1, poseidon2_B_55_2, poseidon2_B_55_3, poseidon2_B_56_0, poseidon2_B_56_1, poseidon2_B_56_2, poseidon2_B_56_3, poseidon2_B_57_0, poseidon2_B_57_1, poseidon2_B_57_2, poseidon2_B_57_3, poseidon2_B_58_0, poseidon2_B_58_1, poseidon2_B_58_2, poseidon2_B_58_3, poseidon2_B_59_0, poseidon2_B_59_1, poseidon2_B_59_2, poseidon2_B_59_3, poseidon2_B_5_0, poseidon2_B_5_1, poseidon2_B_5_2, poseidon2_B_5_3, poseidon2_B_6_0, poseidon2_B_6_1, poseidon2_B_6_2, poseidon2_B_6_3, poseidon2_B_7_0, poseidon2_B_7_1, poseidon2_B_7_2, poseidon2_B_7_3, poseidon2_B_8_0, poseidon2_B_8_1, poseidon2_B_8_2, poseidon2_B_8_3, poseidon2_B_9_0, poseidon2_B_9_1, poseidon2_B_9_2, poseidon2_B_9_3, poseidon2_EXT_LAYER_4, poseidon2_EXT_LAYER_5, poseidon2_EXT_LAYER_6, poseidon2_EXT_LAYER_7, poseidon2_T_0_4, poseidon2_T_0_5, poseidon2_T_0_6, poseidon2_T_0_7, poseidon2_T_1_4, poseidon2_T_1_5, poseidon2_T_1_6, poseidon2_T_1_7, poseidon2_T_2_4, poseidon2_T_2_5, poseidon2_T_2_6, poseidon2_T_2_7, poseidon2_T_3_4, poseidon2_T_3_5, poseidon2_T_3_6, poseidon2_T_3_7, poseidon2_T_60_4, poseidon2_T_60_5, poseidon2_T_60_6, poseidon2_T_60_7, poseidon2_T_61_4, poseidon2_T_61_5, poseidon2_T_61_6, poseidon2_T_61_7, poseidon2_T_62_4, poseidon2_T_62_5, poseidon2_T_62_6, poseidon2_T_62_7, poseidon2_T_63_4, poseidon2_T_63_5, poseidon2_T_63_6, poseidon2_T_63_7, poseidon2_a_0, poseidon2_a_1, poseidon2_a_2, poseidon2_a_3, poseidon2_b_0, poseidon2_b_1, poseidon2_b_2, poseidon2_b_3, poseidon2_clk, poseidon2_input_addr, poseidon2_mem_addr_read_a, poseidon2_mem_addr_read_b, poseidon2_mem_addr_read_c, poseidon2_mem_addr_read_d, poseidon2_mem_addr_write_a, poseidon2_mem_addr_write_b, poseidon2_mem_addr_write_c, poseidon2_mem_addr_write_d, poseidon2_output_addr, poseidon2_sel_poseidon_perm, poseidon2_space_id, range_check_alu_rng_chk, range_check_clk, range_check_cmp_hi_bits_rng_chk, range_check_cmp_lo_bits_rng_chk, range_check_dyn_diff, range_check_dyn_rng_chk_bits, range_check_dyn_rng_chk_pow_2, range_check_gas_da_rng_chk, range_check_gas_l2_rng_chk, range_check_is_lte_u112, range_check_is_lte_u128, range_check_is_lte_u16, range_check_is_lte_u32, range_check_is_lte_u48, range_check_is_lte_u64, range_check_is_lte_u80, range_check_is_lte_u96, range_check_mem_rng_chk, range_check_rng_chk_bits, range_check_sel_lookup_0, range_check_sel_lookup_1, range_check_sel_lookup_2, range_check_sel_lookup_3, range_check_sel_lookup_4, range_check_sel_lookup_5, range_check_sel_lookup_6, range_check_sel_rng_chk, range_check_u16_r0, range_check_u16_r1, range_check_u16_r2, range_check_u16_r3, range_check_u16_r4, range_check_u16_r5, range_check_u16_r6, range_check_u16_r7, range_check_value, sha256_clk, sha256_input, sha256_output, sha256_sel_sha256_compression, sha256_state, slice_addr, slice_clk, slice_cnt, slice_col_offset, slice_one_min_inv, slice_sel_cd_cpy, slice_sel_mem_active, slice_sel_return, slice_sel_start, slice_space_id, slice_val, lookup_rng_chk_pow_2_counts, lookup_rng_chk_diff_counts, lookup_rng_chk_0_counts, lookup_rng_chk_1_counts, lookup_rng_chk_2_counts, lookup_rng_chk_3_counts, lookup_rng_chk_4_counts, lookup_rng_chk_5_counts, lookup_rng_chk_6_counts, lookup_rng_chk_7_counts, lookup_pow_2_0_counts, lookup_pow_2_1_counts, lookup_byte_lengths_counts, lookup_byte_operations_counts, lookup_opcode_gas_counts, kernel_output_lookup_counts, lookup_into_kernel_counts, lookup_cd_value_counts, lookup_ret_value_counts, incl_main_tag_err_counts, incl_mem_tag_err_counts -#define DERIVED_WITNESS_ENTITIES perm_rng_mem_inv, perm_rng_cmp_lo_inv, perm_rng_cmp_hi_inv, perm_rng_alu_inv, perm_cmp_alu_inv, perm_rng_gas_l2_inv, perm_rng_gas_da_inv, perm_l2_start_gas_inv, perm_da_start_gas_inv, perm_l2_end_gas_inv, perm_da_end_gas_inv, perm_pos_mem_read_a_inv, perm_pos_mem_read_b_inv, perm_pos_mem_read_c_inv, perm_pos_mem_read_d_inv, perm_pos_mem_write_a_inv, perm_pos_mem_write_b_inv, perm_pos_mem_write_c_inv, perm_pos_mem_write_d_inv, perm_slice_mem_inv, perm_main_alu_inv, perm_main_bin_inv, perm_main_conv_inv, perm_main_pos2_perm_inv, perm_main_pedersen_inv, perm_main_slice_inv, perm_main_mem_a_inv, perm_main_mem_b_inv, perm_main_mem_c_inv, perm_main_mem_d_inv, perm_main_mem_ind_addr_a_inv, perm_main_mem_ind_addr_b_inv, perm_main_mem_ind_addr_c_inv, perm_main_mem_ind_addr_d_inv, lookup_rng_chk_pow_2_inv, lookup_rng_chk_diff_inv, lookup_rng_chk_0_inv, lookup_rng_chk_1_inv, lookup_rng_chk_2_inv, lookup_rng_chk_3_inv, lookup_rng_chk_4_inv, lookup_rng_chk_5_inv, lookup_rng_chk_6_inv, lookup_rng_chk_7_inv, lookup_pow_2_0_inv, lookup_pow_2_1_inv, lookup_byte_lengths_inv, lookup_byte_operations_inv, lookup_opcode_gas_inv, kernel_output_lookup_inv, lookup_into_kernel_inv, lookup_cd_value_inv, lookup_ret_value_inv, incl_main_tag_err_inv, incl_mem_tag_err_inv +#define WIRE_ENTITIES main_kernel_inputs, main_kernel_value_out, main_kernel_side_effect_out, main_kernel_metadata_out, main_calldata, main_returndata, alu_a_hi, alu_a_lo, alu_b_hi, alu_b_lo, alu_b_pow, alu_c_hi, alu_c_lo, alu_cf, alu_clk, alu_cmp_gadget_gt, alu_cmp_gadget_input_a, alu_cmp_gadget_input_b, alu_cmp_gadget_result, alu_cmp_gadget_sel, alu_ff_tag, alu_ia, alu_ib, alu_ic, alu_in_tag, alu_max_bits_sub_b_bits, alu_max_bits_sub_b_pow, alu_op_add, alu_op_cast, alu_op_div, alu_op_eq, alu_op_lt, alu_op_lte, alu_op_mul, alu_op_not, alu_op_shl, alu_op_shr, alu_op_sub, alu_partial_prod_hi, alu_partial_prod_lo, alu_range_check_input_value, alu_range_check_num_bits, alu_range_check_sel, alu_remainder, alu_sel_alu, alu_sel_cmp, alu_sel_shift_which, alu_u128_tag, alu_u16_tag, alu_u1_tag, alu_u32_tag, alu_u64_tag, alu_u8_tag, alu_zero_shift, binary_acc_ia, binary_acc_ib, binary_acc_ic, binary_clk, binary_ia_bytes, binary_ib_bytes, binary_ic_bytes, binary_in_tag, binary_mem_tag_ctr, binary_mem_tag_ctr_inv, binary_op_id, binary_sel_bin, binary_start, cmp_a_hi, cmp_a_lo, cmp_b_hi, cmp_b_lo, cmp_borrow, cmp_clk, cmp_cmp_rng_ctr, cmp_input_a, cmp_input_b, cmp_op_eq, cmp_op_eq_diff_inv, cmp_op_gt, cmp_p_a_borrow, cmp_p_b_borrow, cmp_p_sub_a_hi, cmp_p_sub_a_lo, cmp_p_sub_b_hi, cmp_p_sub_b_lo, cmp_range_chk_clk, cmp_res_hi, cmp_res_lo, cmp_result, cmp_sel_cmp, cmp_sel_rng_chk, cmp_shift_sel, conversion_clk, conversion_input, conversion_num_limbs, conversion_output_bits, conversion_radix, conversion_sel_to_radix_le, keccakf1600_clk, keccakf1600_input, keccakf1600_output, keccakf1600_sel_keccakf1600, main_abs_da_rem_gas, main_abs_l2_rem_gas, main_alu_in_tag, main_base_da_gas_op_cost, main_base_l2_gas_op_cost, main_bin_op_id, main_call_ptr, main_da_gas_remaining, main_da_out_of_gas, main_dyn_da_gas_op_cost, main_dyn_gas_multiplier, main_dyn_l2_gas_op_cost, main_emit_l2_to_l1_msg_write_offset, main_emit_note_hash_write_offset, main_emit_nullifier_write_offset, main_emit_unencrypted_log_write_offset, main_ia, main_ib, main_ic, main_id, main_id_zero, main_ind_addr_a, main_ind_addr_b, main_ind_addr_c, main_ind_addr_d, main_internal_return_ptr, main_inv, main_is_fake_row, main_is_gas_accounted, main_kernel_in_offset, main_kernel_out_offset, main_l1_to_l2_msg_exists_write_offset, main_l2_gas_remaining, main_l2_out_of_gas, main_mem_addr_a, main_mem_addr_b, main_mem_addr_c, main_mem_addr_d, main_note_hash_exist_write_offset, main_nullifier_exists_write_offset, main_nullifier_non_exists_write_offset, main_op_err, main_opcode_val, main_pc, main_r_in_tag, main_rwa, main_rwb, main_rwc, main_rwd, main_sel_alu, main_sel_bin, main_sel_calldata, main_sel_execution_end, main_sel_execution_row, main_sel_kernel_inputs, main_sel_kernel_out, main_sel_mem_op_a, main_sel_mem_op_b, main_sel_mem_op_c, main_sel_mem_op_d, main_sel_mov_ia_to_ic, main_sel_mov_ib_to_ic, main_sel_op_add, main_sel_op_address, main_sel_op_and, main_sel_op_block_number, main_sel_op_calldata_copy, main_sel_op_cast, main_sel_op_chain_id, main_sel_op_dagasleft, main_sel_op_div, main_sel_op_ecadd, main_sel_op_emit_l2_to_l1_msg, main_sel_op_emit_note_hash, main_sel_op_emit_nullifier, main_sel_op_emit_unencrypted_log, main_sel_op_eq, main_sel_op_external_call, main_sel_op_external_return, main_sel_op_external_revert, main_sel_op_fdiv, main_sel_op_fee_per_da_gas, main_sel_op_fee_per_l2_gas, main_sel_op_function_selector, main_sel_op_get_contract_instance, main_sel_op_internal_call, main_sel_op_internal_return, main_sel_op_is_static_call, main_sel_op_jump, main_sel_op_jumpi, main_sel_op_keccak, main_sel_op_l1_to_l2_msg_exists, main_sel_op_l2gasleft, main_sel_op_lt, main_sel_op_lte, main_sel_op_mov, main_sel_op_msm, main_sel_op_mul, main_sel_op_not, main_sel_op_note_hash_exists, main_sel_op_nullifier_exists, main_sel_op_or, main_sel_op_poseidon2, main_sel_op_radix_le, main_sel_op_sender, main_sel_op_set, main_sel_op_sha256, main_sel_op_shl, main_sel_op_shr, main_sel_op_sload, main_sel_op_sstore, main_sel_op_static_call, main_sel_op_storage_address, main_sel_op_sub, main_sel_op_timestamp, main_sel_op_transaction_fee, main_sel_op_version, main_sel_op_xor, main_sel_q_kernel_lookup, main_sel_q_kernel_output_lookup, main_sel_resolve_ind_addr_a, main_sel_resolve_ind_addr_b, main_sel_resolve_ind_addr_c, main_sel_resolve_ind_addr_d, main_sel_returndata, main_sel_rng_16, main_sel_rng_8, main_sel_slice_gadget, main_side_effect_counter, main_sload_write_offset, main_space_id, main_sstore_write_offset, main_tag_err, main_w_in_tag, mem_addr, mem_clk, mem_diff, mem_glob_addr, mem_last, mem_lastAccess, mem_one_min_inv, mem_r_in_tag, mem_rw, mem_sel_mem, mem_sel_mov_ia_to_ic, mem_sel_mov_ib_to_ic, mem_sel_op_a, mem_sel_op_b, mem_sel_op_c, mem_sel_op_d, mem_sel_op_poseidon_read_a, mem_sel_op_poseidon_read_b, mem_sel_op_poseidon_read_c, mem_sel_op_poseidon_read_d, mem_sel_op_poseidon_write_a, mem_sel_op_poseidon_write_b, mem_sel_op_poseidon_write_c, mem_sel_op_poseidon_write_d, mem_sel_op_slice, mem_sel_resolve_ind_addr_a, mem_sel_resolve_ind_addr_b, mem_sel_resolve_ind_addr_c, mem_sel_resolve_ind_addr_d, mem_sel_rng_chk, mem_skip_check_tag, mem_space_id, mem_tag, mem_tag_err, mem_tsp, mem_val, mem_w_in_tag, poseidon2_B_10_0, poseidon2_B_10_1, poseidon2_B_10_2, poseidon2_B_10_3, poseidon2_B_11_0, poseidon2_B_11_1, poseidon2_B_11_2, poseidon2_B_11_3, poseidon2_B_12_0, poseidon2_B_12_1, poseidon2_B_12_2, poseidon2_B_12_3, poseidon2_B_13_0, poseidon2_B_13_1, poseidon2_B_13_2, poseidon2_B_13_3, poseidon2_B_14_0, poseidon2_B_14_1, poseidon2_B_14_2, poseidon2_B_14_3, poseidon2_B_15_0, poseidon2_B_15_1, poseidon2_B_15_2, poseidon2_B_15_3, poseidon2_B_16_0, poseidon2_B_16_1, poseidon2_B_16_2, poseidon2_B_16_3, poseidon2_B_17_0, poseidon2_B_17_1, poseidon2_B_17_2, poseidon2_B_17_3, poseidon2_B_18_0, poseidon2_B_18_1, poseidon2_B_18_2, poseidon2_B_18_3, poseidon2_B_19_0, poseidon2_B_19_1, poseidon2_B_19_2, poseidon2_B_19_3, poseidon2_B_20_0, poseidon2_B_20_1, poseidon2_B_20_2, poseidon2_B_20_3, poseidon2_B_21_0, poseidon2_B_21_1, poseidon2_B_21_2, poseidon2_B_21_3, poseidon2_B_22_0, poseidon2_B_22_1, poseidon2_B_22_2, poseidon2_B_22_3, poseidon2_B_23_0, poseidon2_B_23_1, poseidon2_B_23_2, poseidon2_B_23_3, poseidon2_B_24_0, poseidon2_B_24_1, poseidon2_B_24_2, poseidon2_B_24_3, poseidon2_B_25_0, poseidon2_B_25_1, poseidon2_B_25_2, poseidon2_B_25_3, poseidon2_B_26_0, poseidon2_B_26_1, poseidon2_B_26_2, poseidon2_B_26_3, poseidon2_B_27_0, poseidon2_B_27_1, poseidon2_B_27_2, poseidon2_B_27_3, poseidon2_B_28_0, poseidon2_B_28_1, poseidon2_B_28_2, poseidon2_B_28_3, poseidon2_B_29_0, poseidon2_B_29_1, poseidon2_B_29_2, poseidon2_B_29_3, poseidon2_B_30_0, poseidon2_B_30_1, poseidon2_B_30_2, poseidon2_B_30_3, poseidon2_B_31_0, poseidon2_B_31_1, poseidon2_B_31_2, poseidon2_B_31_3, poseidon2_B_32_0, poseidon2_B_32_1, poseidon2_B_32_2, poseidon2_B_32_3, poseidon2_B_33_0, poseidon2_B_33_1, poseidon2_B_33_2, poseidon2_B_33_3, poseidon2_B_34_0, poseidon2_B_34_1, poseidon2_B_34_2, poseidon2_B_34_3, poseidon2_B_35_0, poseidon2_B_35_1, poseidon2_B_35_2, poseidon2_B_35_3, poseidon2_B_36_0, poseidon2_B_36_1, poseidon2_B_36_2, poseidon2_B_36_3, poseidon2_B_37_0, poseidon2_B_37_1, poseidon2_B_37_2, poseidon2_B_37_3, poseidon2_B_38_0, poseidon2_B_38_1, poseidon2_B_38_2, poseidon2_B_38_3, poseidon2_B_39_0, poseidon2_B_39_1, poseidon2_B_39_2, poseidon2_B_39_3, poseidon2_B_40_0, poseidon2_B_40_1, poseidon2_B_40_2, poseidon2_B_40_3, poseidon2_B_41_0, poseidon2_B_41_1, poseidon2_B_41_2, poseidon2_B_41_3, poseidon2_B_42_0, poseidon2_B_42_1, poseidon2_B_42_2, poseidon2_B_42_3, poseidon2_B_43_0, poseidon2_B_43_1, poseidon2_B_43_2, poseidon2_B_43_3, poseidon2_B_44_0, poseidon2_B_44_1, poseidon2_B_44_2, poseidon2_B_44_3, poseidon2_B_45_0, poseidon2_B_45_1, poseidon2_B_45_2, poseidon2_B_45_3, poseidon2_B_46_0, poseidon2_B_46_1, poseidon2_B_46_2, poseidon2_B_46_3, poseidon2_B_47_0, poseidon2_B_47_1, poseidon2_B_47_2, poseidon2_B_47_3, poseidon2_B_48_0, poseidon2_B_48_1, poseidon2_B_48_2, poseidon2_B_48_3, poseidon2_B_49_0, poseidon2_B_49_1, poseidon2_B_49_2, poseidon2_B_49_3, poseidon2_B_4_0, poseidon2_B_4_1, poseidon2_B_4_2, poseidon2_B_4_3, poseidon2_B_50_0, poseidon2_B_50_1, poseidon2_B_50_2, poseidon2_B_50_3, poseidon2_B_51_0, poseidon2_B_51_1, poseidon2_B_51_2, poseidon2_B_51_3, poseidon2_B_52_0, poseidon2_B_52_1, poseidon2_B_52_2, poseidon2_B_52_3, poseidon2_B_53_0, poseidon2_B_53_1, poseidon2_B_53_2, poseidon2_B_53_3, poseidon2_B_54_0, poseidon2_B_54_1, poseidon2_B_54_2, poseidon2_B_54_3, poseidon2_B_55_0, poseidon2_B_55_1, poseidon2_B_55_2, poseidon2_B_55_3, poseidon2_B_56_0, poseidon2_B_56_1, poseidon2_B_56_2, poseidon2_B_56_3, poseidon2_B_57_0, poseidon2_B_57_1, poseidon2_B_57_2, poseidon2_B_57_3, poseidon2_B_58_0, poseidon2_B_58_1, poseidon2_B_58_2, poseidon2_B_58_3, poseidon2_B_59_0, poseidon2_B_59_1, poseidon2_B_59_2, poseidon2_B_59_3, poseidon2_B_5_0, poseidon2_B_5_1, poseidon2_B_5_2, poseidon2_B_5_3, poseidon2_B_6_0, poseidon2_B_6_1, poseidon2_B_6_2, poseidon2_B_6_3, poseidon2_B_7_0, poseidon2_B_7_1, poseidon2_B_7_2, poseidon2_B_7_3, poseidon2_B_8_0, poseidon2_B_8_1, poseidon2_B_8_2, poseidon2_B_8_3, poseidon2_B_9_0, poseidon2_B_9_1, poseidon2_B_9_2, poseidon2_B_9_3, poseidon2_EXT_LAYER_4, poseidon2_EXT_LAYER_5, poseidon2_EXT_LAYER_6, poseidon2_EXT_LAYER_7, poseidon2_T_0_4, poseidon2_T_0_5, poseidon2_T_0_6, poseidon2_T_0_7, poseidon2_T_1_4, poseidon2_T_1_5, poseidon2_T_1_6, poseidon2_T_1_7, poseidon2_T_2_4, poseidon2_T_2_5, poseidon2_T_2_6, poseidon2_T_2_7, poseidon2_T_3_4, poseidon2_T_3_5, poseidon2_T_3_6, poseidon2_T_3_7, poseidon2_T_60_4, poseidon2_T_60_5, poseidon2_T_60_6, poseidon2_T_60_7, poseidon2_T_61_4, poseidon2_T_61_5, poseidon2_T_61_6, poseidon2_T_61_7, poseidon2_T_62_4, poseidon2_T_62_5, poseidon2_T_62_6, poseidon2_T_62_7, poseidon2_T_63_4, poseidon2_T_63_5, poseidon2_T_63_6, poseidon2_T_63_7, poseidon2_a_0, poseidon2_a_1, poseidon2_a_2, poseidon2_a_3, poseidon2_b_0, poseidon2_b_1, poseidon2_b_2, poseidon2_b_3, poseidon2_clk, poseidon2_input_addr, poseidon2_mem_addr_read_a, poseidon2_mem_addr_read_b, poseidon2_mem_addr_read_c, poseidon2_mem_addr_read_d, poseidon2_mem_addr_write_a, poseidon2_mem_addr_write_b, poseidon2_mem_addr_write_c, poseidon2_mem_addr_write_d, poseidon2_output_addr, poseidon2_sel_poseidon_perm, poseidon2_space_id, range_check_alu_rng_chk, range_check_clk, range_check_cmp_hi_bits_rng_chk, range_check_cmp_lo_bits_rng_chk, range_check_dyn_diff, range_check_dyn_rng_chk_bits, range_check_dyn_rng_chk_pow_2, range_check_gas_da_rng_chk, range_check_gas_l2_rng_chk, range_check_is_lte_u112, range_check_is_lte_u128, range_check_is_lte_u16, range_check_is_lte_u32, range_check_is_lte_u48, range_check_is_lte_u64, range_check_is_lte_u80, range_check_is_lte_u96, range_check_mem_rng_chk, range_check_rng_chk_bits, range_check_sel_lookup_0, range_check_sel_lookup_1, range_check_sel_lookup_2, range_check_sel_lookup_3, range_check_sel_lookup_4, range_check_sel_lookup_5, range_check_sel_lookup_6, range_check_sel_rng_chk, range_check_u16_r0, range_check_u16_r1, range_check_u16_r2, range_check_u16_r3, range_check_u16_r4, range_check_u16_r5, range_check_u16_r6, range_check_u16_r7, range_check_value, sha256_clk, sha256_input, sha256_output, sha256_sel_sha256_compression, sha256_state, slice_addr, slice_clk, slice_cnt, slice_col_offset, slice_one_min_inv, slice_sel_cd_cpy, slice_sel_mem_active, slice_sel_return, slice_sel_start, slice_space_id, slice_val, lookup_rng_chk_pow_2_counts, lookup_rng_chk_diff_counts, lookup_rng_chk_0_counts, lookup_rng_chk_1_counts, lookup_rng_chk_2_counts, lookup_rng_chk_3_counts, lookup_rng_chk_4_counts, lookup_rng_chk_5_counts, lookup_rng_chk_6_counts, lookup_rng_chk_7_counts, lookup_pow_2_0_counts, lookup_pow_2_1_counts, lookup_byte_lengths_counts, lookup_byte_operations_counts, lookup_opcode_gas_counts, kernel_output_lookup_counts, lookup_into_kernel_counts, lookup_cd_value_counts, lookup_ret_value_counts, incl_main_tag_err_counts, incl_mem_tag_err_counts +#define DERIVED_WITNESS_ENTITIES perm_rng_mem_inv, perm_rng_cmp_lo_inv, perm_rng_cmp_hi_inv, perm_rng_alu_inv, perm_cmp_alu_inv, perm_rng_gas_l2_inv, perm_rng_gas_da_inv, perm_l2_start_gas_inv, perm_da_start_gas_inv, perm_l2_end_gas_inv, perm_da_end_gas_inv, perm_pos_mem_read_a_inv, perm_pos_mem_read_b_inv, perm_pos_mem_read_c_inv, perm_pos_mem_read_d_inv, perm_pos_mem_write_a_inv, perm_pos_mem_write_b_inv, perm_pos_mem_write_c_inv, perm_pos_mem_write_d_inv, perm_slice_mem_inv, perm_main_alu_inv, perm_main_bin_inv, perm_main_conv_inv, perm_main_sha256_inv, perm_main_pos2_perm_inv, perm_main_slice_inv, perm_main_mem_a_inv, perm_main_mem_b_inv, perm_main_mem_c_inv, perm_main_mem_d_inv, perm_main_mem_ind_addr_a_inv, perm_main_mem_ind_addr_b_inv, perm_main_mem_ind_addr_c_inv, perm_main_mem_ind_addr_d_inv, lookup_rng_chk_pow_2_inv, lookup_rng_chk_diff_inv, lookup_rng_chk_0_inv, lookup_rng_chk_1_inv, lookup_rng_chk_2_inv, lookup_rng_chk_3_inv, lookup_rng_chk_4_inv, lookup_rng_chk_5_inv, lookup_rng_chk_6_inv, lookup_rng_chk_7_inv, lookup_pow_2_0_inv, lookup_pow_2_1_inv, lookup_byte_lengths_inv, lookup_byte_operations_inv, lookup_opcode_gas_inv, kernel_output_lookup_inv, lookup_into_kernel_inv, lookup_cd_value_inv, lookup_ret_value_inv, incl_main_tag_err_inv, incl_mem_tag_err_inv #define SHIFTED_ENTITIES binary_acc_ia_shift, binary_acc_ib_shift, binary_acc_ic_shift, binary_mem_tag_ctr_shift, binary_op_id_shift, cmp_a_hi_shift, cmp_a_lo_shift, cmp_b_hi_shift, cmp_b_lo_shift, cmp_cmp_rng_ctr_shift, cmp_op_gt_shift, cmp_p_sub_a_hi_shift, cmp_p_sub_a_lo_shift, cmp_p_sub_b_hi_shift, cmp_p_sub_b_lo_shift, cmp_sel_rng_chk_shift, main_da_gas_remaining_shift, main_emit_l2_to_l1_msg_write_offset_shift, main_emit_note_hash_write_offset_shift, main_emit_nullifier_write_offset_shift, main_emit_unencrypted_log_write_offset_shift, main_internal_return_ptr_shift, main_l1_to_l2_msg_exists_write_offset_shift, main_l2_gas_remaining_shift, main_note_hash_exist_write_offset_shift, main_nullifier_exists_write_offset_shift, main_nullifier_non_exists_write_offset_shift, main_pc_shift, main_sel_execution_end_shift, main_sel_execution_row_shift, main_sload_write_offset_shift, main_sstore_write_offset_shift, mem_glob_addr_shift, mem_rw_shift, mem_sel_mem_shift, mem_tag_shift, mem_tsp_shift, mem_val_shift, slice_addr_shift, slice_clk_shift, slice_cnt_shift, slice_col_offset_shift, slice_sel_cd_cpy_shift, slice_sel_mem_active_shift, slice_sel_return_shift, slice_sel_start_shift, slice_space_id_shift #define TO_BE_SHIFTED(e) e.binary_acc_ia, e.binary_acc_ib, e.binary_acc_ic, e.binary_mem_tag_ctr, e.binary_op_id, e.cmp_a_hi, e.cmp_a_lo, e.cmp_b_hi, e.cmp_b_lo, e.cmp_cmp_rng_ctr, e.cmp_op_gt, e.cmp_p_sub_a_hi, e.cmp_p_sub_a_lo, e.cmp_p_sub_b_hi, e.cmp_p_sub_b_lo, e.cmp_sel_rng_chk, e.main_da_gas_remaining, e.main_emit_l2_to_l1_msg_write_offset, e.main_emit_note_hash_write_offset, e.main_emit_nullifier_write_offset, e.main_emit_unencrypted_log_write_offset, e.main_internal_return_ptr, e.main_l1_to_l2_msg_exists_write_offset, e.main_l2_gas_remaining, e.main_note_hash_exist_write_offset, e.main_nullifier_exists_write_offset, e.main_nullifier_non_exists_write_offset, e.main_pc, e.main_sel_execution_end, e.main_sel_execution_row, e.main_sload_write_offset, e.main_sstore_write_offset, e.mem_glob_addr, e.mem_rw, e.mem_sel_mem, e.mem_tag, e.mem_tsp, e.mem_val, e.slice_addr, e.slice_clk, e.slice_cnt, e.slice_col_offset, e.slice_sel_cd_cpy, e.slice_sel_mem_active, e.slice_sel_return, e.slice_sel_start, e.slice_space_id #define ALL_ENTITIES PRECOMPUTED_ENTITIES, WIRE_ENTITIES, DERIVED_WITNESS_ENTITIES, SHIFTED_ENTITIES @@ -123,95 +122,29 @@ class AvmFlavor { static constexpr bool HasZK = false; static constexpr size_t NUM_PRECOMPUTED_ENTITIES = 21; - static constexpr size_t NUM_WITNESS_ENTITIES = 688; + static constexpr size_t NUM_WITNESS_ENTITIES = 682; static constexpr size_t NUM_SHIFTED_ENTITIES = 47; static constexpr size_t NUM_WIRES = NUM_WITNESS_ENTITIES + NUM_PRECOMPUTED_ENTITIES; - // We have two copies of the witness entities, so we subtract the number of fixed ones (they have no shift), one for - // the unshifted and one for the shifted - static constexpr size_t NUM_ALL_ENTITIES = 756; + // We have two copies of the witness entities, so we subtract the number of fixed ones (they have no shift), one for the unshifted and one for the shifted + static constexpr size_t NUM_ALL_ENTITIES = 750; // The total number of witnesses including shifts and derived entities. static constexpr size_t NUM_ALL_WITNESS_ENTITIES = NUM_WITNESS_ENTITIES + NUM_SHIFTED_ENTITIES; // Need to be templated for recursive verifier template using MainRelations_ = std::tuple< - // Relations - Avm_vm::alu, - Avm_vm::binary, - Avm_vm::cmp, - Avm_vm::conversion, - Avm_vm::gas, - Avm_vm::keccakf1600, - Avm_vm::kernel, - Avm_vm::main, - Avm_vm::mem, - Avm_vm::mem_slice, - Avm_vm::pedersen, - Avm_vm::poseidon2, - Avm_vm::range_check, - Avm_vm::sha256>; + // Relations + Avm_vm::alu,Avm_vm::binary,Avm_vm::cmp,Avm_vm::conversion,Avm_vm::gas,Avm_vm::keccakf1600,Avm_vm::kernel,Avm_vm::main,Avm_vm::mem,Avm_vm::mem_slice,Avm_vm::poseidon2,Avm_vm::range_check,Avm_vm::sha256 + >; using MainRelations = MainRelations_; // Need to be templated for recursive verifier template using LookupRelations_ = std::tuple< - // Lookups - incl_main_tag_err_relation, - incl_mem_tag_err_relation, - kernel_output_lookup_relation, - lookup_byte_lengths_relation, - lookup_byte_operations_relation, - lookup_cd_value_relation, - lookup_into_kernel_relation, - lookup_opcode_gas_relation, - lookup_pow_2_0_relation, - lookup_pow_2_1_relation, - lookup_ret_value_relation, - lookup_rng_chk_0_relation, - lookup_rng_chk_1_relation, - lookup_rng_chk_2_relation, - lookup_rng_chk_3_relation, - lookup_rng_chk_4_relation, - lookup_rng_chk_5_relation, - lookup_rng_chk_6_relation, - lookup_rng_chk_7_relation, - lookup_rng_chk_diff_relation, - lookup_rng_chk_pow_2_relation, - perm_cmp_alu_relation, - perm_da_end_gas_relation, - perm_da_start_gas_relation, - perm_l2_end_gas_relation, - perm_l2_start_gas_relation, - perm_main_alu_relation, - perm_main_bin_relation, - perm_main_conv_relation, - perm_main_mem_a_relation, - perm_main_mem_b_relation, - perm_main_mem_c_relation, - perm_main_mem_d_relation, - perm_main_mem_ind_addr_a_relation, - perm_main_mem_ind_addr_b_relation, - perm_main_mem_ind_addr_c_relation, - perm_main_mem_ind_addr_d_relation, - perm_main_pedersen_relation, - perm_main_pos2_perm_relation, - perm_main_slice_relation, - perm_pos_mem_read_a_relation, - perm_pos_mem_read_b_relation, - perm_pos_mem_read_c_relation, - perm_pos_mem_read_d_relation, - perm_pos_mem_write_a_relation, - perm_pos_mem_write_b_relation, - perm_pos_mem_write_c_relation, - perm_pos_mem_write_d_relation, - perm_rng_alu_relation, - perm_rng_cmp_hi_relation, - perm_rng_cmp_lo_relation, - perm_rng_gas_da_relation, - perm_rng_gas_l2_relation, - perm_rng_mem_relation, - perm_slice_mem_relation>; + // Lookups + incl_main_tag_err_relation,incl_mem_tag_err_relation,kernel_output_lookup_relation,lookup_byte_lengths_relation,lookup_byte_operations_relation,lookup_cd_value_relation,lookup_into_kernel_relation,lookup_opcode_gas_relation,lookup_pow_2_0_relation,lookup_pow_2_1_relation,lookup_ret_value_relation,lookup_rng_chk_0_relation,lookup_rng_chk_1_relation,lookup_rng_chk_2_relation,lookup_rng_chk_3_relation,lookup_rng_chk_4_relation,lookup_rng_chk_5_relation,lookup_rng_chk_6_relation,lookup_rng_chk_7_relation,lookup_rng_chk_diff_relation,lookup_rng_chk_pow_2_relation,perm_cmp_alu_relation,perm_da_end_gas_relation,perm_da_start_gas_relation,perm_l2_end_gas_relation,perm_l2_start_gas_relation,perm_main_alu_relation,perm_main_bin_relation,perm_main_conv_relation,perm_main_mem_a_relation,perm_main_mem_b_relation,perm_main_mem_c_relation,perm_main_mem_d_relation,perm_main_mem_ind_addr_a_relation,perm_main_mem_ind_addr_b_relation,perm_main_mem_ind_addr_c_relation,perm_main_mem_ind_addr_d_relation,perm_main_pos2_perm_relation,perm_main_sha256_relation,perm_main_slice_relation,perm_pos_mem_read_a_relation,perm_pos_mem_read_b_relation,perm_pos_mem_read_c_relation,perm_pos_mem_read_d_relation,perm_pos_mem_write_a_relation,perm_pos_mem_write_b_relation,perm_pos_mem_write_c_relation,perm_pos_mem_write_d_relation,perm_rng_alu_relation,perm_rng_cmp_hi_relation,perm_rng_cmp_lo_relation,perm_rng_gas_da_relation,perm_rng_gas_l2_relation,perm_rng_mem_relation,perm_slice_mem_relation + >; using LookupRelations = LookupRelations_; @@ -238,8 +171,8 @@ class AvmFlavor { // After any circuit changes, hover `COMPUTED_AVM_PROOF_LENGTH_IN_FIELDS` in your IDE // to see its value and then update `AVM_PROOF_LENGTH_IN_FIELDS` in constants.nr. static constexpr size_t COMPUTED_AVM_PROOF_LENGTH_IN_FIELDS = - (NUM_WITNESS_ENTITIES + 2) * NUM_FRS_COM + (NUM_ALL_ENTITIES + 1) * NUM_FRS_FR + - CONST_PROOF_SIZE_LOG_N * (NUM_FRS_COM + NUM_FRS_FR * BATCHED_RELATION_PARTIAL_LENGTH); + (NUM_WITNESS_ENTITIES + 2) * NUM_FRS_COM + (NUM_ALL_ENTITIES + 1) * NUM_FRS_FR + + CONST_PROOF_SIZE_LOG_N * (NUM_FRS_COM + NUM_FRS_FR * BATCHED_RELATION_PARTIAL_LENGTH); static_assert(AVM_PROOF_LENGTH_IN_FIELDS == COMPUTED_AVM_PROOF_LENGTH_IN_FIELDS, "\nUnexpected AVM proof length. This might be due to some changes in the\n" @@ -268,46 +201,47 @@ class AvmFlavor { }; private: - template class WireEntities { + template + class WireEntities { public: DEFINE_FLAVOR_MEMBERS(DataType, WIRE_ENTITIES) }; - template class DerivedWitnessEntities { + template + class DerivedWitnessEntities { public: DEFINE_FLAVOR_MEMBERS(DataType, DERIVED_WITNESS_ENTITIES) }; - template class ShiftedEntities { + template + class ShiftedEntities { public: DEFINE_FLAVOR_MEMBERS(DataType, SHIFTED_ENTITIES) }; template - static auto get_to_be_shifted([[maybe_unused]] PrecomputedAndWitnessEntitiesSuperset& entities) - { + static auto get_to_be_shifted([[maybe_unused]] PrecomputedAndWitnessEntitiesSuperset& entities) { return RefArray{ TO_BE_SHIFTED(entities) }; } public: template - class WitnessEntities : public WireEntities, public DerivedWitnessEntities { - public: - DEFINE_COMPOUND_GET_ALL(WireEntities, DerivedWitnessEntities) - auto get_wires() { return WireEntities::get_all(); } - auto get_derived() { return DerivedWitnessEntities::get_all(); } + class WitnessEntities: public WireEntities, public DerivedWitnessEntities { + public: + DEFINE_COMPOUND_GET_ALL(WireEntities, DerivedWitnessEntities) + auto get_wires() { return WireEntities::get_all(); } + auto get_derived() { return DerivedWitnessEntities::get_all(); } }; template - class AllEntities : public PrecomputedEntities, - public WitnessEntities, - public ShiftedEntities { + class AllEntities : public PrecomputedEntities + , public WitnessEntities + , public ShiftedEntities { public: DEFINE_COMPOUND_GET_ALL(PrecomputedEntities, WitnessEntities, ShiftedEntities) - auto get_unshifted() - { - return concatenate(PrecomputedEntities::get_all(), WitnessEntities::get_all()); + auto get_unshifted() { + return concatenate(PrecomputedEntities::get_all(), WitnessEntities::get_all()); } auto get_to_be_shifted() { return AvmFlavor::get_to_be_shifted(*this); } auto get_shifted() { return ShiftedEntities::get_all(); } @@ -347,16 +281,16 @@ class AvmFlavor { class VerificationKey : public VerificationKey_, VerifierCommitmentKey> { public: - using FF = VerificationKey_::FF; + using FF = VerificationKey_::FF; - VerificationKey() = default; + VerificationKey() = default; VerificationKey(const std::shared_ptr& proving_key) : VerificationKey_(proving_key->circuit_size, static_cast(proving_key->num_public_inputs)) { for (auto [polynomial, commitment] : - zip_view(proving_key->get_precomputed_polynomials(), this->get_all())) { - commitment = proving_key->commitment_key->commit(polynomial); + zip_view(proving_key->get_precomputed_polynomials(), this->get_all())) { + commitment = proving_key->commitment_key->commit(polynomial); } pcs_verification_key = std::make_shared(); } @@ -392,8 +326,8 @@ class AvmFlavor { }; /** - * @brief A container for the prover polynomials handles. - */ + * @brief A container for the prover polynomials handles. + */ class ProverPolynomials : public AllEntities { public: // Define all operations as default, except copy construction/assignment @@ -408,9 +342,9 @@ class AvmFlavor { [[nodiscard]] size_t get_polynomial_size() const { return main_kernel_inputs.size(); } /** - * @brief Returns the evaluations of all prover polynomials at one point on the boolean hypercube, which - * represents one row in the execution trace. - */ + * @brief Returns the evaluations of all prover polynomials at one point on the boolean hypercube, which + * represents one row in the execution trace. + */ [[nodiscard]] AllConstRefValues get_row(size_t row_idx) const; }; @@ -421,31 +355,32 @@ class AvmFlavor { }; /** - * @brief A container for univariates used during Protogalaxy folding and sumcheck. - * @details During folding and sumcheck, the prover evaluates the relations on these univariates. - */ - template using ProverUnivariates = AllEntities>; - - /** - * @brief A container for univariates used during Protogalaxy folding and sumcheck with some of the computation - * optimistically ignored - * @details During folding and sumcheck, the prover evaluates the relations on these univariates. - */ - template - using ProverUnivariatesWithOptimisticSkipping = AllEntities>; + * @brief A container for univariates used during Protogalaxy folding and sumcheck. + * @details During folding and sumcheck, the prover evaluates the relations on these univariates. + */ + template + using ProverUnivariates = AllEntities>; + + /** + * @brief A container for univariates used during Protogalaxy folding and sumcheck with some of the computation + * optimistically ignored + * @details During folding and sumcheck, the prover evaluates the relations on these univariates. + */ + template + using ProverUnivariatesWithOptimisticSkipping = AllEntities>; /** - * @brief A container for univariates produced during the hot loop in sumcheck. - */ + * @brief A container for univariates produced during the hot loop in sumcheck. + */ using ExtendedEdges = ProverUnivariates; /** - * @brief A container for the witness commitments. - * - */ + * @brief A container for the witness commitments. + * + */ using WitnessCommitments = WitnessEntities; - class CommitmentLabels : public AllEntities { + class CommitmentLabels: public AllEntities { private: using Base = AllEntities; @@ -456,12 +391,11 @@ class AvmFlavor { // Templated for use in recursive verifier template class VerifierCommitments_ : public AllEntities { - private: - using Base = AllEntities; + private: + using Base = AllEntities; - public: - VerifierCommitments_(const std::shared_ptr& verification_key) - { + public: + VerifierCommitments_(const std::shared_ptr& verification_key) { this->byte_lookup_sel_bin = verification_key->byte_lookup_sel_bin; this->byte_lookup_table_byte_lengths = verification_key->byte_lookup_table_byte_lengths; this->byte_lookup_table_in_tags = verification_key->byte_lookup_table_in_tags; @@ -490,25 +424,25 @@ class AvmFlavor { using VerifierCommitments = VerifierCommitments_; class Transcript : public NativeTranscript { - public: - uint32_t circuit_size; + public: + uint32_t circuit_size; - std::array commitments; + std::array commitments; - std::vector> sumcheck_univariates; - std::array sumcheck_evaluations; - std::vector zm_cq_comms; - Commitment zm_cq_comm; - Commitment zm_pi_comm; + std::vector> sumcheck_univariates; + std::array sumcheck_evaluations; + std::vector zm_cq_comms; + Commitment zm_cq_comm; + Commitment zm_pi_comm; - Transcript() = default; + Transcript() = default; - Transcript(const std::vector& proof) - : NativeTranscript(proof) - {} + Transcript(const std::vector& proof) + : NativeTranscript(proof) + {} - void deserialize_full_transcript(); - void serialize_full_transcript(); + void deserialize_full_transcript(); + void serialize_full_transcript(); }; }; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/full_row.cpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/full_row.cpp index 1435302ae72..f82e9fbfa77 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/full_row.cpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/full_row.cpp @@ -19,719 +19,714 @@ template std::string field_to_string(const FF& ff) template std::vector AvmFullRow::names() { - return { "byte_lookup_sel_bin", - "byte_lookup_table_byte_lengths", - "byte_lookup_table_in_tags", - "byte_lookup_table_input_a", - "byte_lookup_table_input_b", - "byte_lookup_table_op_id", - "byte_lookup_table_output", - "gas_base_da_gas_fixed_table", - "gas_base_l2_gas_fixed_table", - "gas_dyn_da_gas_fixed_table", - "gas_dyn_l2_gas_fixed_table", - "gas_sel_gas_cost", - "main_clk", - "main_sel_da_end_gas_kernel_input", - "main_sel_da_start_gas_kernel_input", - "main_sel_first", - "main_sel_l2_end_gas_kernel_input", - "main_sel_l2_start_gas_kernel_input", - "main_sel_start_exec", - "main_zeroes", - "powers_power_of_2", - "main_kernel_inputs", - "main_kernel_value_out", - "main_kernel_side_effect_out", - "main_kernel_metadata_out", - "main_calldata", - "main_returndata", - "alu_a_hi", - "alu_a_lo", - "alu_b_hi", - "alu_b_lo", - "alu_b_pow", - "alu_c_hi", - "alu_c_lo", - "alu_cf", - "alu_clk", - "alu_cmp_gadget_gt", - "alu_cmp_gadget_input_a", - "alu_cmp_gadget_input_b", - "alu_cmp_gadget_result", - "alu_cmp_gadget_sel", - "alu_ff_tag", - "alu_ia", - "alu_ib", - "alu_ic", - "alu_in_tag", - "alu_max_bits_sub_b_bits", - "alu_max_bits_sub_b_pow", - "alu_op_add", - "alu_op_cast", - "alu_op_div", - "alu_op_eq", - "alu_op_lt", - "alu_op_lte", - "alu_op_mul", - "alu_op_not", - "alu_op_shl", - "alu_op_shr", - "alu_op_sub", - "alu_partial_prod_hi", - "alu_partial_prod_lo", - "alu_range_check_input_value", - "alu_range_check_num_bits", - "alu_range_check_sel", - "alu_remainder", - "alu_sel_alu", - "alu_sel_cmp", - "alu_sel_shift_which", - "alu_u128_tag", - "alu_u16_tag", - "alu_u1_tag", - "alu_u32_tag", - "alu_u64_tag", - "alu_u8_tag", - "alu_zero_shift", - "binary_acc_ia", - "binary_acc_ib", - "binary_acc_ic", - "binary_clk", - "binary_ia_bytes", - "binary_ib_bytes", - "binary_ic_bytes", - "binary_in_tag", - "binary_mem_tag_ctr", - "binary_mem_tag_ctr_inv", - "binary_op_id", - "binary_sel_bin", - "binary_start", - "cmp_a_hi", - "cmp_a_lo", - "cmp_b_hi", - "cmp_b_lo", - "cmp_borrow", - "cmp_clk", - "cmp_cmp_rng_ctr", - "cmp_input_a", - "cmp_input_b", - "cmp_op_eq", - "cmp_op_eq_diff_inv", - "cmp_op_gt", - "cmp_p_a_borrow", - "cmp_p_b_borrow", - "cmp_p_sub_a_hi", - "cmp_p_sub_a_lo", - "cmp_p_sub_b_hi", - "cmp_p_sub_b_lo", - "cmp_range_chk_clk", - "cmp_res_hi", - "cmp_res_lo", - "cmp_result", - "cmp_sel_cmp", - "cmp_sel_rng_chk", - "cmp_shift_sel", - "conversion_clk", - "conversion_input", - "conversion_num_limbs", - "conversion_output_bits", - "conversion_radix", - "conversion_sel_to_radix_le", - "keccakf1600_clk", - "keccakf1600_input", - "keccakf1600_output", - "keccakf1600_sel_keccakf1600", - "main_abs_da_rem_gas", - "main_abs_l2_rem_gas", - "main_alu_in_tag", - "main_base_da_gas_op_cost", - "main_base_l2_gas_op_cost", - "main_bin_op_id", - "main_call_ptr", - "main_da_gas_remaining", - "main_da_out_of_gas", - "main_dyn_da_gas_op_cost", - "main_dyn_gas_multiplier", - "main_dyn_l2_gas_op_cost", - "main_emit_l2_to_l1_msg_write_offset", - "main_emit_note_hash_write_offset", - "main_emit_nullifier_write_offset", - "main_emit_unencrypted_log_write_offset", - "main_ia", - "main_ib", - "main_ic", - "main_id", - "main_id_zero", - "main_ind_addr_a", - "main_ind_addr_b", - "main_ind_addr_c", - "main_ind_addr_d", - "main_internal_return_ptr", - "main_inv", - "main_is_fake_row", - "main_is_gas_accounted", - "main_kernel_in_offset", - "main_kernel_out_offset", - "main_l1_to_l2_msg_exists_write_offset", - "main_l2_gas_remaining", - "main_l2_out_of_gas", - "main_mem_addr_a", - "main_mem_addr_b", - "main_mem_addr_c", - "main_mem_addr_d", - "main_note_hash_exist_write_offset", - "main_nullifier_exists_write_offset", - "main_nullifier_non_exists_write_offset", - "main_op_err", - "main_opcode_val", - "main_pc", - "main_r_in_tag", - "main_rwa", - "main_rwb", - "main_rwc", - "main_rwd", - "main_sel_alu", - "main_sel_bin", - "main_sel_calldata", - "main_sel_execution_end", - "main_sel_execution_row", - "main_sel_kernel_inputs", - "main_sel_kernel_out", - "main_sel_mem_op_a", - "main_sel_mem_op_b", - "main_sel_mem_op_c", - "main_sel_mem_op_d", - "main_sel_mov_ia_to_ic", - "main_sel_mov_ib_to_ic", - "main_sel_op_add", - "main_sel_op_address", - "main_sel_op_and", - "main_sel_op_block_number", - "main_sel_op_calldata_copy", - "main_sel_op_cast", - "main_sel_op_chain_id", - "main_sel_op_dagasleft", - "main_sel_op_div", - "main_sel_op_ecadd", - "main_sel_op_emit_l2_to_l1_msg", - "main_sel_op_emit_note_hash", - "main_sel_op_emit_nullifier", - "main_sel_op_emit_unencrypted_log", - "main_sel_op_eq", - "main_sel_op_external_call", - "main_sel_op_external_return", - "main_sel_op_external_revert", - "main_sel_op_fdiv", - "main_sel_op_fee_per_da_gas", - "main_sel_op_fee_per_l2_gas", - "main_sel_op_function_selector", - "main_sel_op_get_contract_instance", - "main_sel_op_internal_call", - "main_sel_op_internal_return", - "main_sel_op_is_static_call", - "main_sel_op_jump", - "main_sel_op_jumpi", - "main_sel_op_keccak", - "main_sel_op_l1_to_l2_msg_exists", - "main_sel_op_l2gasleft", - "main_sel_op_lt", - "main_sel_op_lte", - "main_sel_op_mov", - "main_sel_op_msm", - "main_sel_op_mul", - "main_sel_op_not", - "main_sel_op_note_hash_exists", - "main_sel_op_nullifier_exists", - "main_sel_op_or", - "main_sel_op_pedersen", - "main_sel_op_pedersen_commit", - "main_sel_op_poseidon2", - "main_sel_op_radix_le", - "main_sel_op_sender", - "main_sel_op_set", - "main_sel_op_sha256", - "main_sel_op_shl", - "main_sel_op_shr", - "main_sel_op_sload", - "main_sel_op_sstore", - "main_sel_op_static_call", - "main_sel_op_storage_address", - "main_sel_op_sub", - "main_sel_op_timestamp", - "main_sel_op_transaction_fee", - "main_sel_op_version", - "main_sel_op_xor", - "main_sel_q_kernel_lookup", - "main_sel_q_kernel_output_lookup", - "main_sel_resolve_ind_addr_a", - "main_sel_resolve_ind_addr_b", - "main_sel_resolve_ind_addr_c", - "main_sel_resolve_ind_addr_d", - "main_sel_returndata", - "main_sel_rng_16", - "main_sel_rng_8", - "main_sel_slice_gadget", - "main_side_effect_counter", - "main_sload_write_offset", - "main_space_id", - "main_sstore_write_offset", - "main_tag_err", - "main_w_in_tag", - "mem_addr", - "mem_clk", - "mem_diff", - "mem_glob_addr", - "mem_last", - "mem_lastAccess", - "mem_one_min_inv", - "mem_r_in_tag", - "mem_rw", - "mem_sel_mem", - "mem_sel_mov_ia_to_ic", - "mem_sel_mov_ib_to_ic", - "mem_sel_op_a", - "mem_sel_op_b", - "mem_sel_op_c", - "mem_sel_op_d", - "mem_sel_op_poseidon_read_a", - "mem_sel_op_poseidon_read_b", - "mem_sel_op_poseidon_read_c", - "mem_sel_op_poseidon_read_d", - "mem_sel_op_poseidon_write_a", - "mem_sel_op_poseidon_write_b", - "mem_sel_op_poseidon_write_c", - "mem_sel_op_poseidon_write_d", - "mem_sel_op_slice", - "mem_sel_resolve_ind_addr_a", - "mem_sel_resolve_ind_addr_b", - "mem_sel_resolve_ind_addr_c", - "mem_sel_resolve_ind_addr_d", - "mem_sel_rng_chk", - "mem_skip_check_tag", - "mem_space_id", - "mem_tag", - "mem_tag_err", - "mem_tsp", - "mem_val", - "mem_w_in_tag", - "pedersen_clk", - "pedersen_input", - "pedersen_output", - "pedersen_sel_pedersen", - "poseidon2_B_10_0", - "poseidon2_B_10_1", - "poseidon2_B_10_2", - "poseidon2_B_10_3", - "poseidon2_B_11_0", - "poseidon2_B_11_1", - "poseidon2_B_11_2", - "poseidon2_B_11_3", - "poseidon2_B_12_0", - "poseidon2_B_12_1", - "poseidon2_B_12_2", - "poseidon2_B_12_3", - "poseidon2_B_13_0", - "poseidon2_B_13_1", - "poseidon2_B_13_2", - "poseidon2_B_13_3", - "poseidon2_B_14_0", - "poseidon2_B_14_1", - "poseidon2_B_14_2", - "poseidon2_B_14_3", - "poseidon2_B_15_0", - "poseidon2_B_15_1", - "poseidon2_B_15_2", - "poseidon2_B_15_3", - "poseidon2_B_16_0", - "poseidon2_B_16_1", - "poseidon2_B_16_2", - "poseidon2_B_16_3", - "poseidon2_B_17_0", - "poseidon2_B_17_1", - "poseidon2_B_17_2", - "poseidon2_B_17_3", - "poseidon2_B_18_0", - "poseidon2_B_18_1", - "poseidon2_B_18_2", - "poseidon2_B_18_3", - "poseidon2_B_19_0", - "poseidon2_B_19_1", - "poseidon2_B_19_2", - "poseidon2_B_19_3", - "poseidon2_B_20_0", - "poseidon2_B_20_1", - "poseidon2_B_20_2", - "poseidon2_B_20_3", - "poseidon2_B_21_0", - "poseidon2_B_21_1", - "poseidon2_B_21_2", - "poseidon2_B_21_3", - "poseidon2_B_22_0", - "poseidon2_B_22_1", - "poseidon2_B_22_2", - "poseidon2_B_22_3", - "poseidon2_B_23_0", - "poseidon2_B_23_1", - "poseidon2_B_23_2", - "poseidon2_B_23_3", - "poseidon2_B_24_0", - "poseidon2_B_24_1", - "poseidon2_B_24_2", - "poseidon2_B_24_3", - "poseidon2_B_25_0", - "poseidon2_B_25_1", - "poseidon2_B_25_2", - "poseidon2_B_25_3", - "poseidon2_B_26_0", - "poseidon2_B_26_1", - "poseidon2_B_26_2", - "poseidon2_B_26_3", - "poseidon2_B_27_0", - "poseidon2_B_27_1", - "poseidon2_B_27_2", - "poseidon2_B_27_3", - "poseidon2_B_28_0", - "poseidon2_B_28_1", - "poseidon2_B_28_2", - "poseidon2_B_28_3", - "poseidon2_B_29_0", - "poseidon2_B_29_1", - "poseidon2_B_29_2", - "poseidon2_B_29_3", - "poseidon2_B_30_0", - "poseidon2_B_30_1", - "poseidon2_B_30_2", - "poseidon2_B_30_3", - "poseidon2_B_31_0", - "poseidon2_B_31_1", - "poseidon2_B_31_2", - "poseidon2_B_31_3", - "poseidon2_B_32_0", - "poseidon2_B_32_1", - "poseidon2_B_32_2", - "poseidon2_B_32_3", - "poseidon2_B_33_0", - "poseidon2_B_33_1", - "poseidon2_B_33_2", - "poseidon2_B_33_3", - "poseidon2_B_34_0", - "poseidon2_B_34_1", - "poseidon2_B_34_2", - "poseidon2_B_34_3", - "poseidon2_B_35_0", - "poseidon2_B_35_1", - "poseidon2_B_35_2", - "poseidon2_B_35_3", - "poseidon2_B_36_0", - "poseidon2_B_36_1", - "poseidon2_B_36_2", - "poseidon2_B_36_3", - "poseidon2_B_37_0", - "poseidon2_B_37_1", - "poseidon2_B_37_2", - "poseidon2_B_37_3", - "poseidon2_B_38_0", - "poseidon2_B_38_1", - "poseidon2_B_38_2", - "poseidon2_B_38_3", - "poseidon2_B_39_0", - "poseidon2_B_39_1", - "poseidon2_B_39_2", - "poseidon2_B_39_3", - "poseidon2_B_40_0", - "poseidon2_B_40_1", - "poseidon2_B_40_2", - "poseidon2_B_40_3", - "poseidon2_B_41_0", - "poseidon2_B_41_1", - "poseidon2_B_41_2", - "poseidon2_B_41_3", - "poseidon2_B_42_0", - "poseidon2_B_42_1", - "poseidon2_B_42_2", - "poseidon2_B_42_3", - "poseidon2_B_43_0", - "poseidon2_B_43_1", - "poseidon2_B_43_2", - "poseidon2_B_43_3", - "poseidon2_B_44_0", - "poseidon2_B_44_1", - "poseidon2_B_44_2", - "poseidon2_B_44_3", - "poseidon2_B_45_0", - "poseidon2_B_45_1", - "poseidon2_B_45_2", - "poseidon2_B_45_3", - "poseidon2_B_46_0", - "poseidon2_B_46_1", - "poseidon2_B_46_2", - "poseidon2_B_46_3", - "poseidon2_B_47_0", - "poseidon2_B_47_1", - "poseidon2_B_47_2", - "poseidon2_B_47_3", - "poseidon2_B_48_0", - "poseidon2_B_48_1", - "poseidon2_B_48_2", - "poseidon2_B_48_3", - "poseidon2_B_49_0", - "poseidon2_B_49_1", - "poseidon2_B_49_2", - "poseidon2_B_49_3", - "poseidon2_B_4_0", - "poseidon2_B_4_1", - "poseidon2_B_4_2", - "poseidon2_B_4_3", - "poseidon2_B_50_0", - "poseidon2_B_50_1", - "poseidon2_B_50_2", - "poseidon2_B_50_3", - "poseidon2_B_51_0", - "poseidon2_B_51_1", - "poseidon2_B_51_2", - "poseidon2_B_51_3", - "poseidon2_B_52_0", - "poseidon2_B_52_1", - "poseidon2_B_52_2", - "poseidon2_B_52_3", - "poseidon2_B_53_0", - "poseidon2_B_53_1", - "poseidon2_B_53_2", - "poseidon2_B_53_3", - "poseidon2_B_54_0", - "poseidon2_B_54_1", - "poseidon2_B_54_2", - "poseidon2_B_54_3", - "poseidon2_B_55_0", - "poseidon2_B_55_1", - "poseidon2_B_55_2", - "poseidon2_B_55_3", - "poseidon2_B_56_0", - "poseidon2_B_56_1", - "poseidon2_B_56_2", - "poseidon2_B_56_3", - "poseidon2_B_57_0", - "poseidon2_B_57_1", - "poseidon2_B_57_2", - "poseidon2_B_57_3", - "poseidon2_B_58_0", - "poseidon2_B_58_1", - "poseidon2_B_58_2", - "poseidon2_B_58_3", - "poseidon2_B_59_0", - "poseidon2_B_59_1", - "poseidon2_B_59_2", - "poseidon2_B_59_3", - "poseidon2_B_5_0", - "poseidon2_B_5_1", - "poseidon2_B_5_2", - "poseidon2_B_5_3", - "poseidon2_B_6_0", - "poseidon2_B_6_1", - "poseidon2_B_6_2", - "poseidon2_B_6_3", - "poseidon2_B_7_0", - "poseidon2_B_7_1", - "poseidon2_B_7_2", - "poseidon2_B_7_3", - "poseidon2_B_8_0", - "poseidon2_B_8_1", - "poseidon2_B_8_2", - "poseidon2_B_8_3", - "poseidon2_B_9_0", - "poseidon2_B_9_1", - "poseidon2_B_9_2", - "poseidon2_B_9_3", - "poseidon2_EXT_LAYER_4", - "poseidon2_EXT_LAYER_5", - "poseidon2_EXT_LAYER_6", - "poseidon2_EXT_LAYER_7", - "poseidon2_T_0_4", - "poseidon2_T_0_5", - "poseidon2_T_0_6", - "poseidon2_T_0_7", - "poseidon2_T_1_4", - "poseidon2_T_1_5", - "poseidon2_T_1_6", - "poseidon2_T_1_7", - "poseidon2_T_2_4", - "poseidon2_T_2_5", - "poseidon2_T_2_6", - "poseidon2_T_2_7", - "poseidon2_T_3_4", - "poseidon2_T_3_5", - "poseidon2_T_3_6", - "poseidon2_T_3_7", - "poseidon2_T_60_4", - "poseidon2_T_60_5", - "poseidon2_T_60_6", - "poseidon2_T_60_7", - "poseidon2_T_61_4", - "poseidon2_T_61_5", - "poseidon2_T_61_6", - "poseidon2_T_61_7", - "poseidon2_T_62_4", - "poseidon2_T_62_5", - "poseidon2_T_62_6", - "poseidon2_T_62_7", - "poseidon2_T_63_4", - "poseidon2_T_63_5", - "poseidon2_T_63_6", - "poseidon2_T_63_7", - "poseidon2_a_0", - "poseidon2_a_1", - "poseidon2_a_2", - "poseidon2_a_3", - "poseidon2_b_0", - "poseidon2_b_1", - "poseidon2_b_2", - "poseidon2_b_3", - "poseidon2_clk", - "poseidon2_input_addr", - "poseidon2_mem_addr_read_a", - "poseidon2_mem_addr_read_b", - "poseidon2_mem_addr_read_c", - "poseidon2_mem_addr_read_d", - "poseidon2_mem_addr_write_a", - "poseidon2_mem_addr_write_b", - "poseidon2_mem_addr_write_c", - "poseidon2_mem_addr_write_d", - "poseidon2_output_addr", - "poseidon2_sel_poseidon_perm", - "poseidon2_space_id", - "range_check_alu_rng_chk", - "range_check_clk", - "range_check_cmp_hi_bits_rng_chk", - "range_check_cmp_lo_bits_rng_chk", - "range_check_dyn_diff", - "range_check_dyn_rng_chk_bits", - "range_check_dyn_rng_chk_pow_2", - "range_check_gas_da_rng_chk", - "range_check_gas_l2_rng_chk", - "range_check_is_lte_u112", - "range_check_is_lte_u128", - "range_check_is_lte_u16", - "range_check_is_lte_u32", - "range_check_is_lte_u48", - "range_check_is_lte_u64", - "range_check_is_lte_u80", - "range_check_is_lte_u96", - "range_check_mem_rng_chk", - "range_check_rng_chk_bits", - "range_check_sel_lookup_0", - "range_check_sel_lookup_1", - "range_check_sel_lookup_2", - "range_check_sel_lookup_3", - "range_check_sel_lookup_4", - "range_check_sel_lookup_5", - "range_check_sel_lookup_6", - "range_check_sel_rng_chk", - "range_check_u16_r0", - "range_check_u16_r1", - "range_check_u16_r2", - "range_check_u16_r3", - "range_check_u16_r4", - "range_check_u16_r5", - "range_check_u16_r6", - "range_check_u16_r7", - "range_check_value", - "sha256_clk", - "sha256_input", - "sha256_output", - "sha256_sel_sha256_compression", - "sha256_state", - "slice_addr", - "slice_clk", - "slice_cnt", - "slice_col_offset", - "slice_one_min_inv", - "slice_sel_cd_cpy", - "slice_sel_mem_active", - "slice_sel_return", - "slice_sel_start", - "slice_space_id", - "slice_val", - "perm_rng_mem_inv", - "perm_rng_cmp_lo_inv", - "perm_rng_cmp_hi_inv", - "perm_rng_alu_inv", - "perm_cmp_alu_inv", - "perm_rng_gas_l2_inv", - "perm_rng_gas_da_inv", - "perm_l2_start_gas_inv", - "perm_da_start_gas_inv", - "perm_l2_end_gas_inv", - "perm_da_end_gas_inv", - "perm_pos_mem_read_a_inv", - "perm_pos_mem_read_b_inv", - "perm_pos_mem_read_c_inv", - "perm_pos_mem_read_d_inv", - "perm_pos_mem_write_a_inv", - "perm_pos_mem_write_b_inv", - "perm_pos_mem_write_c_inv", - "perm_pos_mem_write_d_inv", - "perm_slice_mem_inv", - "perm_main_alu_inv", - "perm_main_bin_inv", - "perm_main_conv_inv", - "perm_main_pos2_perm_inv", - "perm_main_pedersen_inv", - "perm_main_slice_inv", - "perm_main_mem_a_inv", - "perm_main_mem_b_inv", - "perm_main_mem_c_inv", - "perm_main_mem_d_inv", - "perm_main_mem_ind_addr_a_inv", - "perm_main_mem_ind_addr_b_inv", - "perm_main_mem_ind_addr_c_inv", - "perm_main_mem_ind_addr_d_inv", - "lookup_rng_chk_pow_2_inv", - "lookup_rng_chk_diff_inv", - "lookup_rng_chk_0_inv", - "lookup_rng_chk_1_inv", - "lookup_rng_chk_2_inv", - "lookup_rng_chk_3_inv", - "lookup_rng_chk_4_inv", - "lookup_rng_chk_5_inv", - "lookup_rng_chk_6_inv", - "lookup_rng_chk_7_inv", - "lookup_pow_2_0_inv", - "lookup_pow_2_1_inv", - "lookup_byte_lengths_inv", - "lookup_byte_operations_inv", - "lookup_opcode_gas_inv", - "kernel_output_lookup_inv", - "lookup_into_kernel_inv", - "lookup_cd_value_inv", - "lookup_ret_value_inv", - "incl_main_tag_err_inv", - "incl_mem_tag_err_inv", - "lookup_rng_chk_pow_2_counts", - "lookup_rng_chk_diff_counts", - "lookup_rng_chk_0_counts", - "lookup_rng_chk_1_counts", - "lookup_rng_chk_2_counts", - "lookup_rng_chk_3_counts", - "lookup_rng_chk_4_counts", - "lookup_rng_chk_5_counts", - "lookup_rng_chk_6_counts", - "lookup_rng_chk_7_counts", - "lookup_pow_2_0_counts", - "lookup_pow_2_1_counts", - "lookup_byte_lengths_counts", - "lookup_byte_operations_counts", - "lookup_opcode_gas_counts", - "kernel_output_lookup_counts", - "lookup_into_kernel_counts", - "lookup_cd_value_counts", - "lookup_ret_value_counts", - "incl_main_tag_err_counts", - "incl_mem_tag_err_counts" }; + return { + "byte_lookup_sel_bin" + ,"byte_lookup_table_byte_lengths" + ,"byte_lookup_table_in_tags" + ,"byte_lookup_table_input_a" + ,"byte_lookup_table_input_b" + ,"byte_lookup_table_op_id" + ,"byte_lookup_table_output" + ,"gas_base_da_gas_fixed_table" + ,"gas_base_l2_gas_fixed_table" + ,"gas_dyn_da_gas_fixed_table" + ,"gas_dyn_l2_gas_fixed_table" + ,"gas_sel_gas_cost" + ,"main_clk" + ,"main_sel_da_end_gas_kernel_input" + ,"main_sel_da_start_gas_kernel_input" + ,"main_sel_first" + ,"main_sel_l2_end_gas_kernel_input" + ,"main_sel_l2_start_gas_kernel_input" + ,"main_sel_start_exec" + ,"main_zeroes" + ,"powers_power_of_2" + ,"main_kernel_inputs" + ,"main_kernel_value_out" + ,"main_kernel_side_effect_out" + ,"main_kernel_metadata_out" + ,"main_calldata" + ,"main_returndata" + ,"alu_a_hi" + ,"alu_a_lo" + ,"alu_b_hi" + ,"alu_b_lo" + ,"alu_b_pow" + ,"alu_c_hi" + ,"alu_c_lo" + ,"alu_cf" + ,"alu_clk" + ,"alu_cmp_gadget_gt" + ,"alu_cmp_gadget_input_a" + ,"alu_cmp_gadget_input_b" + ,"alu_cmp_gadget_result" + ,"alu_cmp_gadget_sel" + ,"alu_ff_tag" + ,"alu_ia" + ,"alu_ib" + ,"alu_ic" + ,"alu_in_tag" + ,"alu_max_bits_sub_b_bits" + ,"alu_max_bits_sub_b_pow" + ,"alu_op_add" + ,"alu_op_cast" + ,"alu_op_div" + ,"alu_op_eq" + ,"alu_op_lt" + ,"alu_op_lte" + ,"alu_op_mul" + ,"alu_op_not" + ,"alu_op_shl" + ,"alu_op_shr" + ,"alu_op_sub" + ,"alu_partial_prod_hi" + ,"alu_partial_prod_lo" + ,"alu_range_check_input_value" + ,"alu_range_check_num_bits" + ,"alu_range_check_sel" + ,"alu_remainder" + ,"alu_sel_alu" + ,"alu_sel_cmp" + ,"alu_sel_shift_which" + ,"alu_u128_tag" + ,"alu_u16_tag" + ,"alu_u1_tag" + ,"alu_u32_tag" + ,"alu_u64_tag" + ,"alu_u8_tag" + ,"alu_zero_shift" + ,"binary_acc_ia" + ,"binary_acc_ib" + ,"binary_acc_ic" + ,"binary_clk" + ,"binary_ia_bytes" + ,"binary_ib_bytes" + ,"binary_ic_bytes" + ,"binary_in_tag" + ,"binary_mem_tag_ctr" + ,"binary_mem_tag_ctr_inv" + ,"binary_op_id" + ,"binary_sel_bin" + ,"binary_start" + ,"cmp_a_hi" + ,"cmp_a_lo" + ,"cmp_b_hi" + ,"cmp_b_lo" + ,"cmp_borrow" + ,"cmp_clk" + ,"cmp_cmp_rng_ctr" + ,"cmp_input_a" + ,"cmp_input_b" + ,"cmp_op_eq" + ,"cmp_op_eq_diff_inv" + ,"cmp_op_gt" + ,"cmp_p_a_borrow" + ,"cmp_p_b_borrow" + ,"cmp_p_sub_a_hi" + ,"cmp_p_sub_a_lo" + ,"cmp_p_sub_b_hi" + ,"cmp_p_sub_b_lo" + ,"cmp_range_chk_clk" + ,"cmp_res_hi" + ,"cmp_res_lo" + ,"cmp_result" + ,"cmp_sel_cmp" + ,"cmp_sel_rng_chk" + ,"cmp_shift_sel" + ,"conversion_clk" + ,"conversion_input" + ,"conversion_num_limbs" + ,"conversion_output_bits" + ,"conversion_radix" + ,"conversion_sel_to_radix_le" + ,"keccakf1600_clk" + ,"keccakf1600_input" + ,"keccakf1600_output" + ,"keccakf1600_sel_keccakf1600" + ,"main_abs_da_rem_gas" + ,"main_abs_l2_rem_gas" + ,"main_alu_in_tag" + ,"main_base_da_gas_op_cost" + ,"main_base_l2_gas_op_cost" + ,"main_bin_op_id" + ,"main_call_ptr" + ,"main_da_gas_remaining" + ,"main_da_out_of_gas" + ,"main_dyn_da_gas_op_cost" + ,"main_dyn_gas_multiplier" + ,"main_dyn_l2_gas_op_cost" + ,"main_emit_l2_to_l1_msg_write_offset" + ,"main_emit_note_hash_write_offset" + ,"main_emit_nullifier_write_offset" + ,"main_emit_unencrypted_log_write_offset" + ,"main_ia" + ,"main_ib" + ,"main_ic" + ,"main_id" + ,"main_id_zero" + ,"main_ind_addr_a" + ,"main_ind_addr_b" + ,"main_ind_addr_c" + ,"main_ind_addr_d" + ,"main_internal_return_ptr" + ,"main_inv" + ,"main_is_fake_row" + ,"main_is_gas_accounted" + ,"main_kernel_in_offset" + ,"main_kernel_out_offset" + ,"main_l1_to_l2_msg_exists_write_offset" + ,"main_l2_gas_remaining" + ,"main_l2_out_of_gas" + ,"main_mem_addr_a" + ,"main_mem_addr_b" + ,"main_mem_addr_c" + ,"main_mem_addr_d" + ,"main_note_hash_exist_write_offset" + ,"main_nullifier_exists_write_offset" + ,"main_nullifier_non_exists_write_offset" + ,"main_op_err" + ,"main_opcode_val" + ,"main_pc" + ,"main_r_in_tag" + ,"main_rwa" + ,"main_rwb" + ,"main_rwc" + ,"main_rwd" + ,"main_sel_alu" + ,"main_sel_bin" + ,"main_sel_calldata" + ,"main_sel_execution_end" + ,"main_sel_execution_row" + ,"main_sel_kernel_inputs" + ,"main_sel_kernel_out" + ,"main_sel_mem_op_a" + ,"main_sel_mem_op_b" + ,"main_sel_mem_op_c" + ,"main_sel_mem_op_d" + ,"main_sel_mov_ia_to_ic" + ,"main_sel_mov_ib_to_ic" + ,"main_sel_op_add" + ,"main_sel_op_address" + ,"main_sel_op_and" + ,"main_sel_op_block_number" + ,"main_sel_op_calldata_copy" + ,"main_sel_op_cast" + ,"main_sel_op_chain_id" + ,"main_sel_op_dagasleft" + ,"main_sel_op_div" + ,"main_sel_op_ecadd" + ,"main_sel_op_emit_l2_to_l1_msg" + ,"main_sel_op_emit_note_hash" + ,"main_sel_op_emit_nullifier" + ,"main_sel_op_emit_unencrypted_log" + ,"main_sel_op_eq" + ,"main_sel_op_external_call" + ,"main_sel_op_external_return" + ,"main_sel_op_external_revert" + ,"main_sel_op_fdiv" + ,"main_sel_op_fee_per_da_gas" + ,"main_sel_op_fee_per_l2_gas" + ,"main_sel_op_function_selector" + ,"main_sel_op_get_contract_instance" + ,"main_sel_op_internal_call" + ,"main_sel_op_internal_return" + ,"main_sel_op_is_static_call" + ,"main_sel_op_jump" + ,"main_sel_op_jumpi" + ,"main_sel_op_keccak" + ,"main_sel_op_l1_to_l2_msg_exists" + ,"main_sel_op_l2gasleft" + ,"main_sel_op_lt" + ,"main_sel_op_lte" + ,"main_sel_op_mov" + ,"main_sel_op_msm" + ,"main_sel_op_mul" + ,"main_sel_op_not" + ,"main_sel_op_note_hash_exists" + ,"main_sel_op_nullifier_exists" + ,"main_sel_op_or" + ,"main_sel_op_poseidon2" + ,"main_sel_op_radix_le" + ,"main_sel_op_sender" + ,"main_sel_op_set" + ,"main_sel_op_sha256" + ,"main_sel_op_shl" + ,"main_sel_op_shr" + ,"main_sel_op_sload" + ,"main_sel_op_sstore" + ,"main_sel_op_static_call" + ,"main_sel_op_storage_address" + ,"main_sel_op_sub" + ,"main_sel_op_timestamp" + ,"main_sel_op_transaction_fee" + ,"main_sel_op_version" + ,"main_sel_op_xor" + ,"main_sel_q_kernel_lookup" + ,"main_sel_q_kernel_output_lookup" + ,"main_sel_resolve_ind_addr_a" + ,"main_sel_resolve_ind_addr_b" + ,"main_sel_resolve_ind_addr_c" + ,"main_sel_resolve_ind_addr_d" + ,"main_sel_returndata" + ,"main_sel_rng_16" + ,"main_sel_rng_8" + ,"main_sel_slice_gadget" + ,"main_side_effect_counter" + ,"main_sload_write_offset" + ,"main_space_id" + ,"main_sstore_write_offset" + ,"main_tag_err" + ,"main_w_in_tag" + ,"mem_addr" + ,"mem_clk" + ,"mem_diff" + ,"mem_glob_addr" + ,"mem_last" + ,"mem_lastAccess" + ,"mem_one_min_inv" + ,"mem_r_in_tag" + ,"mem_rw" + ,"mem_sel_mem" + ,"mem_sel_mov_ia_to_ic" + ,"mem_sel_mov_ib_to_ic" + ,"mem_sel_op_a" + ,"mem_sel_op_b" + ,"mem_sel_op_c" + ,"mem_sel_op_d" + ,"mem_sel_op_poseidon_read_a" + ,"mem_sel_op_poseidon_read_b" + ,"mem_sel_op_poseidon_read_c" + ,"mem_sel_op_poseidon_read_d" + ,"mem_sel_op_poseidon_write_a" + ,"mem_sel_op_poseidon_write_b" + ,"mem_sel_op_poseidon_write_c" + ,"mem_sel_op_poseidon_write_d" + ,"mem_sel_op_slice" + ,"mem_sel_resolve_ind_addr_a" + ,"mem_sel_resolve_ind_addr_b" + ,"mem_sel_resolve_ind_addr_c" + ,"mem_sel_resolve_ind_addr_d" + ,"mem_sel_rng_chk" + ,"mem_skip_check_tag" + ,"mem_space_id" + ,"mem_tag" + ,"mem_tag_err" + ,"mem_tsp" + ,"mem_val" + ,"mem_w_in_tag" + ,"poseidon2_B_10_0" + ,"poseidon2_B_10_1" + ,"poseidon2_B_10_2" + ,"poseidon2_B_10_3" + ,"poseidon2_B_11_0" + ,"poseidon2_B_11_1" + ,"poseidon2_B_11_2" + ,"poseidon2_B_11_3" + ,"poseidon2_B_12_0" + ,"poseidon2_B_12_1" + ,"poseidon2_B_12_2" + ,"poseidon2_B_12_3" + ,"poseidon2_B_13_0" + ,"poseidon2_B_13_1" + ,"poseidon2_B_13_2" + ,"poseidon2_B_13_3" + ,"poseidon2_B_14_0" + ,"poseidon2_B_14_1" + ,"poseidon2_B_14_2" + ,"poseidon2_B_14_3" + ,"poseidon2_B_15_0" + ,"poseidon2_B_15_1" + ,"poseidon2_B_15_2" + ,"poseidon2_B_15_3" + ,"poseidon2_B_16_0" + ,"poseidon2_B_16_1" + ,"poseidon2_B_16_2" + ,"poseidon2_B_16_3" + ,"poseidon2_B_17_0" + ,"poseidon2_B_17_1" + ,"poseidon2_B_17_2" + ,"poseidon2_B_17_3" + ,"poseidon2_B_18_0" + ,"poseidon2_B_18_1" + ,"poseidon2_B_18_2" + ,"poseidon2_B_18_3" + ,"poseidon2_B_19_0" + ,"poseidon2_B_19_1" + ,"poseidon2_B_19_2" + ,"poseidon2_B_19_3" + ,"poseidon2_B_20_0" + ,"poseidon2_B_20_1" + ,"poseidon2_B_20_2" + ,"poseidon2_B_20_3" + ,"poseidon2_B_21_0" + ,"poseidon2_B_21_1" + ,"poseidon2_B_21_2" + ,"poseidon2_B_21_3" + ,"poseidon2_B_22_0" + ,"poseidon2_B_22_1" + ,"poseidon2_B_22_2" + ,"poseidon2_B_22_3" + ,"poseidon2_B_23_0" + ,"poseidon2_B_23_1" + ,"poseidon2_B_23_2" + ,"poseidon2_B_23_3" + ,"poseidon2_B_24_0" + ,"poseidon2_B_24_1" + ,"poseidon2_B_24_2" + ,"poseidon2_B_24_3" + ,"poseidon2_B_25_0" + ,"poseidon2_B_25_1" + ,"poseidon2_B_25_2" + ,"poseidon2_B_25_3" + ,"poseidon2_B_26_0" + ,"poseidon2_B_26_1" + ,"poseidon2_B_26_2" + ,"poseidon2_B_26_3" + ,"poseidon2_B_27_0" + ,"poseidon2_B_27_1" + ,"poseidon2_B_27_2" + ,"poseidon2_B_27_3" + ,"poseidon2_B_28_0" + ,"poseidon2_B_28_1" + ,"poseidon2_B_28_2" + ,"poseidon2_B_28_3" + ,"poseidon2_B_29_0" + ,"poseidon2_B_29_1" + ,"poseidon2_B_29_2" + ,"poseidon2_B_29_3" + ,"poseidon2_B_30_0" + ,"poseidon2_B_30_1" + ,"poseidon2_B_30_2" + ,"poseidon2_B_30_3" + ,"poseidon2_B_31_0" + ,"poseidon2_B_31_1" + ,"poseidon2_B_31_2" + ,"poseidon2_B_31_3" + ,"poseidon2_B_32_0" + ,"poseidon2_B_32_1" + ,"poseidon2_B_32_2" + ,"poseidon2_B_32_3" + ,"poseidon2_B_33_0" + ,"poseidon2_B_33_1" + ,"poseidon2_B_33_2" + ,"poseidon2_B_33_3" + ,"poseidon2_B_34_0" + ,"poseidon2_B_34_1" + ,"poseidon2_B_34_2" + ,"poseidon2_B_34_3" + ,"poseidon2_B_35_0" + ,"poseidon2_B_35_1" + ,"poseidon2_B_35_2" + ,"poseidon2_B_35_3" + ,"poseidon2_B_36_0" + ,"poseidon2_B_36_1" + ,"poseidon2_B_36_2" + ,"poseidon2_B_36_3" + ,"poseidon2_B_37_0" + ,"poseidon2_B_37_1" + ,"poseidon2_B_37_2" + ,"poseidon2_B_37_3" + ,"poseidon2_B_38_0" + ,"poseidon2_B_38_1" + ,"poseidon2_B_38_2" + ,"poseidon2_B_38_3" + ,"poseidon2_B_39_0" + ,"poseidon2_B_39_1" + ,"poseidon2_B_39_2" + ,"poseidon2_B_39_3" + ,"poseidon2_B_40_0" + ,"poseidon2_B_40_1" + ,"poseidon2_B_40_2" + ,"poseidon2_B_40_3" + ,"poseidon2_B_41_0" + ,"poseidon2_B_41_1" + ,"poseidon2_B_41_2" + ,"poseidon2_B_41_3" + ,"poseidon2_B_42_0" + ,"poseidon2_B_42_1" + ,"poseidon2_B_42_2" + ,"poseidon2_B_42_3" + ,"poseidon2_B_43_0" + ,"poseidon2_B_43_1" + ,"poseidon2_B_43_2" + ,"poseidon2_B_43_3" + ,"poseidon2_B_44_0" + ,"poseidon2_B_44_1" + ,"poseidon2_B_44_2" + ,"poseidon2_B_44_3" + ,"poseidon2_B_45_0" + ,"poseidon2_B_45_1" + ,"poseidon2_B_45_2" + ,"poseidon2_B_45_3" + ,"poseidon2_B_46_0" + ,"poseidon2_B_46_1" + ,"poseidon2_B_46_2" + ,"poseidon2_B_46_3" + ,"poseidon2_B_47_0" + ,"poseidon2_B_47_1" + ,"poseidon2_B_47_2" + ,"poseidon2_B_47_3" + ,"poseidon2_B_48_0" + ,"poseidon2_B_48_1" + ,"poseidon2_B_48_2" + ,"poseidon2_B_48_3" + ,"poseidon2_B_49_0" + ,"poseidon2_B_49_1" + ,"poseidon2_B_49_2" + ,"poseidon2_B_49_3" + ,"poseidon2_B_4_0" + ,"poseidon2_B_4_1" + ,"poseidon2_B_4_2" + ,"poseidon2_B_4_3" + ,"poseidon2_B_50_0" + ,"poseidon2_B_50_1" + ,"poseidon2_B_50_2" + ,"poseidon2_B_50_3" + ,"poseidon2_B_51_0" + ,"poseidon2_B_51_1" + ,"poseidon2_B_51_2" + ,"poseidon2_B_51_3" + ,"poseidon2_B_52_0" + ,"poseidon2_B_52_1" + ,"poseidon2_B_52_2" + ,"poseidon2_B_52_3" + ,"poseidon2_B_53_0" + ,"poseidon2_B_53_1" + ,"poseidon2_B_53_2" + ,"poseidon2_B_53_3" + ,"poseidon2_B_54_0" + ,"poseidon2_B_54_1" + ,"poseidon2_B_54_2" + ,"poseidon2_B_54_3" + ,"poseidon2_B_55_0" + ,"poseidon2_B_55_1" + ,"poseidon2_B_55_2" + ,"poseidon2_B_55_3" + ,"poseidon2_B_56_0" + ,"poseidon2_B_56_1" + ,"poseidon2_B_56_2" + ,"poseidon2_B_56_3" + ,"poseidon2_B_57_0" + ,"poseidon2_B_57_1" + ,"poseidon2_B_57_2" + ,"poseidon2_B_57_3" + ,"poseidon2_B_58_0" + ,"poseidon2_B_58_1" + ,"poseidon2_B_58_2" + ,"poseidon2_B_58_3" + ,"poseidon2_B_59_0" + ,"poseidon2_B_59_1" + ,"poseidon2_B_59_2" + ,"poseidon2_B_59_3" + ,"poseidon2_B_5_0" + ,"poseidon2_B_5_1" + ,"poseidon2_B_5_2" + ,"poseidon2_B_5_3" + ,"poseidon2_B_6_0" + ,"poseidon2_B_6_1" + ,"poseidon2_B_6_2" + ,"poseidon2_B_6_3" + ,"poseidon2_B_7_0" + ,"poseidon2_B_7_1" + ,"poseidon2_B_7_2" + ,"poseidon2_B_7_3" + ,"poseidon2_B_8_0" + ,"poseidon2_B_8_1" + ,"poseidon2_B_8_2" + ,"poseidon2_B_8_3" + ,"poseidon2_B_9_0" + ,"poseidon2_B_9_1" + ,"poseidon2_B_9_2" + ,"poseidon2_B_9_3" + ,"poseidon2_EXT_LAYER_4" + ,"poseidon2_EXT_LAYER_5" + ,"poseidon2_EXT_LAYER_6" + ,"poseidon2_EXT_LAYER_7" + ,"poseidon2_T_0_4" + ,"poseidon2_T_0_5" + ,"poseidon2_T_0_6" + ,"poseidon2_T_0_7" + ,"poseidon2_T_1_4" + ,"poseidon2_T_1_5" + ,"poseidon2_T_1_6" + ,"poseidon2_T_1_7" + ,"poseidon2_T_2_4" + ,"poseidon2_T_2_5" + ,"poseidon2_T_2_6" + ,"poseidon2_T_2_7" + ,"poseidon2_T_3_4" + ,"poseidon2_T_3_5" + ,"poseidon2_T_3_6" + ,"poseidon2_T_3_7" + ,"poseidon2_T_60_4" + ,"poseidon2_T_60_5" + ,"poseidon2_T_60_6" + ,"poseidon2_T_60_7" + ,"poseidon2_T_61_4" + ,"poseidon2_T_61_5" + ,"poseidon2_T_61_6" + ,"poseidon2_T_61_7" + ,"poseidon2_T_62_4" + ,"poseidon2_T_62_5" + ,"poseidon2_T_62_6" + ,"poseidon2_T_62_7" + ,"poseidon2_T_63_4" + ,"poseidon2_T_63_5" + ,"poseidon2_T_63_6" + ,"poseidon2_T_63_7" + ,"poseidon2_a_0" + ,"poseidon2_a_1" + ,"poseidon2_a_2" + ,"poseidon2_a_3" + ,"poseidon2_b_0" + ,"poseidon2_b_1" + ,"poseidon2_b_2" + ,"poseidon2_b_3" + ,"poseidon2_clk" + ,"poseidon2_input_addr" + ,"poseidon2_mem_addr_read_a" + ,"poseidon2_mem_addr_read_b" + ,"poseidon2_mem_addr_read_c" + ,"poseidon2_mem_addr_read_d" + ,"poseidon2_mem_addr_write_a" + ,"poseidon2_mem_addr_write_b" + ,"poseidon2_mem_addr_write_c" + ,"poseidon2_mem_addr_write_d" + ,"poseidon2_output_addr" + ,"poseidon2_sel_poseidon_perm" + ,"poseidon2_space_id" + ,"range_check_alu_rng_chk" + ,"range_check_clk" + ,"range_check_cmp_hi_bits_rng_chk" + ,"range_check_cmp_lo_bits_rng_chk" + ,"range_check_dyn_diff" + ,"range_check_dyn_rng_chk_bits" + ,"range_check_dyn_rng_chk_pow_2" + ,"range_check_gas_da_rng_chk" + ,"range_check_gas_l2_rng_chk" + ,"range_check_is_lte_u112" + ,"range_check_is_lte_u128" + ,"range_check_is_lte_u16" + ,"range_check_is_lte_u32" + ,"range_check_is_lte_u48" + ,"range_check_is_lte_u64" + ,"range_check_is_lte_u80" + ,"range_check_is_lte_u96" + ,"range_check_mem_rng_chk" + ,"range_check_rng_chk_bits" + ,"range_check_sel_lookup_0" + ,"range_check_sel_lookup_1" + ,"range_check_sel_lookup_2" + ,"range_check_sel_lookup_3" + ,"range_check_sel_lookup_4" + ,"range_check_sel_lookup_5" + ,"range_check_sel_lookup_6" + ,"range_check_sel_rng_chk" + ,"range_check_u16_r0" + ,"range_check_u16_r1" + ,"range_check_u16_r2" + ,"range_check_u16_r3" + ,"range_check_u16_r4" + ,"range_check_u16_r5" + ,"range_check_u16_r6" + ,"range_check_u16_r7" + ,"range_check_value" + ,"sha256_clk" + ,"sha256_input" + ,"sha256_output" + ,"sha256_sel_sha256_compression" + ,"sha256_state" + ,"slice_addr" + ,"slice_clk" + ,"slice_cnt" + ,"slice_col_offset" + ,"slice_one_min_inv" + ,"slice_sel_cd_cpy" + ,"slice_sel_mem_active" + ,"slice_sel_return" + ,"slice_sel_start" + ,"slice_space_id" + ,"slice_val" + ,"perm_rng_mem_inv" + ,"perm_rng_cmp_lo_inv" + ,"perm_rng_cmp_hi_inv" + ,"perm_rng_alu_inv" + ,"perm_cmp_alu_inv" + ,"perm_rng_gas_l2_inv" + ,"perm_rng_gas_da_inv" + ,"perm_l2_start_gas_inv" + ,"perm_da_start_gas_inv" + ,"perm_l2_end_gas_inv" + ,"perm_da_end_gas_inv" + ,"perm_pos_mem_read_a_inv" + ,"perm_pos_mem_read_b_inv" + ,"perm_pos_mem_read_c_inv" + ,"perm_pos_mem_read_d_inv" + ,"perm_pos_mem_write_a_inv" + ,"perm_pos_mem_write_b_inv" + ,"perm_pos_mem_write_c_inv" + ,"perm_pos_mem_write_d_inv" + ,"perm_slice_mem_inv" + ,"perm_main_alu_inv" + ,"perm_main_bin_inv" + ,"perm_main_conv_inv" + ,"perm_main_sha256_inv" + ,"perm_main_pos2_perm_inv" + ,"perm_main_slice_inv" + ,"perm_main_mem_a_inv" + ,"perm_main_mem_b_inv" + ,"perm_main_mem_c_inv" + ,"perm_main_mem_d_inv" + ,"perm_main_mem_ind_addr_a_inv" + ,"perm_main_mem_ind_addr_b_inv" + ,"perm_main_mem_ind_addr_c_inv" + ,"perm_main_mem_ind_addr_d_inv" + ,"lookup_rng_chk_pow_2_inv" + ,"lookup_rng_chk_diff_inv" + ,"lookup_rng_chk_0_inv" + ,"lookup_rng_chk_1_inv" + ,"lookup_rng_chk_2_inv" + ,"lookup_rng_chk_3_inv" + ,"lookup_rng_chk_4_inv" + ,"lookup_rng_chk_5_inv" + ,"lookup_rng_chk_6_inv" + ,"lookup_rng_chk_7_inv" + ,"lookup_pow_2_0_inv" + ,"lookup_pow_2_1_inv" + ,"lookup_byte_lengths_inv" + ,"lookup_byte_operations_inv" + ,"lookup_opcode_gas_inv" + ,"kernel_output_lookup_inv" + ,"lookup_into_kernel_inv" + ,"lookup_cd_value_inv" + ,"lookup_ret_value_inv" + ,"incl_main_tag_err_inv" + ,"incl_mem_tag_err_inv" + ,"lookup_rng_chk_pow_2_counts" + ,"lookup_rng_chk_diff_counts" + ,"lookup_rng_chk_0_counts" + ,"lookup_rng_chk_1_counts" + ,"lookup_rng_chk_2_counts" + ,"lookup_rng_chk_3_counts" + ,"lookup_rng_chk_4_counts" + ,"lookup_rng_chk_5_counts" + ,"lookup_rng_chk_6_counts" + ,"lookup_rng_chk_7_counts" + ,"lookup_pow_2_0_counts" + ,"lookup_pow_2_1_counts" + ,"lookup_byte_lengths_counts" + ,"lookup_byte_operations_counts" + ,"lookup_opcode_gas_counts" + ,"kernel_output_lookup_counts" + ,"lookup_into_kernel_counts" + ,"lookup_cd_value_counts" + ,"lookup_ret_value_counts" + ,"incl_main_tag_err_counts" + ,"incl_mem_tag_err_counts" + }; } -template RefVector AvmFullRow::as_vector() const -{ +template RefVector AvmFullRow::as_vector() const { return RefVector{ byte_lookup_sel_bin, byte_lookup_table_byte_lengths, @@ -958,8 +953,6 @@ template RefVector AvmFullRow::as_vector() const main_sel_op_note_hash_exists, main_sel_op_nullifier_exists, main_sel_op_or, - main_sel_op_pedersen, - main_sel_op_pedersen_commit, main_sel_op_poseidon2, main_sel_op_radix_le, main_sel_op_sender, @@ -1029,10 +1022,6 @@ template RefVector AvmFullRow::as_vector() const mem_tsp, mem_val, mem_w_in_tag, - pedersen_clk, - pedersen_input, - pedersen_output, - pedersen_sel_pedersen, poseidon2_B_10_0, poseidon2_B_10_1, poseidon2_B_10_2, @@ -1389,8 +1378,8 @@ template RefVector AvmFullRow::as_vector() const perm_main_alu_inv, perm_main_bin_inv, perm_main_conv_inv, + perm_main_sha256_inv, perm_main_pos2_perm_inv, - perm_main_pedersen_inv, perm_main_slice_inv, perm_main_mem_a_inv, perm_main_mem_b_inv, diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/full_row.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/full_row.hpp index 76b01152ba0..c7d9219f484 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/full_row.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/full_row.hpp @@ -1,15 +1,16 @@ // AUTOGENERATED FILE #pragma once -#include #include +#include #include #include "barretenberg/common/ref_vector.hpp" namespace bb { -template struct AvmFullRow { +template +struct AvmFullRow { FF byte_lookup_sel_bin{}; FF byte_lookup_table_byte_lengths{}; FF byte_lookup_table_in_tags{}; @@ -235,8 +236,6 @@ template struct AvmFullRow { FF main_sel_op_note_hash_exists{}; FF main_sel_op_nullifier_exists{}; FF main_sel_op_or{}; - FF main_sel_op_pedersen{}; - FF main_sel_op_pedersen_commit{}; FF main_sel_op_poseidon2{}; FF main_sel_op_radix_le{}; FF main_sel_op_sender{}; @@ -306,10 +305,6 @@ template struct AvmFullRow { FF mem_tsp{}; FF mem_val{}; FF mem_w_in_tag{}; - FF pedersen_clk{}; - FF pedersen_input{}; - FF pedersen_output{}; - FF pedersen_sel_pedersen{}; FF poseidon2_B_10_0{}; FF poseidon2_B_10_1{}; FF poseidon2_B_10_2{}; @@ -666,8 +661,8 @@ template struct AvmFullRow { FF perm_main_alu_inv{}; FF perm_main_bin_inv{}; FF perm_main_conv_inv{}; + FF perm_main_sha256_inv{}; FF perm_main_pos2_perm_inv{}; - FF perm_main_pedersen_inv{}; FF perm_main_slice_inv{}; FF perm_main_mem_a_inv{}; FF perm_main_mem_b_inv{}; @@ -719,11 +714,11 @@ template struct AvmFullRow { FF lookup_ret_value_counts{}; FF incl_main_tag_err_counts{}; FF incl_mem_tag_err_counts{}; - + RefVector as_vector() const; static std::vector names(); - static constexpr size_t SIZE = 709; + static constexpr size_t SIZE = 703; }; template std::ostream& operator<<(std::ostream& os, AvmFullRow const& row); diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/prover.cpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/prover.cpp index e5541e0238c..dcd2f637c74 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/prover.cpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/prover.cpp @@ -26,7 +26,8 @@ using FF = Flavor::FF; * * @tparam settings Settings class. */ -AvmProver::AvmProver(std::shared_ptr input_key, std::shared_ptr commitment_key) +AvmProver::AvmProver(std::shared_ptr input_key, + std::shared_ptr commitment_key) : key(std::move(input_key)) , prover_polynomials(*key) , commitment_key(std::move(commitment_key)) @@ -49,8 +50,7 @@ void AvmProver::execute_preamble_round() */ void AvmProver::execute_wire_commitments_round() { - // Commit to all polynomials (apart from logderivative inverse polynomials, which are committed to in the later - // logderivative phase) + // Commit to all polynomials (apart from logderivative inverse polynomials, which are committed to in the later logderivative phase) auto wire_polys = prover_polynomials.get_wires(); auto labels = commitment_labels.get_wires(); for (size_t idx = 0; idx < wire_polys.size(); ++idx) { @@ -116,13 +116,13 @@ void AvmProver::execute_relation_check_rounds() void AvmProver::execute_pcs_rounds() { auto prover_opening_claim = ZeroMorph::prove(key->circuit_size, - prover_polynomials.get_unshifted(), - prover_polynomials.get_to_be_shifted(), - sumcheck_output.claimed_evaluations.get_unshifted(), - sumcheck_output.claimed_evaluations.get_shifted(), - sumcheck_output.challenge, - commitment_key, - transcript); + prover_polynomials.get_unshifted(), + prover_polynomials.get_to_be_shifted(), + sumcheck_output.claimed_evaluations.get_unshifted(), + sumcheck_output.claimed_evaluations.get_shifted(), + sumcheck_output.challenge, + commitment_key, + transcript); PCS::compute_opening_proof(commitment_key, prover_opening_claim, transcript); } @@ -144,8 +144,7 @@ HonkProof AvmProver::construct_proof() AVM_TRACK_TIME("prove/execute_log_derivative_inverse_round", execute_log_derivative_inverse_round()); // Compute commitments to logderivative inverse polynomials - AVM_TRACK_TIME("prove/execute_log_derivative_inverse_commitments_round", - execute_log_derivative_inverse_commitments_round()); + AVM_TRACK_TIME("prove/execute_log_derivative_inverse_commitments_round", execute_log_derivative_inverse_commitments_round()); // Fiat-Shamir: alpha // Run sumcheck subprotocol. diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/recursive_verifier.cpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/recursive_verifier.cpp index 3099fd8c928..8b2f01de70e 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/recursive_verifier.cpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/recursive_verifier.cpp @@ -133,21 +133,24 @@ AvmRecursiveVerifier_::AggregationObject AvmRecursiveVerifier_:: FF main_kernel_value_out_evaluation = evaluate_public_input_column(public_inputs[1], mle_challenge); main_kernel_value_out_evaluation.assert_equal(claimed_evaluations.main_kernel_value_out, - "main_kernel_value_out_evaluation failed"); + "main_kernel_value_out_evaluation failed"); FF main_kernel_side_effect_out_evaluation = evaluate_public_input_column(public_inputs[2], mle_challenge); main_kernel_side_effect_out_evaluation.assert_equal(claimed_evaluations.main_kernel_side_effect_out, - "main_kernel_side_effect_out_evaluation failed"); + "main_kernel_side_effect_out_evaluation failed"); FF main_kernel_metadata_out_evaluation = evaluate_public_input_column(public_inputs[3], mle_challenge); main_kernel_metadata_out_evaluation.assert_equal(claimed_evaluations.main_kernel_metadata_out, - "main_kernel_metadata_out_evaluation failed"); + "main_kernel_metadata_out_evaluation failed"); FF main_calldata_evaluation = evaluate_public_input_column(public_inputs[4], mle_challenge); - main_calldata_evaluation.assert_equal(claimed_evaluations.main_calldata, "main_calldata_evaluation failed"); + main_calldata_evaluation.assert_equal(claimed_evaluations.main_calldata, + "main_calldata_evaluation failed"); FF main_returndata_evaluation = evaluate_public_input_column(public_inputs[5], mle_challenge); - main_returndata_evaluation.assert_equal(claimed_evaluations.main_returndata, "main_returndata_evaluation failed"); + main_returndata_evaluation.assert_equal(claimed_evaluations.main_returndata, + "main_returndata_evaluation failed"); + auto opening_claim = Zeromorph::verify(circuit_size, commitments.get_unshifted(), diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/alu.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/alu.hpp index abc0a44ddb7..9a92ab3bab8 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/alu.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/alu.hpp @@ -6,433 +6,352 @@ namespace bb::Avm_vm { + template class aluImpl { - public: - using FF = FF_; + public: + using FF = FF_; + + static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { + 2,3,3,3,3,3,3,3,3,2,3,4,4,2,2,3,3,4,4,5,5,5,4,7,3,3,3,5,5,4,7,4,3,3,3,2,3,3,3,4,3,3,3,3,3,4,4,4,5 + }; - static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { 2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 4, 4, - 2, 2, 3, 3, 4, 4, 5, 5, 5, 4, 7, 3, 3, - 3, 5, 5, 4, 7, 4, 3, 3, 3, 2, 3, 3, 3, - 4, 3, 3, 3, 3, 3, 4, 4, 4, 5 }; - template - void static accumulate(ContainerOverSubrelations& evals, - const AllEntities& new_term, - [[maybe_unused]] const RelationParameters&, - [[maybe_unused]] const FF& scaling_factor) - { - const auto constants_MEM_TAG_FF = FF(0); - const auto constants_MEM_TAG_U1 = FF(1); - const auto constants_MEM_TAG_U8 = FF(2); - const auto constants_MEM_TAG_U16 = FF(3); - const auto constants_MEM_TAG_U32 = FF(4); - const auto constants_MEM_TAG_U64 = FF(5); - const auto constants_MEM_TAG_U128 = FF(6); - const auto alu_MAX_BITS = - ((((((new_term.alu_u1_tag * FF(1)) + (new_term.alu_u8_tag * FF(8))) + (new_term.alu_u16_tag * FF(16))) + - (new_term.alu_u32_tag * FF(32))) + - (new_term.alu_u64_tag * FF(64))) + - (new_term.alu_u128_tag * FF(128))); - const auto alu_MAX_BITS_POW = ((((((new_term.alu_u1_tag * FF(2)) + (new_term.alu_u8_tag * FF(256))) + - (new_term.alu_u16_tag * FF(65536))) + - (new_term.alu_u32_tag * FF(4294967296UL))) + - (new_term.alu_u64_tag * FF(uint256_t{ 0UL, 1UL, 0UL, 0UL }))) + - (new_term.alu_u128_tag * FF(uint256_t{ 0UL, 0UL, 1UL, 0UL }))); - const auto alu_UINT_MAX = (alu_MAX_BITS_POW - FF(1)); - const auto alu_LIMB_BITS_POW = (((((new_term.alu_u8_tag * FF(16)) + (new_term.alu_u16_tag * FF(256))) + - (new_term.alu_u32_tag * FF(65536))) + - (new_term.alu_u64_tag * FF(4294967296UL))) + - (new_term.alu_u128_tag * FF(uint256_t{ 0UL, 1UL, 0UL, 0UL }))); - const auto alu_PRODUCT = - ((new_term.alu_a_lo * new_term.alu_b_lo) + - ((FF(1) - new_term.alu_u1_tag) * - ((alu_LIMB_BITS_POW * new_term.alu_partial_prod_lo) + - (alu_MAX_BITS_POW * (new_term.alu_partial_prod_hi + (new_term.alu_a_hi * new_term.alu_b_hi)))))); - const auto alu_RESULT = ((new_term.alu_op_add * (new_term.alu_ia + new_term.alu_ib)) + - (new_term.alu_op_sub * (new_term.alu_ia - new_term.alu_ib))); - const auto alu_NON_TRIVIAL_SHIFT = (FF(1) - new_term.alu_zero_shift); + template + void static accumulate( + ContainerOverSubrelations& evals, + const AllEntities& new_term, + [[maybe_unused]] const RelationParameters&, + [[maybe_unused]] const FF& scaling_factor + ){ + const auto constants_MEM_TAG_FF = FF(0); + const auto constants_MEM_TAG_U1 = FF(1); + const auto constants_MEM_TAG_U8 = FF(2); + const auto constants_MEM_TAG_U16 = FF(3); + const auto constants_MEM_TAG_U32 = FF(4); + const auto constants_MEM_TAG_U64 = FF(5); + const auto constants_MEM_TAG_U128 = FF(6); + const auto alu_MAX_BITS = ((((((new_term.alu_u1_tag * FF(1)) + (new_term.alu_u8_tag * FF(8))) + (new_term.alu_u16_tag * FF(16))) + (new_term.alu_u32_tag * FF(32))) + (new_term.alu_u64_tag * FF(64))) + (new_term.alu_u128_tag * FF(128))); + const auto alu_MAX_BITS_POW = ((((((new_term.alu_u1_tag * FF(2)) + (new_term.alu_u8_tag * FF(256))) + (new_term.alu_u16_tag * FF(65536))) + (new_term.alu_u32_tag * FF(4294967296UL))) + (new_term.alu_u64_tag * FF(uint256_t{0UL, 1UL, 0UL, 0UL}))) + (new_term.alu_u128_tag * FF(uint256_t{0UL, 0UL, 1UL, 0UL}))); + const auto alu_UINT_MAX = (alu_MAX_BITS_POW - FF(1)); + const auto alu_LIMB_BITS_POW = (((((new_term.alu_u8_tag * FF(16)) + (new_term.alu_u16_tag * FF(256))) + (new_term.alu_u32_tag * FF(65536))) + (new_term.alu_u64_tag * FF(4294967296UL))) + (new_term.alu_u128_tag * FF(uint256_t{0UL, 1UL, 0UL, 0UL}))); + const auto alu_PRODUCT = ((new_term.alu_a_lo * new_term.alu_b_lo) + ((FF(1) - new_term.alu_u1_tag) * ((alu_LIMB_BITS_POW * new_term.alu_partial_prod_lo) + (alu_MAX_BITS_POW * (new_term.alu_partial_prod_hi + (new_term.alu_a_hi * new_term.alu_b_hi)))))); + const auto alu_RESULT = ((new_term.alu_op_add * (new_term.alu_ia + new_term.alu_ib)) + (new_term.alu_op_sub * (new_term.alu_ia - new_term.alu_ib))); + const auto alu_NON_TRIVIAL_SHIFT = (FF(1) - new_term.alu_zero_shift); - { - using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>; - auto tmp = - (new_term.alu_sel_alu - - ((((((((((new_term.alu_op_add + new_term.alu_op_sub) + new_term.alu_op_mul) + new_term.alu_op_not) + - new_term.alu_op_eq) + - new_term.alu_op_cast) + - new_term.alu_op_lt) + - new_term.alu_op_lte) + - new_term.alu_op_shr) + - new_term.alu_op_shl) + - new_term.alu_op_div)); - tmp *= scaling_factor; - std::get<0>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<1, ContainerOverSubrelations>; - auto tmp = (new_term.alu_u1_tag * (FF(1) - new_term.alu_u1_tag)); - tmp *= scaling_factor; - std::get<1>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<2, ContainerOverSubrelations>; - auto tmp = (new_term.alu_u8_tag * (FF(1) - new_term.alu_u8_tag)); - tmp *= scaling_factor; - std::get<2>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<3, ContainerOverSubrelations>; - auto tmp = (new_term.alu_u16_tag * (FF(1) - new_term.alu_u16_tag)); - tmp *= scaling_factor; - std::get<3>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<4, ContainerOverSubrelations>; - auto tmp = (new_term.alu_u32_tag * (FF(1) - new_term.alu_u32_tag)); - tmp *= scaling_factor; - std::get<4>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<5, ContainerOverSubrelations>; - auto tmp = (new_term.alu_u64_tag * (FF(1) - new_term.alu_u64_tag)); - tmp *= scaling_factor; - std::get<5>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<6, ContainerOverSubrelations>; - auto tmp = (new_term.alu_u128_tag * (FF(1) - new_term.alu_u128_tag)); - tmp *= scaling_factor; - std::get<6>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<7, ContainerOverSubrelations>; - auto tmp = (new_term.alu_ff_tag * (FF(1) - new_term.alu_ff_tag)); - tmp *= scaling_factor; - std::get<7>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<8, ContainerOverSubrelations>; - auto tmp = - (new_term.alu_sel_alu * - (((((((new_term.alu_u1_tag + new_term.alu_u8_tag) + new_term.alu_u16_tag) + new_term.alu_u32_tag) + - new_term.alu_u64_tag) + - new_term.alu_u128_tag) + - new_term.alu_ff_tag) - - FF(1))); - tmp *= scaling_factor; - std::get<8>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<9, ContainerOverSubrelations>; - auto tmp = - (new_term.alu_in_tag - - (((((((constants_MEM_TAG_U1 * new_term.alu_u1_tag) + (constants_MEM_TAG_U8 * new_term.alu_u8_tag)) + - (constants_MEM_TAG_U16 * new_term.alu_u16_tag)) + - (constants_MEM_TAG_U32 * new_term.alu_u32_tag)) + - (constants_MEM_TAG_U64 * new_term.alu_u64_tag)) + - (constants_MEM_TAG_U128 * new_term.alu_u128_tag)) + - (constants_MEM_TAG_FF * new_term.alu_ff_tag))); - tmp *= scaling_factor; - std::get<9>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<10, ContainerOverSubrelations>; - auto tmp = - (new_term.alu_range_check_sel - - (((FF(1) - new_term.alu_ff_tag) * - ((((new_term.alu_op_add + new_term.alu_op_sub) + new_term.alu_op_mul) + new_term.alu_op_cast) + - new_term.alu_op_div)) + - ((new_term.alu_op_shr + new_term.alu_op_shl) * alu_NON_TRIVIAL_SHIFT))); - tmp *= scaling_factor; - std::get<10>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<11, ContainerOverSubrelations>; - auto tmp = - (new_term.alu_range_check_input_value - - (((((((new_term.alu_op_add + new_term.alu_op_sub) + new_term.alu_op_mul) + new_term.alu_op_cast) + - new_term.alu_op_div) * - new_term.alu_ic) + - ((new_term.alu_op_shr * new_term.alu_a_hi) * alu_NON_TRIVIAL_SHIFT)) + - ((new_term.alu_op_shl * new_term.alu_a_lo) * alu_NON_TRIVIAL_SHIFT))); - tmp *= scaling_factor; - std::get<11>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<12, ContainerOverSubrelations>; - auto tmp = - (new_term.alu_range_check_num_bits - - ((((((new_term.alu_op_add + new_term.alu_op_sub) + new_term.alu_op_mul) + new_term.alu_op_cast) + - new_term.alu_op_div) * - ((((((new_term.alu_u1_tag * FF(1)) + (new_term.alu_u8_tag * FF(8))) + - (new_term.alu_u16_tag * FF(16))) + - (new_term.alu_u32_tag * FF(32))) + - (new_term.alu_u64_tag * FF(64))) + - (new_term.alu_u128_tag * FF(128)))) + - (((new_term.alu_op_shl + new_term.alu_op_shr) * (alu_MAX_BITS - new_term.alu_ib)) * - alu_NON_TRIVIAL_SHIFT))); - tmp *= scaling_factor; - std::get<12>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<13, ContainerOverSubrelations>; - auto tmp = (new_term.alu_cmp_gadget_gt - - ((((new_term.alu_op_lt + new_term.alu_op_lte) + new_term.alu_op_div) + new_term.alu_op_shr) + - new_term.alu_op_shl)); - tmp *= scaling_factor; - std::get<13>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<14, ContainerOverSubrelations>; - auto tmp = (new_term.alu_cmp_gadget_sel - (new_term.alu_cmp_gadget_gt + new_term.alu_op_eq)); - tmp *= scaling_factor; - std::get<14>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<15, ContainerOverSubrelations>; - auto tmp = (((new_term.alu_a_lo * new_term.alu_b_hi) + (new_term.alu_b_lo * new_term.alu_a_hi)) - - (new_term.alu_partial_prod_lo + (alu_LIMB_BITS_POW * new_term.alu_partial_prod_hi))); - tmp *= scaling_factor; - std::get<15>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<16, ContainerOverSubrelations>; - auto tmp = (new_term.alu_cf * (FF(1) - new_term.alu_cf)); - tmp *= scaling_factor; - std::get<16>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<17, ContainerOverSubrelations>; - auto tmp = (new_term.alu_op_add * ((alu_RESULT - new_term.alu_ic) - (new_term.alu_cf * alu_MAX_BITS_POW))); - tmp *= scaling_factor; - std::get<17>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<18, ContainerOverSubrelations>; - auto tmp = (new_term.alu_op_sub * ((alu_RESULT - new_term.alu_ic) + (new_term.alu_cf * alu_MAX_BITS_POW))); - tmp *= scaling_factor; - std::get<18>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<19, ContainerOverSubrelations>; - auto tmp = - ((new_term.alu_ff_tag * new_term.alu_op_mul) * ((new_term.alu_ia * new_term.alu_ib) - new_term.alu_ic)); - tmp *= scaling_factor; - std::get<19>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<20, ContainerOverSubrelations>; - auto tmp = (((FF(1) - new_term.alu_ff_tag) * new_term.alu_op_mul) * - ((new_term.alu_ia - new_term.alu_a_lo) - (alu_LIMB_BITS_POW * new_term.alu_a_hi))); - tmp *= scaling_factor; - std::get<20>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<21, ContainerOverSubrelations>; - auto tmp = (((FF(1) - new_term.alu_ff_tag) * new_term.alu_op_mul) * - ((new_term.alu_ib - new_term.alu_b_lo) - (alu_LIMB_BITS_POW * new_term.alu_b_hi))); - tmp *= scaling_factor; - std::get<21>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<22, ContainerOverSubrelations>; - auto tmp = (((FF(1) - new_term.alu_ff_tag) * new_term.alu_op_mul) * (new_term.alu_ic - new_term.alu_c_lo)); - tmp *= scaling_factor; - std::get<22>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<23, ContainerOverSubrelations>; - auto tmp = (((FF(1) - new_term.alu_ff_tag) * new_term.alu_op_mul) * - (alu_PRODUCT - (new_term.alu_c_lo + (alu_MAX_BITS_POW * new_term.alu_c_hi)))); - tmp *= scaling_factor; - std::get<23>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<24, ContainerOverSubrelations>; - auto tmp = (new_term.alu_op_div * (new_term.alu_cmp_gadget_input_a - new_term.alu_ib)); - tmp *= scaling_factor; - std::get<24>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<25, ContainerOverSubrelations>; - auto tmp = (new_term.alu_op_div * (new_term.alu_cmp_gadget_input_b - new_term.alu_remainder)); - tmp *= scaling_factor; - std::get<25>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<26, ContainerOverSubrelations>; - auto tmp = (new_term.alu_op_div * (new_term.alu_cmp_gadget_result - FF(1))); - tmp *= scaling_factor; - std::get<26>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<27, ContainerOverSubrelations>; - auto tmp = (((FF(1) - new_term.alu_ff_tag) * new_term.alu_op_div) * - ((new_term.alu_ib - new_term.alu_a_lo) - (alu_LIMB_BITS_POW * new_term.alu_a_hi))); - tmp *= scaling_factor; - std::get<27>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<28, ContainerOverSubrelations>; - auto tmp = (((FF(1) - new_term.alu_ff_tag) * new_term.alu_op_div) * - ((new_term.alu_ic - new_term.alu_b_lo) - (alu_LIMB_BITS_POW * new_term.alu_b_hi))); - tmp *= scaling_factor; - std::get<28>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<29, ContainerOverSubrelations>; - auto tmp = (((FF(1) - new_term.alu_ff_tag) * new_term.alu_op_div) * (new_term.alu_ia - new_term.alu_c_lo)); - tmp *= scaling_factor; - std::get<29>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<30, ContainerOverSubrelations>; - auto tmp = (((FF(1) - new_term.alu_ff_tag) * new_term.alu_op_div) * - (alu_PRODUCT - - ((new_term.alu_c_lo - new_term.alu_remainder) + (alu_MAX_BITS_POW * new_term.alu_c_hi)))); - tmp *= scaling_factor; - std::get<30>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<31, ContainerOverSubrelations>; - auto tmp = (((FF(1) - new_term.alu_ff_tag) * new_term.alu_op_not) * - ((new_term.alu_ia + new_term.alu_ic) - alu_UINT_MAX)); - tmp *= scaling_factor; - std::get<31>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<32, ContainerOverSubrelations>; - auto tmp = (new_term.alu_op_eq * (new_term.alu_ia - new_term.alu_cmp_gadget_input_a)); - tmp *= scaling_factor; - std::get<32>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<33, ContainerOverSubrelations>; - auto tmp = (new_term.alu_op_eq * (new_term.alu_ib - new_term.alu_cmp_gadget_input_b)); - tmp *= scaling_factor; - std::get<33>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<34, ContainerOverSubrelations>; - auto tmp = (new_term.alu_op_eq * (new_term.alu_ic - new_term.alu_cmp_gadget_result)); - tmp *= scaling_factor; - std::get<34>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<35, ContainerOverSubrelations>; - auto tmp = (new_term.alu_sel_cmp - (new_term.alu_op_lt + new_term.alu_op_lte)); - tmp *= scaling_factor; - std::get<35>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<36, ContainerOverSubrelations>; - auto tmp = ((new_term.alu_op_lt * (new_term.alu_ib - new_term.alu_cmp_gadget_input_a)) + - (new_term.alu_op_lte * (new_term.alu_ia - new_term.alu_cmp_gadget_input_a))); - tmp *= scaling_factor; - std::get<36>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<37, ContainerOverSubrelations>; - auto tmp = ((new_term.alu_op_lt * (new_term.alu_ia - new_term.alu_cmp_gadget_input_b)) + - (new_term.alu_op_lte * (new_term.alu_ib - new_term.alu_cmp_gadget_input_b))); - tmp *= scaling_factor; - std::get<37>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<38, ContainerOverSubrelations>; - auto tmp = ((new_term.alu_op_lte * ((FF(1) - new_term.alu_cmp_gadget_result) - new_term.alu_ic)) + - (new_term.alu_op_lt * (new_term.alu_cmp_gadget_result - new_term.alu_ic))); - tmp *= scaling_factor; - std::get<38>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<39, ContainerOverSubrelations>; - auto tmp = (new_term.alu_op_cast * - ((new_term.alu_ia - new_term.alu_a_lo) - (alu_MAX_BITS_POW * new_term.alu_a_hi))); - tmp *= scaling_factor; - std::get<39>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<40, ContainerOverSubrelations>; - auto tmp = (new_term.alu_op_cast * (new_term.alu_ic - new_term.alu_a_lo)); - tmp *= scaling_factor; - std::get<40>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<41, ContainerOverSubrelations>; - auto tmp = - ((new_term.alu_op_shl + new_term.alu_op_shr) * (new_term.alu_cmp_gadget_input_a - new_term.alu_ib)); - tmp *= scaling_factor; - std::get<41>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<42, ContainerOverSubrelations>; - auto tmp = ((new_term.alu_op_shl + new_term.alu_op_shr) * - (new_term.alu_cmp_gadget_input_b - (alu_MAX_BITS - FF(1)))); - tmp *= scaling_factor; - std::get<42>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<43, ContainerOverSubrelations>; - auto tmp = ((new_term.alu_op_shl + new_term.alu_op_shr) * - (new_term.alu_zero_shift - new_term.alu_cmp_gadget_result)); - tmp *= scaling_factor; - std::get<43>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<44, ContainerOverSubrelations>; - auto tmp = - (new_term.alu_sel_shift_which - ((new_term.alu_op_shr + new_term.alu_op_shl) * alu_NON_TRIVIAL_SHIFT)); - tmp *= scaling_factor; - std::get<44>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<45, ContainerOverSubrelations>; - auto tmp = (new_term.alu_op_shr * - ((new_term.alu_ia - new_term.alu_a_lo) - (new_term.alu_b_pow * new_term.alu_a_hi))); - tmp *= scaling_factor; - std::get<45>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<46, ContainerOverSubrelations>; - auto tmp = (new_term.alu_op_shr * (new_term.alu_ic - (new_term.alu_a_hi * alu_NON_TRIVIAL_SHIFT))); - tmp *= scaling_factor; - std::get<46>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<47, ContainerOverSubrelations>; - auto tmp = (new_term.alu_op_shl * ((new_term.alu_ia - new_term.alu_a_lo) - - (new_term.alu_max_bits_sub_b_pow * new_term.alu_a_hi))); - tmp *= scaling_factor; - std::get<47>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<48, ContainerOverSubrelations>; - auto tmp = (new_term.alu_op_shl * - (new_term.alu_ic - ((new_term.alu_a_lo * new_term.alu_b_pow) * alu_NON_TRIVIAL_SHIFT))); - tmp *= scaling_factor; - std::get<48>(evals) += typename Accumulator::View(tmp); + { + using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>; + auto tmp = (new_term.alu_sel_alu - ((((((((((new_term.alu_op_add + new_term.alu_op_sub) + new_term.alu_op_mul) + new_term.alu_op_not) + new_term.alu_op_eq) + new_term.alu_op_cast) + new_term.alu_op_lt) + new_term.alu_op_lte) + new_term.alu_op_shr) + new_term.alu_op_shl) + new_term.alu_op_div)); + tmp *= scaling_factor; + std::get<0>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<1, ContainerOverSubrelations>; + auto tmp = (new_term.alu_u1_tag * (FF(1) - new_term.alu_u1_tag)); + tmp *= scaling_factor; + std::get<1>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<2, ContainerOverSubrelations>; + auto tmp = (new_term.alu_u8_tag * (FF(1) - new_term.alu_u8_tag)); + tmp *= scaling_factor; + std::get<2>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<3, ContainerOverSubrelations>; + auto tmp = (new_term.alu_u16_tag * (FF(1) - new_term.alu_u16_tag)); + tmp *= scaling_factor; + std::get<3>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<4, ContainerOverSubrelations>; + auto tmp = (new_term.alu_u32_tag * (FF(1) - new_term.alu_u32_tag)); + tmp *= scaling_factor; + std::get<4>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<5, ContainerOverSubrelations>; + auto tmp = (new_term.alu_u64_tag * (FF(1) - new_term.alu_u64_tag)); + tmp *= scaling_factor; + std::get<5>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<6, ContainerOverSubrelations>; + auto tmp = (new_term.alu_u128_tag * (FF(1) - new_term.alu_u128_tag)); + tmp *= scaling_factor; + std::get<6>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<7, ContainerOverSubrelations>; + auto tmp = (new_term.alu_ff_tag * (FF(1) - new_term.alu_ff_tag)); + tmp *= scaling_factor; + std::get<7>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<8, ContainerOverSubrelations>; + auto tmp = (new_term.alu_sel_alu * (((((((new_term.alu_u1_tag + new_term.alu_u8_tag) + new_term.alu_u16_tag) + new_term.alu_u32_tag) + new_term.alu_u64_tag) + new_term.alu_u128_tag) + new_term.alu_ff_tag) - FF(1))); + tmp *= scaling_factor; + std::get<8>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<9, ContainerOverSubrelations>; + auto tmp = (new_term.alu_in_tag - (((((((constants_MEM_TAG_U1 * new_term.alu_u1_tag) + (constants_MEM_TAG_U8 * new_term.alu_u8_tag)) + (constants_MEM_TAG_U16 * new_term.alu_u16_tag)) + (constants_MEM_TAG_U32 * new_term.alu_u32_tag)) + (constants_MEM_TAG_U64 * new_term.alu_u64_tag)) + (constants_MEM_TAG_U128 * new_term.alu_u128_tag)) + (constants_MEM_TAG_FF * new_term.alu_ff_tag))); + tmp *= scaling_factor; + std::get<9>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<10, ContainerOverSubrelations>; + auto tmp = (new_term.alu_range_check_sel - (((FF(1) - new_term.alu_ff_tag) * ((((new_term.alu_op_add + new_term.alu_op_sub) + new_term.alu_op_mul) + new_term.alu_op_cast) + new_term.alu_op_div)) + ((new_term.alu_op_shr + new_term.alu_op_shl) * alu_NON_TRIVIAL_SHIFT))); + tmp *= scaling_factor; + std::get<10>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<11, ContainerOverSubrelations>; + auto tmp = (new_term.alu_range_check_input_value - (((((((new_term.alu_op_add + new_term.alu_op_sub) + new_term.alu_op_mul) + new_term.alu_op_cast) + new_term.alu_op_div) * new_term.alu_ic) + ((new_term.alu_op_shr * new_term.alu_a_hi) * alu_NON_TRIVIAL_SHIFT)) + ((new_term.alu_op_shl * new_term.alu_a_lo) * alu_NON_TRIVIAL_SHIFT))); + tmp *= scaling_factor; + std::get<11>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<12, ContainerOverSubrelations>; + auto tmp = (new_term.alu_range_check_num_bits - ((((((new_term.alu_op_add + new_term.alu_op_sub) + new_term.alu_op_mul) + new_term.alu_op_cast) + new_term.alu_op_div) * ((((((new_term.alu_u1_tag * FF(1)) + (new_term.alu_u8_tag * FF(8))) + (new_term.alu_u16_tag * FF(16))) + (new_term.alu_u32_tag * FF(32))) + (new_term.alu_u64_tag * FF(64))) + (new_term.alu_u128_tag * FF(128)))) + (((new_term.alu_op_shl + new_term.alu_op_shr) * (alu_MAX_BITS - new_term.alu_ib)) * alu_NON_TRIVIAL_SHIFT))); + tmp *= scaling_factor; + std::get<12>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<13, ContainerOverSubrelations>; + auto tmp = (new_term.alu_cmp_gadget_gt - ((((new_term.alu_op_lt + new_term.alu_op_lte) + new_term.alu_op_div) + new_term.alu_op_shr) + new_term.alu_op_shl)); + tmp *= scaling_factor; + std::get<13>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<14, ContainerOverSubrelations>; + auto tmp = (new_term.alu_cmp_gadget_sel - (new_term.alu_cmp_gadget_gt + new_term.alu_op_eq)); + tmp *= scaling_factor; + std::get<14>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<15, ContainerOverSubrelations>; + auto tmp = (((new_term.alu_a_lo * new_term.alu_b_hi) + (new_term.alu_b_lo * new_term.alu_a_hi)) - (new_term.alu_partial_prod_lo + (alu_LIMB_BITS_POW * new_term.alu_partial_prod_hi))); + tmp *= scaling_factor; + std::get<15>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<16, ContainerOverSubrelations>; + auto tmp = (new_term.alu_cf * (FF(1) - new_term.alu_cf)); + tmp *= scaling_factor; + std::get<16>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<17, ContainerOverSubrelations>; + auto tmp = (new_term.alu_op_add * ((alu_RESULT - new_term.alu_ic) - (new_term.alu_cf * alu_MAX_BITS_POW))); + tmp *= scaling_factor; + std::get<17>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<18, ContainerOverSubrelations>; + auto tmp = (new_term.alu_op_sub * ((alu_RESULT - new_term.alu_ic) + (new_term.alu_cf * alu_MAX_BITS_POW))); + tmp *= scaling_factor; + std::get<18>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<19, ContainerOverSubrelations>; + auto tmp = ((new_term.alu_ff_tag * new_term.alu_op_mul) * ((new_term.alu_ia * new_term.alu_ib) - new_term.alu_ic)); + tmp *= scaling_factor; + std::get<19>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<20, ContainerOverSubrelations>; + auto tmp = (((FF(1) - new_term.alu_ff_tag) * new_term.alu_op_mul) * ((new_term.alu_ia - new_term.alu_a_lo) - (alu_LIMB_BITS_POW * new_term.alu_a_hi))); + tmp *= scaling_factor; + std::get<20>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<21, ContainerOverSubrelations>; + auto tmp = (((FF(1) - new_term.alu_ff_tag) * new_term.alu_op_mul) * ((new_term.alu_ib - new_term.alu_b_lo) - (alu_LIMB_BITS_POW * new_term.alu_b_hi))); + tmp *= scaling_factor; + std::get<21>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<22, ContainerOverSubrelations>; + auto tmp = (((FF(1) - new_term.alu_ff_tag) * new_term.alu_op_mul) * (new_term.alu_ic - new_term.alu_c_lo)); + tmp *= scaling_factor; + std::get<22>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<23, ContainerOverSubrelations>; + auto tmp = (((FF(1) - new_term.alu_ff_tag) * new_term.alu_op_mul) * (alu_PRODUCT - (new_term.alu_c_lo + (alu_MAX_BITS_POW * new_term.alu_c_hi)))); + tmp *= scaling_factor; + std::get<23>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<24, ContainerOverSubrelations>; + auto tmp = (new_term.alu_op_div * (new_term.alu_cmp_gadget_input_a - new_term.alu_ib)); + tmp *= scaling_factor; + std::get<24>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<25, ContainerOverSubrelations>; + auto tmp = (new_term.alu_op_div * (new_term.alu_cmp_gadget_input_b - new_term.alu_remainder)); + tmp *= scaling_factor; + std::get<25>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<26, ContainerOverSubrelations>; + auto tmp = (new_term.alu_op_div * (new_term.alu_cmp_gadget_result - FF(1))); + tmp *= scaling_factor; + std::get<26>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<27, ContainerOverSubrelations>; + auto tmp = (((FF(1) - new_term.alu_ff_tag) * new_term.alu_op_div) * ((new_term.alu_ib - new_term.alu_a_lo) - (alu_LIMB_BITS_POW * new_term.alu_a_hi))); + tmp *= scaling_factor; + std::get<27>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<28, ContainerOverSubrelations>; + auto tmp = (((FF(1) - new_term.alu_ff_tag) * new_term.alu_op_div) * ((new_term.alu_ic - new_term.alu_b_lo) - (alu_LIMB_BITS_POW * new_term.alu_b_hi))); + tmp *= scaling_factor; + std::get<28>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<29, ContainerOverSubrelations>; + auto tmp = (((FF(1) - new_term.alu_ff_tag) * new_term.alu_op_div) * (new_term.alu_ia - new_term.alu_c_lo)); + tmp *= scaling_factor; + std::get<29>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<30, ContainerOverSubrelations>; + auto tmp = (((FF(1) - new_term.alu_ff_tag) * new_term.alu_op_div) * (alu_PRODUCT - ((new_term.alu_c_lo - new_term.alu_remainder) + (alu_MAX_BITS_POW * new_term.alu_c_hi)))); + tmp *= scaling_factor; + std::get<30>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<31, ContainerOverSubrelations>; + auto tmp = (((FF(1) - new_term.alu_ff_tag) * new_term.alu_op_not) * ((new_term.alu_ia + new_term.alu_ic) - alu_UINT_MAX)); + tmp *= scaling_factor; + std::get<31>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<32, ContainerOverSubrelations>; + auto tmp = (new_term.alu_op_eq * (new_term.alu_ia - new_term.alu_cmp_gadget_input_a)); + tmp *= scaling_factor; + std::get<32>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<33, ContainerOverSubrelations>; + auto tmp = (new_term.alu_op_eq * (new_term.alu_ib - new_term.alu_cmp_gadget_input_b)); + tmp *= scaling_factor; + std::get<33>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<34, ContainerOverSubrelations>; + auto tmp = (new_term.alu_op_eq * (new_term.alu_ic - new_term.alu_cmp_gadget_result)); + tmp *= scaling_factor; + std::get<34>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<35, ContainerOverSubrelations>; + auto tmp = (new_term.alu_sel_cmp - (new_term.alu_op_lt + new_term.alu_op_lte)); + tmp *= scaling_factor; + std::get<35>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<36, ContainerOverSubrelations>; + auto tmp = ((new_term.alu_op_lt * (new_term.alu_ib - new_term.alu_cmp_gadget_input_a)) + (new_term.alu_op_lte * (new_term.alu_ia - new_term.alu_cmp_gadget_input_a))); + tmp *= scaling_factor; + std::get<36>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<37, ContainerOverSubrelations>; + auto tmp = ((new_term.alu_op_lt * (new_term.alu_ia - new_term.alu_cmp_gadget_input_b)) + (new_term.alu_op_lte * (new_term.alu_ib - new_term.alu_cmp_gadget_input_b))); + tmp *= scaling_factor; + std::get<37>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<38, ContainerOverSubrelations>; + auto tmp = ((new_term.alu_op_lte * ((FF(1) - new_term.alu_cmp_gadget_result) - new_term.alu_ic)) + (new_term.alu_op_lt * (new_term.alu_cmp_gadget_result - new_term.alu_ic))); + tmp *= scaling_factor; + std::get<38>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<39, ContainerOverSubrelations>; + auto tmp = (new_term.alu_op_cast * ((new_term.alu_ia - new_term.alu_a_lo) - (alu_MAX_BITS_POW * new_term.alu_a_hi))); + tmp *= scaling_factor; + std::get<39>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<40, ContainerOverSubrelations>; + auto tmp = (new_term.alu_op_cast * (new_term.alu_ic - new_term.alu_a_lo)); + tmp *= scaling_factor; + std::get<40>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<41, ContainerOverSubrelations>; + auto tmp = ((new_term.alu_op_shl + new_term.alu_op_shr) * (new_term.alu_cmp_gadget_input_a - new_term.alu_ib)); + tmp *= scaling_factor; + std::get<41>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<42, ContainerOverSubrelations>; + auto tmp = ((new_term.alu_op_shl + new_term.alu_op_shr) * (new_term.alu_cmp_gadget_input_b - (alu_MAX_BITS - FF(1)))); + tmp *= scaling_factor; + std::get<42>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<43, ContainerOverSubrelations>; + auto tmp = ((new_term.alu_op_shl + new_term.alu_op_shr) * (new_term.alu_zero_shift - new_term.alu_cmp_gadget_result)); + tmp *= scaling_factor; + std::get<43>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<44, ContainerOverSubrelations>; + auto tmp = (new_term.alu_sel_shift_which - ((new_term.alu_op_shr + new_term.alu_op_shl) * alu_NON_TRIVIAL_SHIFT)); + tmp *= scaling_factor; + std::get<44>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<45, ContainerOverSubrelations>; + auto tmp = (new_term.alu_op_shr * ((new_term.alu_ia - new_term.alu_a_lo) - (new_term.alu_b_pow * new_term.alu_a_hi))); + tmp *= scaling_factor; + std::get<45>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<46, ContainerOverSubrelations>; + auto tmp = (new_term.alu_op_shr * (new_term.alu_ic - (new_term.alu_a_hi * alu_NON_TRIVIAL_SHIFT))); + tmp *= scaling_factor; + std::get<46>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<47, ContainerOverSubrelations>; + auto tmp = (new_term.alu_op_shl * ((new_term.alu_ia - new_term.alu_a_lo) - (new_term.alu_max_bits_sub_b_pow * new_term.alu_a_hi))); + tmp *= scaling_factor; + std::get<47>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<48, ContainerOverSubrelations>; + auto tmp = (new_term.alu_op_shl * (new_term.alu_ic - ((new_term.alu_a_lo * new_term.alu_b_pow) * alu_NON_TRIVIAL_SHIFT))); + tmp *= scaling_factor; + std::get<48>(evals) += typename Accumulator::View(tmp); + } } - } }; template class alu : public Relation> { - public: - static constexpr const char* NAME = "alu"; + public: + static constexpr const char* NAME = "alu"; - static std::string get_subrelation_label(size_t index) - { - switch (index) { - case 19: - return "ALU_MULTIPLICATION_FF"; - case 23: - return "ALU_PROD_MUL"; - case 30: - return "DIVISION_RELATION"; - case 31: - return "ALU_OP_NOT"; + static std::string get_subrelation_label(size_t index) { + switch (index) { + case 19: + return "ALU_MULTIPLICATION_FF"; + case 23: + return "ALU_PROD_MUL"; + case 30: + return "DIVISION_RELATION"; + case 31: + return "ALU_OP_NOT"; + } + return std::to_string(index); } - return std::to_string(index); - } }; } // namespace bb::Avm_vm \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/binary.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/binary.hpp index 11d51a5a226..aa2b0f1b49a 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/binary.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/binary.hpp @@ -6,114 +6,108 @@ namespace bb::Avm_vm { + template class binaryImpl { - public: - using FF = FF_; + public: + using FF = FF_; + + static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { + 3,3,3,4,3,3,3,3,3,3 + }; - static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { 3, 3, 3, 4, 3, 3, 3, 3, 3, 3 }; - template - void static accumulate(ContainerOverSubrelations& evals, - const AllEntities& new_term, - [[maybe_unused]] const RelationParameters&, - [[maybe_unused]] const FF& scaling_factor) - { + template + void static accumulate( + ContainerOverSubrelations& evals, + const AllEntities& new_term, + [[maybe_unused]] const RelationParameters&, + [[maybe_unused]] const FF& scaling_factor + ){ - { - using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>; - auto tmp = (new_term.binary_sel_bin * (FF(1) - new_term.binary_sel_bin)); - tmp *= scaling_factor; - std::get<0>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<1, ContainerOverSubrelations>; - auto tmp = ((new_term.binary_op_id_shift - new_term.binary_op_id) * new_term.binary_mem_tag_ctr); - tmp *= scaling_factor; - std::get<1>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<2, ContainerOverSubrelations>; - auto tmp = (((new_term.binary_mem_tag_ctr_shift - new_term.binary_mem_tag_ctr) + FF(1)) * - new_term.binary_mem_tag_ctr); - tmp *= scaling_factor; - std::get<2>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<3, ContainerOverSubrelations>; - auto tmp = ((new_term.binary_mem_tag_ctr * - (((FF(1) - new_term.binary_sel_bin) * (FF(1) - new_term.binary_mem_tag_ctr_inv)) + - new_term.binary_mem_tag_ctr_inv)) - - new_term.binary_sel_bin); - tmp *= scaling_factor; - std::get<3>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<4, ContainerOverSubrelations>; - auto tmp = ((FF(1) - new_term.binary_sel_bin) * new_term.binary_acc_ia); - tmp *= scaling_factor; - std::get<4>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<5, ContainerOverSubrelations>; - auto tmp = ((FF(1) - new_term.binary_sel_bin) * new_term.binary_acc_ib); - tmp *= scaling_factor; - std::get<5>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<6, ContainerOverSubrelations>; - auto tmp = ((FF(1) - new_term.binary_sel_bin) * new_term.binary_acc_ic); - tmp *= scaling_factor; - std::get<6>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<7, ContainerOverSubrelations>; - auto tmp = - (((new_term.binary_acc_ia - new_term.binary_ia_bytes) - (FF(256) * new_term.binary_acc_ia_shift)) * - new_term.binary_mem_tag_ctr); - tmp *= scaling_factor; - std::get<7>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<8, ContainerOverSubrelations>; - auto tmp = - (((new_term.binary_acc_ib - new_term.binary_ib_bytes) - (FF(256) * new_term.binary_acc_ib_shift)) * - new_term.binary_mem_tag_ctr); - tmp *= scaling_factor; - std::get<8>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<9, ContainerOverSubrelations>; - auto tmp = - (((new_term.binary_acc_ic - new_term.binary_ic_bytes) - (FF(256) * new_term.binary_acc_ic_shift)) * - new_term.binary_mem_tag_ctr); - tmp *= scaling_factor; - std::get<9>(evals) += typename Accumulator::View(tmp); + { + using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>; + auto tmp = (new_term.binary_sel_bin * (FF(1) - new_term.binary_sel_bin)); + tmp *= scaling_factor; + std::get<0>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<1, ContainerOverSubrelations>; + auto tmp = ((new_term.binary_op_id_shift - new_term.binary_op_id) * new_term.binary_mem_tag_ctr); + tmp *= scaling_factor; + std::get<1>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<2, ContainerOverSubrelations>; + auto tmp = (((new_term.binary_mem_tag_ctr_shift - new_term.binary_mem_tag_ctr) + FF(1)) * new_term.binary_mem_tag_ctr); + tmp *= scaling_factor; + std::get<2>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<3, ContainerOverSubrelations>; + auto tmp = ((new_term.binary_mem_tag_ctr * (((FF(1) - new_term.binary_sel_bin) * (FF(1) - new_term.binary_mem_tag_ctr_inv)) + new_term.binary_mem_tag_ctr_inv)) - new_term.binary_sel_bin); + tmp *= scaling_factor; + std::get<3>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<4, ContainerOverSubrelations>; + auto tmp = ((FF(1) - new_term.binary_sel_bin) * new_term.binary_acc_ia); + tmp *= scaling_factor; + std::get<4>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<5, ContainerOverSubrelations>; + auto tmp = ((FF(1) - new_term.binary_sel_bin) * new_term.binary_acc_ib); + tmp *= scaling_factor; + std::get<5>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<6, ContainerOverSubrelations>; + auto tmp = ((FF(1) - new_term.binary_sel_bin) * new_term.binary_acc_ic); + tmp *= scaling_factor; + std::get<6>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<7, ContainerOverSubrelations>; + auto tmp = (((new_term.binary_acc_ia - new_term.binary_ia_bytes) - (FF(256) * new_term.binary_acc_ia_shift)) * new_term.binary_mem_tag_ctr); + tmp *= scaling_factor; + std::get<7>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<8, ContainerOverSubrelations>; + auto tmp = (((new_term.binary_acc_ib - new_term.binary_ib_bytes) - (FF(256) * new_term.binary_acc_ib_shift)) * new_term.binary_mem_tag_ctr); + tmp *= scaling_factor; + std::get<8>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<9, ContainerOverSubrelations>; + auto tmp = (((new_term.binary_acc_ic - new_term.binary_ic_bytes) - (FF(256) * new_term.binary_acc_ic_shift)) * new_term.binary_mem_tag_ctr); + tmp *= scaling_factor; + std::get<9>(evals) += typename Accumulator::View(tmp); + } } - } }; template class binary : public Relation> { - public: - static constexpr const char* NAME = "binary"; + public: + static constexpr const char* NAME = "binary"; - static std::string get_subrelation_label(size_t index) - { - switch (index) { - case 1: - return "OP_ID_REL"; - case 2: - return "MEM_TAG_REL"; - case 3: - return "SEL_BIN_CTR_REL"; - case 7: - return "ACC_REL_A"; - case 8: - return "ACC_REL_B"; - case 9: - return "ACC_REL_C"; + static std::string get_subrelation_label(size_t index) { + switch (index) { + case 1: + return "OP_ID_REL"; + case 2: + return "MEM_TAG_REL"; + case 3: + return "SEL_BIN_CTR_REL"; + case 7: + return "ACC_REL_A"; + case 8: + return "ACC_REL_B"; + case 9: + return "ACC_REL_C"; + } + return std::to_string(index); } - return std::to_string(index); - } }; } // namespace bb::Avm_vm \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/cmp.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/cmp.hpp index ba42e4f4bfb..f6c8d6c3508 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/cmp.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/cmp.hpp @@ -6,256 +6,241 @@ namespace bb::Avm_vm { + template class cmpImpl { - public: - using FF = FF_; + public: + using FF = FF_; + + static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { + 3,2,3,5,3,3,3,3,3,3,3,3,5,5,3,2,3,3,4,3,3,3,3,3,3,3,3 + }; - static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { 3, 2, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, - 3, 2, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3 }; - template - void static accumulate(ContainerOverSubrelations& evals, - const AllEntities& new_term, - [[maybe_unused]] const RelationParameters&, - [[maybe_unused]] const FF& scaling_factor) - { - const auto cmp_DIFF = (new_term.cmp_input_a - new_term.cmp_input_b); - const auto cmp_POW_128 = FF(uint256_t{ 0UL, 0UL, 1UL, 0UL }); - const auto cmp_P_LO = FF(uint256_t{ 4891460686036598784UL, 2896914383306846353UL, 0UL, 0UL }); - const auto cmp_P_HI = FF(uint256_t{ 13281191951274694749UL, 3486998266802970665UL, 0UL, 0UL }); - const auto cmp_A_SUB_B_LO = - (((new_term.cmp_a_lo - new_term.cmp_b_lo) - FF(1)) + (new_term.cmp_borrow * cmp_POW_128)); - const auto cmp_A_SUB_B_HI = ((new_term.cmp_a_hi - new_term.cmp_b_hi) - new_term.cmp_borrow); - const auto cmp_B_SUB_A_LO = ((new_term.cmp_b_lo - new_term.cmp_a_lo) + (new_term.cmp_borrow * cmp_POW_128)); - const auto cmp_B_SUB_A_HI = ((new_term.cmp_b_hi - new_term.cmp_a_hi) - new_term.cmp_borrow); - const auto cmp_IS_GT = (new_term.cmp_op_gt * new_term.cmp_result); + template + void static accumulate( + ContainerOverSubrelations& evals, + const AllEntities& new_term, + [[maybe_unused]] const RelationParameters&, + [[maybe_unused]] const FF& scaling_factor + ){ + const auto cmp_DIFF = (new_term.cmp_input_a - new_term.cmp_input_b); + const auto cmp_POW_128 = FF(uint256_t{0UL, 0UL, 1UL, 0UL}); + const auto cmp_P_LO = FF(uint256_t{4891460686036598784UL, 2896914383306846353UL, 0UL, 0UL}); + const auto cmp_P_HI = FF(uint256_t{13281191951274694749UL, 3486998266802970665UL, 0UL, 0UL}); + const auto cmp_A_SUB_B_LO = (((new_term.cmp_a_lo - new_term.cmp_b_lo) - FF(1)) + (new_term.cmp_borrow * cmp_POW_128)); + const auto cmp_A_SUB_B_HI = ((new_term.cmp_a_hi - new_term.cmp_b_hi) - new_term.cmp_borrow); + const auto cmp_B_SUB_A_LO = ((new_term.cmp_b_lo - new_term.cmp_a_lo) + (new_term.cmp_borrow * cmp_POW_128)); + const auto cmp_B_SUB_A_HI = ((new_term.cmp_b_hi - new_term.cmp_a_hi) - new_term.cmp_borrow); + const auto cmp_IS_GT = (new_term.cmp_op_gt * new_term.cmp_result); - { - using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>; - auto tmp = (new_term.cmp_sel_rng_chk * - (new_term.cmp_range_chk_clk - ((new_term.cmp_clk * FF(256)) + new_term.cmp_cmp_rng_ctr))); - tmp *= scaling_factor; - std::get<0>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<1, ContainerOverSubrelations>; - auto tmp = (new_term.cmp_sel_cmp - (new_term.cmp_op_eq + new_term.cmp_op_gt)); - tmp *= scaling_factor; - std::get<1>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<2, ContainerOverSubrelations>; - auto tmp = (new_term.cmp_result * (FF(1) - new_term.cmp_result)); - tmp *= scaling_factor; - std::get<2>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<3, ContainerOverSubrelations>; - auto tmp = - (new_term.cmp_op_eq * (((cmp_DIFF * ((new_term.cmp_result * (FF(1) - new_term.cmp_op_eq_diff_inv)) + - new_term.cmp_op_eq_diff_inv)) - - FF(1)) + - new_term.cmp_result)); - tmp *= scaling_factor; - std::get<3>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<4, ContainerOverSubrelations>; - auto tmp = - (new_term.cmp_op_gt * (new_term.cmp_input_a - (new_term.cmp_a_lo + (cmp_POW_128 * new_term.cmp_a_hi)))); - tmp *= scaling_factor; - std::get<4>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<5, ContainerOverSubrelations>; - auto tmp = - (new_term.cmp_op_gt * (new_term.cmp_input_b - (new_term.cmp_b_lo + (cmp_POW_128 * new_term.cmp_b_hi)))); - tmp *= scaling_factor; - std::get<5>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<6, ContainerOverSubrelations>; - auto tmp = (new_term.cmp_p_a_borrow * (FF(1) - new_term.cmp_p_a_borrow)); - tmp *= scaling_factor; - std::get<6>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<7, ContainerOverSubrelations>; - auto tmp = (new_term.cmp_op_gt * (new_term.cmp_p_sub_a_lo - ((cmp_P_LO - new_term.cmp_a_lo) + - (new_term.cmp_p_a_borrow * cmp_POW_128)))); - tmp *= scaling_factor; - std::get<7>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<8, ContainerOverSubrelations>; - auto tmp = (new_term.cmp_op_gt * - (new_term.cmp_p_sub_a_hi - ((cmp_P_HI - new_term.cmp_a_hi) - new_term.cmp_p_a_borrow))); - tmp *= scaling_factor; - std::get<8>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<9, ContainerOverSubrelations>; - auto tmp = (new_term.cmp_p_b_borrow * (FF(1) - new_term.cmp_p_b_borrow)); - tmp *= scaling_factor; - std::get<9>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<10, ContainerOverSubrelations>; - auto tmp = (new_term.cmp_op_gt * (new_term.cmp_p_sub_b_lo - ((cmp_P_LO - new_term.cmp_b_lo) + - (new_term.cmp_p_b_borrow * cmp_POW_128)))); - tmp *= scaling_factor; - std::get<10>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<11, ContainerOverSubrelations>; - auto tmp = (new_term.cmp_op_gt * - (new_term.cmp_p_sub_b_hi - ((cmp_P_HI - new_term.cmp_b_hi) - new_term.cmp_p_b_borrow))); - tmp *= scaling_factor; - std::get<11>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<12, ContainerOverSubrelations>; - auto tmp = (new_term.cmp_op_gt * (new_term.cmp_res_lo - - ((cmp_A_SUB_B_LO * cmp_IS_GT) + (cmp_B_SUB_A_LO * (FF(1) - cmp_IS_GT))))); - tmp *= scaling_factor; - std::get<12>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<13, ContainerOverSubrelations>; - auto tmp = (new_term.cmp_op_gt * (new_term.cmp_res_hi - - ((cmp_A_SUB_B_HI * cmp_IS_GT) + (cmp_B_SUB_A_HI * (FF(1) - cmp_IS_GT))))); - tmp *= scaling_factor; - std::get<13>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<14, ContainerOverSubrelations>; - auto tmp = (new_term.cmp_sel_rng_chk * (FF(1) - new_term.cmp_sel_rng_chk)); - tmp *= scaling_factor; - std::get<14>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<15, ContainerOverSubrelations>; - auto tmp = (new_term.cmp_sel_rng_chk_shift - (new_term.cmp_shift_sel + new_term.cmp_op_gt_shift)); - tmp *= scaling_factor; - std::get<15>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<16, ContainerOverSubrelations>; - auto tmp = - (((new_term.cmp_cmp_rng_ctr_shift - new_term.cmp_cmp_rng_ctr) + FF(1)) * new_term.cmp_cmp_rng_ctr); - tmp *= scaling_factor; - std::get<16>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<17, ContainerOverSubrelations>; - auto tmp = (new_term.cmp_op_gt * (new_term.cmp_cmp_rng_ctr - FF(4))); - tmp *= scaling_factor; - std::get<17>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<18, ContainerOverSubrelations>; - auto tmp = ((new_term.cmp_cmp_rng_ctr * - (((FF(1) - new_term.cmp_shift_sel) * (FF(1) - new_term.cmp_op_eq_diff_inv)) + - new_term.cmp_op_eq_diff_inv)) - - new_term.cmp_shift_sel); - tmp *= scaling_factor; - std::get<18>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<19, ContainerOverSubrelations>; - auto tmp = ((new_term.cmp_a_lo_shift - new_term.cmp_b_lo) * new_term.cmp_shift_sel); - tmp *= scaling_factor; - std::get<19>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<20, ContainerOverSubrelations>; - auto tmp = ((new_term.cmp_a_hi_shift - new_term.cmp_b_hi) * new_term.cmp_shift_sel); - tmp *= scaling_factor; - std::get<20>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<21, ContainerOverSubrelations>; - auto tmp = ((new_term.cmp_b_lo_shift - new_term.cmp_p_sub_a_lo) * new_term.cmp_shift_sel); - tmp *= scaling_factor; - std::get<21>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<22, ContainerOverSubrelations>; - auto tmp = ((new_term.cmp_b_hi_shift - new_term.cmp_p_sub_a_hi) * new_term.cmp_shift_sel); - tmp *= scaling_factor; - std::get<22>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<23, ContainerOverSubrelations>; - auto tmp = ((new_term.cmp_p_sub_a_lo_shift - new_term.cmp_p_sub_b_lo) * new_term.cmp_shift_sel); - tmp *= scaling_factor; - std::get<23>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<24, ContainerOverSubrelations>; - auto tmp = ((new_term.cmp_p_sub_a_hi_shift - new_term.cmp_p_sub_b_hi) * new_term.cmp_shift_sel); - tmp *= scaling_factor; - std::get<24>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<25, ContainerOverSubrelations>; - auto tmp = ((new_term.cmp_p_sub_b_lo_shift - new_term.cmp_res_lo) * new_term.cmp_shift_sel); - tmp *= scaling_factor; - std::get<25>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<26, ContainerOverSubrelations>; - auto tmp = ((new_term.cmp_p_sub_b_hi_shift - new_term.cmp_res_hi) * new_term.cmp_shift_sel); - tmp *= scaling_factor; - std::get<26>(evals) += typename Accumulator::View(tmp); + { + using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>; + auto tmp = (new_term.cmp_sel_rng_chk * (new_term.cmp_range_chk_clk - ((new_term.cmp_clk * FF(256)) + new_term.cmp_cmp_rng_ctr))); + tmp *= scaling_factor; + std::get<0>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<1, ContainerOverSubrelations>; + auto tmp = (new_term.cmp_sel_cmp - (new_term.cmp_op_eq + new_term.cmp_op_gt)); + tmp *= scaling_factor; + std::get<1>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<2, ContainerOverSubrelations>; + auto tmp = (new_term.cmp_result * (FF(1) - new_term.cmp_result)); + tmp *= scaling_factor; + std::get<2>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<3, ContainerOverSubrelations>; + auto tmp = (new_term.cmp_op_eq * (((cmp_DIFF * ((new_term.cmp_result * (FF(1) - new_term.cmp_op_eq_diff_inv)) + new_term.cmp_op_eq_diff_inv)) - FF(1)) + new_term.cmp_result)); + tmp *= scaling_factor; + std::get<3>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<4, ContainerOverSubrelations>; + auto tmp = (new_term.cmp_op_gt * (new_term.cmp_input_a - (new_term.cmp_a_lo + (cmp_POW_128 * new_term.cmp_a_hi)))); + tmp *= scaling_factor; + std::get<4>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<5, ContainerOverSubrelations>; + auto tmp = (new_term.cmp_op_gt * (new_term.cmp_input_b - (new_term.cmp_b_lo + (cmp_POW_128 * new_term.cmp_b_hi)))); + tmp *= scaling_factor; + std::get<5>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<6, ContainerOverSubrelations>; + auto tmp = (new_term.cmp_p_a_borrow * (FF(1) - new_term.cmp_p_a_borrow)); + tmp *= scaling_factor; + std::get<6>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<7, ContainerOverSubrelations>; + auto tmp = (new_term.cmp_op_gt * (new_term.cmp_p_sub_a_lo - ((cmp_P_LO - new_term.cmp_a_lo) + (new_term.cmp_p_a_borrow * cmp_POW_128)))); + tmp *= scaling_factor; + std::get<7>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<8, ContainerOverSubrelations>; + auto tmp = (new_term.cmp_op_gt * (new_term.cmp_p_sub_a_hi - ((cmp_P_HI - new_term.cmp_a_hi) - new_term.cmp_p_a_borrow))); + tmp *= scaling_factor; + std::get<8>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<9, ContainerOverSubrelations>; + auto tmp = (new_term.cmp_p_b_borrow * (FF(1) - new_term.cmp_p_b_borrow)); + tmp *= scaling_factor; + std::get<9>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<10, ContainerOverSubrelations>; + auto tmp = (new_term.cmp_op_gt * (new_term.cmp_p_sub_b_lo - ((cmp_P_LO - new_term.cmp_b_lo) + (new_term.cmp_p_b_borrow * cmp_POW_128)))); + tmp *= scaling_factor; + std::get<10>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<11, ContainerOverSubrelations>; + auto tmp = (new_term.cmp_op_gt * (new_term.cmp_p_sub_b_hi - ((cmp_P_HI - new_term.cmp_b_hi) - new_term.cmp_p_b_borrow))); + tmp *= scaling_factor; + std::get<11>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<12, ContainerOverSubrelations>; + auto tmp = (new_term.cmp_op_gt * (new_term.cmp_res_lo - ((cmp_A_SUB_B_LO * cmp_IS_GT) + (cmp_B_SUB_A_LO * (FF(1) - cmp_IS_GT))))); + tmp *= scaling_factor; + std::get<12>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<13, ContainerOverSubrelations>; + auto tmp = (new_term.cmp_op_gt * (new_term.cmp_res_hi - ((cmp_A_SUB_B_HI * cmp_IS_GT) + (cmp_B_SUB_A_HI * (FF(1) - cmp_IS_GT))))); + tmp *= scaling_factor; + std::get<13>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<14, ContainerOverSubrelations>; + auto tmp = (new_term.cmp_sel_rng_chk * (FF(1) - new_term.cmp_sel_rng_chk)); + tmp *= scaling_factor; + std::get<14>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<15, ContainerOverSubrelations>; + auto tmp = (new_term.cmp_sel_rng_chk_shift - (new_term.cmp_shift_sel + new_term.cmp_op_gt_shift)); + tmp *= scaling_factor; + std::get<15>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<16, ContainerOverSubrelations>; + auto tmp = (((new_term.cmp_cmp_rng_ctr_shift - new_term.cmp_cmp_rng_ctr) + FF(1)) * new_term.cmp_cmp_rng_ctr); + tmp *= scaling_factor; + std::get<16>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<17, ContainerOverSubrelations>; + auto tmp = (new_term.cmp_op_gt * (new_term.cmp_cmp_rng_ctr - FF(4))); + tmp *= scaling_factor; + std::get<17>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<18, ContainerOverSubrelations>; + auto tmp = ((new_term.cmp_cmp_rng_ctr * (((FF(1) - new_term.cmp_shift_sel) * (FF(1) - new_term.cmp_op_eq_diff_inv)) + new_term.cmp_op_eq_diff_inv)) - new_term.cmp_shift_sel); + tmp *= scaling_factor; + std::get<18>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<19, ContainerOverSubrelations>; + auto tmp = ((new_term.cmp_a_lo_shift - new_term.cmp_b_lo) * new_term.cmp_shift_sel); + tmp *= scaling_factor; + std::get<19>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<20, ContainerOverSubrelations>; + auto tmp = ((new_term.cmp_a_hi_shift - new_term.cmp_b_hi) * new_term.cmp_shift_sel); + tmp *= scaling_factor; + std::get<20>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<21, ContainerOverSubrelations>; + auto tmp = ((new_term.cmp_b_lo_shift - new_term.cmp_p_sub_a_lo) * new_term.cmp_shift_sel); + tmp *= scaling_factor; + std::get<21>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<22, ContainerOverSubrelations>; + auto tmp = ((new_term.cmp_b_hi_shift - new_term.cmp_p_sub_a_hi) * new_term.cmp_shift_sel); + tmp *= scaling_factor; + std::get<22>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<23, ContainerOverSubrelations>; + auto tmp = ((new_term.cmp_p_sub_a_lo_shift - new_term.cmp_p_sub_b_lo) * new_term.cmp_shift_sel); + tmp *= scaling_factor; + std::get<23>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<24, ContainerOverSubrelations>; + auto tmp = ((new_term.cmp_p_sub_a_hi_shift - new_term.cmp_p_sub_b_hi) * new_term.cmp_shift_sel); + tmp *= scaling_factor; + std::get<24>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<25, ContainerOverSubrelations>; + auto tmp = ((new_term.cmp_p_sub_b_lo_shift - new_term.cmp_res_lo) * new_term.cmp_shift_sel); + tmp *= scaling_factor; + std::get<25>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<26, ContainerOverSubrelations>; + auto tmp = ((new_term.cmp_p_sub_b_hi_shift - new_term.cmp_res_hi) * new_term.cmp_shift_sel); + tmp *= scaling_factor; + std::get<26>(evals) += typename Accumulator::View(tmp); + } } - } }; template class cmp : public Relation> { - public: - static constexpr const char* NAME = "cmp"; + public: + static constexpr const char* NAME = "cmp"; - static std::string get_subrelation_label(size_t index) - { - switch (index) { - case 2: - return "CMP_RES_IS_BOOL"; - case 3: - return "CMP_OP_EQ"; - case 4: - return "INPUT_DECOMP_1"; - case 5: - return "INPUT_DECOMP_2"; - case 7: - return "SUB_LO_1"; - case 8: - return "SUB_HI_1"; - case 10: - return "SUB_LO_2"; - case 11: - return "SUB_HI_2"; - case 12: - return "RES_LO"; - case 13: - return "RES_HI"; - case 16: - return "CMP_CTR_REL_1"; - case 17: - return "CMP_CTR_REL_2"; - case 18: - return "CTR_NON_ZERO_REL"; - case 19: - return "SHIFT_RELS_0"; - case 21: - return "SHIFT_RELS_1"; - case 23: - return "SHIFT_RELS_2"; - case 25: - return "SHIFT_RELS_3"; + static std::string get_subrelation_label(size_t index) { + switch (index) { + case 2: + return "CMP_RES_IS_BOOL"; + case 3: + return "CMP_OP_EQ"; + case 4: + return "INPUT_DECOMP_1"; + case 5: + return "INPUT_DECOMP_2"; + case 7: + return "SUB_LO_1"; + case 8: + return "SUB_HI_1"; + case 10: + return "SUB_LO_2"; + case 11: + return "SUB_HI_2"; + case 12: + return "RES_LO"; + case 13: + return "RES_HI"; + case 16: + return "CMP_CTR_REL_1"; + case 17: + return "CMP_CTR_REL_2"; + case 18: + return "CTR_NON_ZERO_REL"; + case 19: + return "SHIFT_RELS_0"; + case 21: + return "SHIFT_RELS_1"; + case 23: + return "SHIFT_RELS_2"; + case 25: + return "SHIFT_RELS_3"; + } + return std::to_string(index); } - return std::to_string(index); - } }; } // namespace bb::Avm_vm \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/conversion.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/conversion.hpp index ec82a7624ae..c97e328f2db 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/conversion.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/conversion.hpp @@ -6,37 +6,42 @@ namespace bb::Avm_vm { + template class conversionImpl { - public: - using FF = FF_; - - static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { 3 }; - - template - void static accumulate(ContainerOverSubrelations& evals, - const AllEntities& new_term, - [[maybe_unused]] const RelationParameters&, - [[maybe_unused]] const FF& scaling_factor) - { - - { - using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>; - auto tmp = (new_term.conversion_sel_to_radix_le * (FF(1) - new_term.conversion_sel_to_radix_le)); - tmp *= scaling_factor; - std::get<0>(evals) += typename Accumulator::View(tmp); + public: + using FF = FF_; + + static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { + 3 + }; + + + template + void static accumulate( + ContainerOverSubrelations& evals, + const AllEntities& new_term, + [[maybe_unused]] const RelationParameters&, + [[maybe_unused]] const FF& scaling_factor + ){ + + { + using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>; + auto tmp = (new_term.conversion_sel_to_radix_le * (FF(1) - new_term.conversion_sel_to_radix_le)); + tmp *= scaling_factor; + std::get<0>(evals) += typename Accumulator::View(tmp); + } } - } }; template class conversion : public Relation> { - public: - static constexpr const char* NAME = "conversion"; - - static std::string get_subrelation_label(size_t index) - { - switch (index) {} - return std::to_string(index); - } + public: + static constexpr const char* NAME = "conversion"; + + static std::string get_subrelation_label(size_t index) { + switch (index) { + } + return std::to_string(index); + } }; } // namespace bb::Avm_vm \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/gas.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/gas.hpp index a2a23059087..87072fdade2 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/gas.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/gas.hpp @@ -6,117 +6,106 @@ namespace bb::Avm_vm { + template class gasImpl { - public: - using FF = FF_; + public: + using FF = FF_; + + static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { + 3,3,3,3,3,3,5,5,4,4 + }; - static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { 3, 3, 3, 3, 3, 3, 5, 5, 4, 4 }; - template - void static accumulate(ContainerOverSubrelations& evals, - const AllEntities& new_term, - [[maybe_unused]] const RelationParameters&, - [[maybe_unused]] const FF& scaling_factor) - { + template + void static accumulate( + ContainerOverSubrelations& evals, + const AllEntities& new_term, + [[maybe_unused]] const RelationParameters&, + [[maybe_unused]] const FF& scaling_factor + ){ - { - using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>; - auto tmp = (new_term.main_is_gas_accounted - - ((FF(1) - new_term.main_is_fake_row) * new_term.main_sel_execution_row)); - tmp *= scaling_factor; - std::get<0>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<1, ContainerOverSubrelations>; - auto tmp = (new_term.main_l2_out_of_gas * (FF(1) - new_term.main_l2_out_of_gas)); - tmp *= scaling_factor; - std::get<1>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<2, ContainerOverSubrelations>; - auto tmp = (new_term.main_da_out_of_gas * (FF(1) - new_term.main_da_out_of_gas)); - tmp *= scaling_factor; - std::get<2>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<3, ContainerOverSubrelations>; - auto tmp = (new_term.main_is_fake_row * (FF(1) - new_term.main_is_fake_row)); - tmp *= scaling_factor; - std::get<3>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<4, ContainerOverSubrelations>; - auto tmp = - (new_term.main_is_fake_row * (new_term.main_l2_gas_remaining - new_term.main_l2_gas_remaining_shift)); - tmp *= scaling_factor; - std::get<4>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<5, ContainerOverSubrelations>; - auto tmp = - (new_term.main_is_fake_row * (new_term.main_da_gas_remaining - new_term.main_da_gas_remaining_shift)); - tmp *= scaling_factor; - std::get<5>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<6, ContainerOverSubrelations>; - auto tmp = ((new_term.main_is_gas_accounted * - ((FF(1) - new_term.main_sel_op_external_call) - new_term.main_sel_op_static_call)) * - (((new_term.main_l2_gas_remaining_shift - new_term.main_l2_gas_remaining) + - new_term.main_base_l2_gas_op_cost) + - (new_term.main_dyn_l2_gas_op_cost * new_term.main_dyn_gas_multiplier))); - tmp *= scaling_factor; - std::get<6>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<7, ContainerOverSubrelations>; - auto tmp = ((new_term.main_is_gas_accounted * - ((FF(1) - new_term.main_sel_op_external_call) - new_term.main_sel_op_static_call)) * - (((new_term.main_da_gas_remaining_shift - new_term.main_da_gas_remaining) + - new_term.main_base_da_gas_op_cost) + - (new_term.main_dyn_da_gas_op_cost * new_term.main_dyn_gas_multiplier))); - tmp *= scaling_factor; - std::get<7>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<8, ContainerOverSubrelations>; - auto tmp = (new_term.main_is_gas_accounted * - (((FF(1) - (FF(2) * new_term.main_l2_out_of_gas)) * new_term.main_l2_gas_remaining_shift) - - new_term.main_abs_l2_rem_gas)); - tmp *= scaling_factor; - std::get<8>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<9, ContainerOverSubrelations>; - auto tmp = (new_term.main_is_gas_accounted * - (((FF(1) - (FF(2) * new_term.main_da_out_of_gas)) * new_term.main_da_gas_remaining_shift) - - new_term.main_abs_da_rem_gas)); - tmp *= scaling_factor; - std::get<9>(evals) += typename Accumulator::View(tmp); + { + using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>; + auto tmp = (new_term.main_is_gas_accounted - ((FF(1) - new_term.main_is_fake_row) * new_term.main_sel_execution_row)); + tmp *= scaling_factor; + std::get<0>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<1, ContainerOverSubrelations>; + auto tmp = (new_term.main_l2_out_of_gas * (FF(1) - new_term.main_l2_out_of_gas)); + tmp *= scaling_factor; + std::get<1>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<2, ContainerOverSubrelations>; + auto tmp = (new_term.main_da_out_of_gas * (FF(1) - new_term.main_da_out_of_gas)); + tmp *= scaling_factor; + std::get<2>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<3, ContainerOverSubrelations>; + auto tmp = (new_term.main_is_fake_row * (FF(1) - new_term.main_is_fake_row)); + tmp *= scaling_factor; + std::get<3>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<4, ContainerOverSubrelations>; + auto tmp = (new_term.main_is_fake_row * (new_term.main_l2_gas_remaining - new_term.main_l2_gas_remaining_shift)); + tmp *= scaling_factor; + std::get<4>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<5, ContainerOverSubrelations>; + auto tmp = (new_term.main_is_fake_row * (new_term.main_da_gas_remaining - new_term.main_da_gas_remaining_shift)); + tmp *= scaling_factor; + std::get<5>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<6, ContainerOverSubrelations>; + auto tmp = ((new_term.main_is_gas_accounted * ((FF(1) - new_term.main_sel_op_external_call) - new_term.main_sel_op_static_call)) * (((new_term.main_l2_gas_remaining_shift - new_term.main_l2_gas_remaining) + new_term.main_base_l2_gas_op_cost) + (new_term.main_dyn_l2_gas_op_cost * new_term.main_dyn_gas_multiplier))); + tmp *= scaling_factor; + std::get<6>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<7, ContainerOverSubrelations>; + auto tmp = ((new_term.main_is_gas_accounted * ((FF(1) - new_term.main_sel_op_external_call) - new_term.main_sel_op_static_call)) * (((new_term.main_da_gas_remaining_shift - new_term.main_da_gas_remaining) + new_term.main_base_da_gas_op_cost) + (new_term.main_dyn_da_gas_op_cost * new_term.main_dyn_gas_multiplier))); + tmp *= scaling_factor; + std::get<7>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<8, ContainerOverSubrelations>; + auto tmp = (new_term.main_is_gas_accounted * (((FF(1) - (FF(2) * new_term.main_l2_out_of_gas)) * new_term.main_l2_gas_remaining_shift) - new_term.main_abs_l2_rem_gas)); + tmp *= scaling_factor; + std::get<8>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<9, ContainerOverSubrelations>; + auto tmp = (new_term.main_is_gas_accounted * (((FF(1) - (FF(2) * new_term.main_da_out_of_gas)) * new_term.main_da_gas_remaining_shift) - new_term.main_abs_da_rem_gas)); + tmp *= scaling_factor; + std::get<9>(evals) += typename Accumulator::View(tmp); + } } - } }; template class gas : public Relation> { - public: - static constexpr const char* NAME = "gas"; + public: + static constexpr const char* NAME = "gas"; - static std::string get_subrelation_label(size_t index) - { - switch (index) { - case 0: - return "IS_GAS_ACCOUNTED"; - case 4: - return "L2_GAS_NO_DECREMENT_FAKE_ROW"; - case 5: - return "DA_GAS_NO_DECREMENT_FAKE_ROW"; - case 6: - return "L2_GAS_REMAINING_DECREMENT_NOT_CALL"; - case 7: - return "DA_GAS_REMAINING_DECREMENT_NOT_CALL"; + static std::string get_subrelation_label(size_t index) { + switch (index) { + case 0: + return "IS_GAS_ACCOUNTED"; + case 4: + return "L2_GAS_NO_DECREMENT_FAKE_ROW"; + case 5: + return "DA_GAS_NO_DECREMENT_FAKE_ROW"; + case 6: + return "L2_GAS_REMAINING_DECREMENT_NOT_CALL"; + case 7: + return "DA_GAS_REMAINING_DECREMENT_NOT_CALL"; + } + return std::to_string(index); } - return std::to_string(index); - } }; } // namespace bb::Avm_vm \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/incl_main_tag_err.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/incl_main_tag_err.hpp index d57d5895aba..36c6501172a 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/incl_main_tag_err.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/incl_main_tag_err.hpp @@ -12,8 +12,8 @@ class incl_main_tag_err_lookup_settings { public: static constexpr size_t READ_TERMS = 1; static constexpr size_t WRITE_TERMS = 1; - static constexpr size_t READ_TERM_TYPES[READ_TERMS] = { 0 }; - static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = { 0 }; + static constexpr size_t READ_TERM_TYPES[READ_TERMS] = {0}; + static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = {0}; static constexpr size_t LOOKUP_TUPLE_SIZE = 1; static constexpr size_t INVERSE_EXISTS_POLYNOMIAL_DEGREE = 4; static constexpr size_t READ_TERM_DEGREE = 0; @@ -35,29 +35,32 @@ class incl_main_tag_err_lookup_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.incl_main_tag_err_inv, - in.incl_main_tag_err_counts, - in.mem_tag_err, - in.main_tag_err, - in.mem_clk, - in.main_clk); + return std::forward_as_tuple( + in.incl_main_tag_err_inv, + in.incl_main_tag_err_counts, + in.mem_tag_err, + in.main_tag_err, + in.mem_clk, + in.main_clk + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.incl_main_tag_err_inv, - in.incl_main_tag_err_counts, - in.mem_tag_err, - in.main_tag_err, - in.mem_clk, - in.main_clk); + return std::forward_as_tuple( + in.incl_main_tag_err_inv, + in.incl_main_tag_err_counts, + in.mem_tag_err, + in.main_tag_err, + in.mem_clk, + in.main_clk + ); } }; -template -class incl_main_tag_err_relation : public GenericLookupRelation { - public: - static constexpr const char* NAME = "INCL_MAIN_TAG_ERR"; +template class incl_main_tag_err_relation : public GenericLookupRelation { + public: + static constexpr const char* NAME = "INCL_MAIN_TAG_ERR"; }; template using incl_main_tag_err = GenericLookup; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/incl_mem_tag_err.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/incl_mem_tag_err.hpp index 8d3b91b0db1..299aa88106e 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/incl_mem_tag_err.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/incl_mem_tag_err.hpp @@ -12,8 +12,8 @@ class incl_mem_tag_err_lookup_settings { public: static constexpr size_t READ_TERMS = 1; static constexpr size_t WRITE_TERMS = 1; - static constexpr size_t READ_TERM_TYPES[READ_TERMS] = { 0 }; - static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = { 0 }; + static constexpr size_t READ_TERM_TYPES[READ_TERMS] = {0}; + static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = {0}; static constexpr size_t LOOKUP_TUPLE_SIZE = 1; static constexpr size_t INVERSE_EXISTS_POLYNOMIAL_DEGREE = 4; static constexpr size_t READ_TERM_DEGREE = 0; @@ -35,29 +35,32 @@ class incl_mem_tag_err_lookup_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.incl_mem_tag_err_inv, - in.incl_mem_tag_err_counts, - in.main_tag_err, - in.mem_tag_err, - in.main_clk, - in.mem_clk); + return std::forward_as_tuple( + in.incl_mem_tag_err_inv, + in.incl_mem_tag_err_counts, + in.main_tag_err, + in.mem_tag_err, + in.main_clk, + in.mem_clk + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.incl_mem_tag_err_inv, - in.incl_mem_tag_err_counts, - in.main_tag_err, - in.mem_tag_err, - in.main_clk, - in.mem_clk); + return std::forward_as_tuple( + in.incl_mem_tag_err_inv, + in.incl_mem_tag_err_counts, + in.main_tag_err, + in.mem_tag_err, + in.main_clk, + in.mem_clk + ); } }; -template -class incl_mem_tag_err_relation : public GenericLookupRelation { - public: - static constexpr const char* NAME = "INCL_MEM_TAG_ERR"; +template class incl_mem_tag_err_relation : public GenericLookupRelation { + public: + static constexpr const char* NAME = "INCL_MEM_TAG_ERR"; }; template using incl_mem_tag_err = GenericLookup; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/keccakf1600.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/keccakf1600.hpp index fe4e4c44610..9008a04e402 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/keccakf1600.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/keccakf1600.hpp @@ -6,37 +6,42 @@ namespace bb::Avm_vm { + template class keccakf1600Impl { - public: - using FF = FF_; - - static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { 3 }; - - template - void static accumulate(ContainerOverSubrelations& evals, - const AllEntities& new_term, - [[maybe_unused]] const RelationParameters&, - [[maybe_unused]] const FF& scaling_factor) - { - - { - using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>; - auto tmp = (new_term.keccakf1600_sel_keccakf1600 * (FF(1) - new_term.keccakf1600_sel_keccakf1600)); - tmp *= scaling_factor; - std::get<0>(evals) += typename Accumulator::View(tmp); + public: + using FF = FF_; + + static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { + 3 + }; + + + template + void static accumulate( + ContainerOverSubrelations& evals, + const AllEntities& new_term, + [[maybe_unused]] const RelationParameters&, + [[maybe_unused]] const FF& scaling_factor + ){ + + { + using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>; + auto tmp = (new_term.keccakf1600_sel_keccakf1600 * (FF(1) - new_term.keccakf1600_sel_keccakf1600)); + tmp *= scaling_factor; + std::get<0>(evals) += typename Accumulator::View(tmp); + } } - } }; template class keccakf1600 : public Relation> { - public: - static constexpr const char* NAME = "keccakf1600"; - - static std::string get_subrelation_label(size_t index) - { - switch (index) {} - return std::to_string(index); - } + public: + static constexpr const char* NAME = "keccakf1600"; + + static std::string get_subrelation_label(size_t index) { + switch (index) { + } + return std::to_string(index); + } }; } // namespace bb::Avm_vm \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/kernel.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/kernel.hpp index 25607e0e926..e77aa6da129 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/kernel.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/kernel.hpp @@ -6,457 +6,384 @@ namespace bb::Avm_vm { + template class kernelImpl { - public: - using FF = FF_; + public: + using FF = FF_; + + static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { + 3,3,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 + }; - static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; - template - void static accumulate(ContainerOverSubrelations& evals, - const AllEntities& new_term, - [[maybe_unused]] const RelationParameters&, - [[maybe_unused]] const FF& scaling_factor) - { - const auto constants_SENDER_KERNEL_INPUTS_COL_OFFSET = FF(0); - const auto constants_ADDRESS_KERNEL_INPUTS_COL_OFFSET = FF(1); - const auto constants_STORAGE_ADDRESS_KERNEL_INPUTS_COL_OFFSET = FF(1); - const auto constants_FUNCTION_SELECTOR_KERNEL_INPUTS_COL_OFFSET = FF(2); - const auto constants_IS_STATIC_CALL_KERNEL_INPUTS_COL_OFFSET = FF(3); - const auto constants_CHAIN_ID_KERNEL_INPUTS_COL_OFFSET = FF(4); - const auto constants_VERSION_KERNEL_INPUTS_COL_OFFSET = FF(5); - const auto constants_BLOCK_NUMBER_KERNEL_INPUTS_COL_OFFSET = FF(6); - const auto constants_TIMESTAMP_KERNEL_INPUTS_COL_OFFSET = FF(7); - const auto constants_FEE_PER_DA_GAS_KERNEL_INPUTS_COL_OFFSET = FF(8); - const auto constants_FEE_PER_L2_GAS_KERNEL_INPUTS_COL_OFFSET = FF(9); - const auto constants_TRANSACTION_FEE_KERNEL_INPUTS_COL_OFFSET = FF(14); - const auto constants_START_NOTE_HASH_EXISTS_WRITE_OFFSET = FF(0); - const auto constants_START_NULLIFIER_EXISTS_OFFSET = FF(16); - const auto constants_START_NULLIFIER_NON_EXISTS_OFFSET = FF(32); - const auto constants_START_L1_TO_L2_MSG_EXISTS_WRITE_OFFSET = FF(48); - const auto constants_START_SSTORE_WRITE_OFFSET = FF(64); - const auto constants_START_SLOAD_WRITE_OFFSET = FF(96); - const auto constants_START_EMIT_NOTE_HASH_WRITE_OFFSET = FF(128); - const auto constants_START_EMIT_NULLIFIER_WRITE_OFFSET = FF(144); - const auto constants_START_EMIT_L2_TO_L1_MSG_WRITE_OFFSET = FF(160); - const auto constants_START_EMIT_UNENCRYPTED_LOG_WRITE_OFFSET = FF(162); - const auto main_KERNEL_INPUT_SELECTORS = - (((((((((((new_term.main_sel_op_address + new_term.main_sel_op_storage_address) + - new_term.main_sel_op_sender) + - new_term.main_sel_op_function_selector) + - new_term.main_sel_op_transaction_fee) + - new_term.main_sel_op_chain_id) + - new_term.main_sel_op_version) + - new_term.main_sel_op_block_number) + - new_term.main_sel_op_timestamp) + - new_term.main_sel_op_fee_per_l2_gas) + - new_term.main_sel_op_fee_per_da_gas) + - new_term.main_sel_op_is_static_call); - const auto main_KERNEL_OUTPUT_SELECTORS = - ((((((((new_term.main_sel_op_note_hash_exists + new_term.main_sel_op_emit_note_hash) + - new_term.main_sel_op_nullifier_exists) + - new_term.main_sel_op_emit_nullifier) + - new_term.main_sel_op_l1_to_l2_msg_exists) + - new_term.main_sel_op_emit_unencrypted_log) + - new_term.main_sel_op_emit_l2_to_l1_msg) + - new_term.main_sel_op_sload) + - new_term.main_sel_op_sstore); + template + void static accumulate( + ContainerOverSubrelations& evals, + const AllEntities& new_term, + [[maybe_unused]] const RelationParameters&, + [[maybe_unused]] const FF& scaling_factor + ){ + const auto constants_SENDER_KERNEL_INPUTS_COL_OFFSET = FF(0); + const auto constants_ADDRESS_KERNEL_INPUTS_COL_OFFSET = FF(1); + const auto constants_STORAGE_ADDRESS_KERNEL_INPUTS_COL_OFFSET = FF(1); + const auto constants_FUNCTION_SELECTOR_KERNEL_INPUTS_COL_OFFSET = FF(2); + const auto constants_IS_STATIC_CALL_KERNEL_INPUTS_COL_OFFSET = FF(3); + const auto constants_CHAIN_ID_KERNEL_INPUTS_COL_OFFSET = FF(4); + const auto constants_VERSION_KERNEL_INPUTS_COL_OFFSET = FF(5); + const auto constants_BLOCK_NUMBER_KERNEL_INPUTS_COL_OFFSET = FF(6); + const auto constants_TIMESTAMP_KERNEL_INPUTS_COL_OFFSET = FF(7); + const auto constants_FEE_PER_DA_GAS_KERNEL_INPUTS_COL_OFFSET = FF(8); + const auto constants_FEE_PER_L2_GAS_KERNEL_INPUTS_COL_OFFSET = FF(9); + const auto constants_TRANSACTION_FEE_KERNEL_INPUTS_COL_OFFSET = FF(14); + const auto constants_START_NOTE_HASH_EXISTS_WRITE_OFFSET = FF(0); + const auto constants_START_NULLIFIER_EXISTS_OFFSET = FF(16); + const auto constants_START_NULLIFIER_NON_EXISTS_OFFSET = FF(32); + const auto constants_START_L1_TO_L2_MSG_EXISTS_WRITE_OFFSET = FF(48); + const auto constants_START_SSTORE_WRITE_OFFSET = FF(64); + const auto constants_START_SLOAD_WRITE_OFFSET = FF(96); + const auto constants_START_EMIT_NOTE_HASH_WRITE_OFFSET = FF(128); + const auto constants_START_EMIT_NULLIFIER_WRITE_OFFSET = FF(144); + const auto constants_START_EMIT_L2_TO_L1_MSG_WRITE_OFFSET = FF(160); + const auto constants_START_EMIT_UNENCRYPTED_LOG_WRITE_OFFSET = FF(162); + const auto main_KERNEL_INPUT_SELECTORS = (((((((((((new_term.main_sel_op_address + new_term.main_sel_op_storage_address) + new_term.main_sel_op_sender) + new_term.main_sel_op_function_selector) + new_term.main_sel_op_transaction_fee) + new_term.main_sel_op_chain_id) + new_term.main_sel_op_version) + new_term.main_sel_op_block_number) + new_term.main_sel_op_timestamp) + new_term.main_sel_op_fee_per_l2_gas) + new_term.main_sel_op_fee_per_da_gas) + new_term.main_sel_op_is_static_call); + const auto main_KERNEL_OUTPUT_SELECTORS = ((((((((new_term.main_sel_op_note_hash_exists + new_term.main_sel_op_emit_note_hash) + new_term.main_sel_op_nullifier_exists) + new_term.main_sel_op_emit_nullifier) + new_term.main_sel_op_l1_to_l2_msg_exists) + new_term.main_sel_op_emit_unencrypted_log) + new_term.main_sel_op_emit_l2_to_l1_msg) + new_term.main_sel_op_sload) + new_term.main_sel_op_sstore); - { - using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_execution_row * - (new_term.main_note_hash_exist_write_offset_shift - - (new_term.main_note_hash_exist_write_offset + new_term.main_sel_op_note_hash_exists))); - tmp *= scaling_factor; - std::get<0>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<1, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_execution_row * - (new_term.main_emit_note_hash_write_offset_shift - - (new_term.main_emit_note_hash_write_offset + new_term.main_sel_op_emit_note_hash))); - tmp *= scaling_factor; - std::get<1>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<2, ContainerOverSubrelations>; - auto tmp = - (new_term.main_sel_execution_row * (new_term.main_nullifier_exists_write_offset_shift - - (new_term.main_nullifier_exists_write_offset + - (new_term.main_sel_op_nullifier_exists * new_term.main_ib)))); - tmp *= scaling_factor; - std::get<2>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<3, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_execution_row * - (new_term.main_nullifier_non_exists_write_offset_shift - - (new_term.main_nullifier_non_exists_write_offset + - (new_term.main_sel_op_nullifier_exists * (FF(1) - new_term.main_ib))))); - tmp *= scaling_factor; - std::get<3>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<4, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_execution_row * - (new_term.main_emit_nullifier_write_offset_shift - - (new_term.main_emit_nullifier_write_offset + new_term.main_sel_op_emit_nullifier))); - tmp *= scaling_factor; - std::get<4>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<5, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_execution_row * - (new_term.main_l1_to_l2_msg_exists_write_offset_shift - - (new_term.main_l1_to_l2_msg_exists_write_offset + new_term.main_sel_op_l1_to_l2_msg_exists))); - tmp *= scaling_factor; - std::get<5>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<6, ContainerOverSubrelations>; - auto tmp = - (new_term.main_sel_execution_row * - (new_term.main_emit_unencrypted_log_write_offset_shift - - (new_term.main_emit_unencrypted_log_write_offset + new_term.main_sel_op_emit_unencrypted_log))); - tmp *= scaling_factor; - std::get<6>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<7, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_execution_row * - (new_term.main_emit_l2_to_l1_msg_write_offset_shift - - (new_term.main_emit_l2_to_l1_msg_write_offset + new_term.main_sel_op_emit_l2_to_l1_msg))); - tmp *= scaling_factor; - std::get<7>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<8, ContainerOverSubrelations>; - auto tmp = - (new_term.main_sel_execution_row * (new_term.main_sload_write_offset_shift - - (new_term.main_sload_write_offset + new_term.main_sel_op_sload))); - tmp *= scaling_factor; - std::get<8>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<9, ContainerOverSubrelations>; - auto tmp = - (new_term.main_sel_execution_row * (new_term.main_sstore_write_offset_shift - - (new_term.main_sstore_write_offset + new_term.main_sel_op_sstore))); - tmp *= scaling_factor; - std::get<9>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<10, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_address * - (new_term.main_kernel_in_offset - constants_ADDRESS_KERNEL_INPUTS_COL_OFFSET)); - tmp *= scaling_factor; - std::get<10>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<11, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_storage_address * - (new_term.main_kernel_in_offset - constants_STORAGE_ADDRESS_KERNEL_INPUTS_COL_OFFSET)); - tmp *= scaling_factor; - std::get<11>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<12, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_sender * - (new_term.main_kernel_in_offset - constants_SENDER_KERNEL_INPUTS_COL_OFFSET)); - tmp *= scaling_factor; - std::get<12>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<13, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_function_selector * - (new_term.main_kernel_in_offset - constants_FUNCTION_SELECTOR_KERNEL_INPUTS_COL_OFFSET)); - tmp *= scaling_factor; - std::get<13>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<14, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_transaction_fee * - (new_term.main_kernel_in_offset - constants_TRANSACTION_FEE_KERNEL_INPUTS_COL_OFFSET)); - tmp *= scaling_factor; - std::get<14>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<15, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_is_static_call * - (new_term.main_kernel_in_offset - constants_IS_STATIC_CALL_KERNEL_INPUTS_COL_OFFSET)); - tmp *= scaling_factor; - std::get<15>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<16, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_chain_id * - (new_term.main_kernel_in_offset - constants_CHAIN_ID_KERNEL_INPUTS_COL_OFFSET)); - tmp *= scaling_factor; - std::get<16>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<17, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_version * - (new_term.main_kernel_in_offset - constants_VERSION_KERNEL_INPUTS_COL_OFFSET)); - tmp *= scaling_factor; - std::get<17>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<18, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_block_number * - (new_term.main_kernel_in_offset - constants_BLOCK_NUMBER_KERNEL_INPUTS_COL_OFFSET)); - tmp *= scaling_factor; - std::get<18>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<19, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_timestamp * - (new_term.main_kernel_in_offset - constants_TIMESTAMP_KERNEL_INPUTS_COL_OFFSET)); - tmp *= scaling_factor; - std::get<19>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<20, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_fee_per_da_gas * - (new_term.main_kernel_in_offset - constants_FEE_PER_DA_GAS_KERNEL_INPUTS_COL_OFFSET)); - tmp *= scaling_factor; - std::get<20>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<21, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_fee_per_l2_gas * - (new_term.main_kernel_in_offset - constants_FEE_PER_L2_GAS_KERNEL_INPUTS_COL_OFFSET)); - tmp *= scaling_factor; - std::get<21>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<22, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_note_hash_exists * - (new_term.main_kernel_out_offset - - (constants_START_NOTE_HASH_EXISTS_WRITE_OFFSET + new_term.main_note_hash_exist_write_offset))); - tmp *= scaling_factor; - std::get<22>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<23, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_first * new_term.main_note_hash_exist_write_offset); - tmp *= scaling_factor; - std::get<23>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<24, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_emit_note_hash * - (new_term.main_kernel_out_offset - - (constants_START_EMIT_NOTE_HASH_WRITE_OFFSET + new_term.main_emit_note_hash_write_offset))); - tmp *= scaling_factor; - std::get<24>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<25, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_first * new_term.main_emit_note_hash_write_offset); - tmp *= scaling_factor; - std::get<25>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<26, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_nullifier_exists * - (new_term.main_kernel_out_offset - - ((new_term.main_ib * - (constants_START_NULLIFIER_EXISTS_OFFSET + new_term.main_nullifier_exists_write_offset)) + - ((FF(1) - new_term.main_ib) * (constants_START_NULLIFIER_NON_EXISTS_OFFSET + - new_term.main_nullifier_non_exists_write_offset))))); - tmp *= scaling_factor; - std::get<26>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<27, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_first * new_term.main_nullifier_exists_write_offset); - tmp *= scaling_factor; - std::get<27>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<28, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_first * new_term.main_nullifier_non_exists_write_offset); - tmp *= scaling_factor; - std::get<28>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<29, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_emit_nullifier * - (new_term.main_kernel_out_offset - - (constants_START_EMIT_NULLIFIER_WRITE_OFFSET + new_term.main_emit_nullifier_write_offset))); - tmp *= scaling_factor; - std::get<29>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<30, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_first * new_term.main_emit_nullifier_write_offset); - tmp *= scaling_factor; - std::get<30>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<31, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_l1_to_l2_msg_exists * - (new_term.main_kernel_out_offset - (constants_START_L1_TO_L2_MSG_EXISTS_WRITE_OFFSET + - new_term.main_l1_to_l2_msg_exists_write_offset))); - tmp *= scaling_factor; - std::get<31>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<32, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_first * new_term.main_l1_to_l2_msg_exists_write_offset); - tmp *= scaling_factor; - std::get<32>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<33, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_emit_unencrypted_log * - (new_term.main_kernel_out_offset - (constants_START_EMIT_UNENCRYPTED_LOG_WRITE_OFFSET + - new_term.main_emit_unencrypted_log_write_offset))); - tmp *= scaling_factor; - std::get<33>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<34, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_first * new_term.main_emit_unencrypted_log_write_offset); - tmp *= scaling_factor; - std::get<34>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<35, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_emit_l2_to_l1_msg * - (new_term.main_kernel_out_offset - (constants_START_EMIT_L2_TO_L1_MSG_WRITE_OFFSET + - new_term.main_emit_l2_to_l1_msg_write_offset))); - tmp *= scaling_factor; - std::get<35>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<36, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_first * new_term.main_emit_l2_to_l1_msg_write_offset); - tmp *= scaling_factor; - std::get<36>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<37, ContainerOverSubrelations>; - auto tmp = - (new_term.main_sel_op_sload * (new_term.main_kernel_out_offset - (constants_START_SLOAD_WRITE_OFFSET + - new_term.main_sload_write_offset))); - tmp *= scaling_factor; - std::get<37>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<38, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_first * new_term.main_sload_write_offset); - tmp *= scaling_factor; - std::get<38>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<39, ContainerOverSubrelations>; - auto tmp = - (new_term.main_sel_op_sstore * (new_term.main_kernel_out_offset - (constants_START_SSTORE_WRITE_OFFSET + - new_term.main_sstore_write_offset))); - tmp *= scaling_factor; - std::get<39>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<40, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_first * new_term.main_sstore_write_offset); - tmp *= scaling_factor; - std::get<40>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<41, ContainerOverSubrelations>; - auto tmp = (main_KERNEL_INPUT_SELECTORS * (FF(1) - new_term.main_sel_q_kernel_lookup)); - tmp *= scaling_factor; - std::get<41>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<42, ContainerOverSubrelations>; - auto tmp = (main_KERNEL_OUTPUT_SELECTORS * (FF(1) - new_term.main_sel_q_kernel_output_lookup)); - tmp *= scaling_factor; - std::get<42>(evals) += typename Accumulator::View(tmp); + { + using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_execution_row * (new_term.main_note_hash_exist_write_offset_shift - (new_term.main_note_hash_exist_write_offset + new_term.main_sel_op_note_hash_exists))); + tmp *= scaling_factor; + std::get<0>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<1, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_execution_row * (new_term.main_emit_note_hash_write_offset_shift - (new_term.main_emit_note_hash_write_offset + new_term.main_sel_op_emit_note_hash))); + tmp *= scaling_factor; + std::get<1>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<2, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_execution_row * (new_term.main_nullifier_exists_write_offset_shift - (new_term.main_nullifier_exists_write_offset + (new_term.main_sel_op_nullifier_exists * new_term.main_ib)))); + tmp *= scaling_factor; + std::get<2>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<3, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_execution_row * (new_term.main_nullifier_non_exists_write_offset_shift - (new_term.main_nullifier_non_exists_write_offset + (new_term.main_sel_op_nullifier_exists * (FF(1) - new_term.main_ib))))); + tmp *= scaling_factor; + std::get<3>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<4, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_execution_row * (new_term.main_emit_nullifier_write_offset_shift - (new_term.main_emit_nullifier_write_offset + new_term.main_sel_op_emit_nullifier))); + tmp *= scaling_factor; + std::get<4>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<5, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_execution_row * (new_term.main_l1_to_l2_msg_exists_write_offset_shift - (new_term.main_l1_to_l2_msg_exists_write_offset + new_term.main_sel_op_l1_to_l2_msg_exists))); + tmp *= scaling_factor; + std::get<5>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<6, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_execution_row * (new_term.main_emit_unencrypted_log_write_offset_shift - (new_term.main_emit_unencrypted_log_write_offset + new_term.main_sel_op_emit_unencrypted_log))); + tmp *= scaling_factor; + std::get<6>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<7, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_execution_row * (new_term.main_emit_l2_to_l1_msg_write_offset_shift - (new_term.main_emit_l2_to_l1_msg_write_offset + new_term.main_sel_op_emit_l2_to_l1_msg))); + tmp *= scaling_factor; + std::get<7>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<8, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_execution_row * (new_term.main_sload_write_offset_shift - (new_term.main_sload_write_offset + new_term.main_sel_op_sload))); + tmp *= scaling_factor; + std::get<8>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<9, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_execution_row * (new_term.main_sstore_write_offset_shift - (new_term.main_sstore_write_offset + new_term.main_sel_op_sstore))); + tmp *= scaling_factor; + std::get<9>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<10, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_address * (new_term.main_kernel_in_offset - constants_ADDRESS_KERNEL_INPUTS_COL_OFFSET)); + tmp *= scaling_factor; + std::get<10>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<11, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_storage_address * (new_term.main_kernel_in_offset - constants_STORAGE_ADDRESS_KERNEL_INPUTS_COL_OFFSET)); + tmp *= scaling_factor; + std::get<11>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<12, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_sender * (new_term.main_kernel_in_offset - constants_SENDER_KERNEL_INPUTS_COL_OFFSET)); + tmp *= scaling_factor; + std::get<12>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<13, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_function_selector * (new_term.main_kernel_in_offset - constants_FUNCTION_SELECTOR_KERNEL_INPUTS_COL_OFFSET)); + tmp *= scaling_factor; + std::get<13>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<14, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_transaction_fee * (new_term.main_kernel_in_offset - constants_TRANSACTION_FEE_KERNEL_INPUTS_COL_OFFSET)); + tmp *= scaling_factor; + std::get<14>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<15, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_is_static_call * (new_term.main_kernel_in_offset - constants_IS_STATIC_CALL_KERNEL_INPUTS_COL_OFFSET)); + tmp *= scaling_factor; + std::get<15>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<16, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_chain_id * (new_term.main_kernel_in_offset - constants_CHAIN_ID_KERNEL_INPUTS_COL_OFFSET)); + tmp *= scaling_factor; + std::get<16>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<17, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_version * (new_term.main_kernel_in_offset - constants_VERSION_KERNEL_INPUTS_COL_OFFSET)); + tmp *= scaling_factor; + std::get<17>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<18, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_block_number * (new_term.main_kernel_in_offset - constants_BLOCK_NUMBER_KERNEL_INPUTS_COL_OFFSET)); + tmp *= scaling_factor; + std::get<18>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<19, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_timestamp * (new_term.main_kernel_in_offset - constants_TIMESTAMP_KERNEL_INPUTS_COL_OFFSET)); + tmp *= scaling_factor; + std::get<19>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<20, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_fee_per_da_gas * (new_term.main_kernel_in_offset - constants_FEE_PER_DA_GAS_KERNEL_INPUTS_COL_OFFSET)); + tmp *= scaling_factor; + std::get<20>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<21, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_fee_per_l2_gas * (new_term.main_kernel_in_offset - constants_FEE_PER_L2_GAS_KERNEL_INPUTS_COL_OFFSET)); + tmp *= scaling_factor; + std::get<21>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<22, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_note_hash_exists * (new_term.main_kernel_out_offset - (constants_START_NOTE_HASH_EXISTS_WRITE_OFFSET + new_term.main_note_hash_exist_write_offset))); + tmp *= scaling_factor; + std::get<22>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<23, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_first * new_term.main_note_hash_exist_write_offset); + tmp *= scaling_factor; + std::get<23>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<24, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_emit_note_hash * (new_term.main_kernel_out_offset - (constants_START_EMIT_NOTE_HASH_WRITE_OFFSET + new_term.main_emit_note_hash_write_offset))); + tmp *= scaling_factor; + std::get<24>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<25, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_first * new_term.main_emit_note_hash_write_offset); + tmp *= scaling_factor; + std::get<25>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<26, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_nullifier_exists * (new_term.main_kernel_out_offset - ((new_term.main_ib * (constants_START_NULLIFIER_EXISTS_OFFSET + new_term.main_nullifier_exists_write_offset)) + ((FF(1) - new_term.main_ib) * (constants_START_NULLIFIER_NON_EXISTS_OFFSET + new_term.main_nullifier_non_exists_write_offset))))); + tmp *= scaling_factor; + std::get<26>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<27, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_first * new_term.main_nullifier_exists_write_offset); + tmp *= scaling_factor; + std::get<27>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<28, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_first * new_term.main_nullifier_non_exists_write_offset); + tmp *= scaling_factor; + std::get<28>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<29, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_emit_nullifier * (new_term.main_kernel_out_offset - (constants_START_EMIT_NULLIFIER_WRITE_OFFSET + new_term.main_emit_nullifier_write_offset))); + tmp *= scaling_factor; + std::get<29>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<30, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_first * new_term.main_emit_nullifier_write_offset); + tmp *= scaling_factor; + std::get<30>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<31, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_l1_to_l2_msg_exists * (new_term.main_kernel_out_offset - (constants_START_L1_TO_L2_MSG_EXISTS_WRITE_OFFSET + new_term.main_l1_to_l2_msg_exists_write_offset))); + tmp *= scaling_factor; + std::get<31>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<32, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_first * new_term.main_l1_to_l2_msg_exists_write_offset); + tmp *= scaling_factor; + std::get<32>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<33, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_emit_unencrypted_log * (new_term.main_kernel_out_offset - (constants_START_EMIT_UNENCRYPTED_LOG_WRITE_OFFSET + new_term.main_emit_unencrypted_log_write_offset))); + tmp *= scaling_factor; + std::get<33>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<34, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_first * new_term.main_emit_unencrypted_log_write_offset); + tmp *= scaling_factor; + std::get<34>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<35, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_emit_l2_to_l1_msg * (new_term.main_kernel_out_offset - (constants_START_EMIT_L2_TO_L1_MSG_WRITE_OFFSET + new_term.main_emit_l2_to_l1_msg_write_offset))); + tmp *= scaling_factor; + std::get<35>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<36, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_first * new_term.main_emit_l2_to_l1_msg_write_offset); + tmp *= scaling_factor; + std::get<36>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<37, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_sload * (new_term.main_kernel_out_offset - (constants_START_SLOAD_WRITE_OFFSET + new_term.main_sload_write_offset))); + tmp *= scaling_factor; + std::get<37>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<38, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_first * new_term.main_sload_write_offset); + tmp *= scaling_factor; + std::get<38>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<39, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_sstore * (new_term.main_kernel_out_offset - (constants_START_SSTORE_WRITE_OFFSET + new_term.main_sstore_write_offset))); + tmp *= scaling_factor; + std::get<39>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<40, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_first * new_term.main_sstore_write_offset); + tmp *= scaling_factor; + std::get<40>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<41, ContainerOverSubrelations>; + auto tmp = (main_KERNEL_INPUT_SELECTORS * (FF(1) - new_term.main_sel_q_kernel_lookup)); + tmp *= scaling_factor; + std::get<41>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<42, ContainerOverSubrelations>; + auto tmp = (main_KERNEL_OUTPUT_SELECTORS * (FF(1) - new_term.main_sel_q_kernel_output_lookup)); + tmp *= scaling_factor; + std::get<42>(evals) += typename Accumulator::View(tmp); + } } - } }; template class kernel : public Relation> { - public: - static constexpr const char* NAME = "kernel"; + public: + static constexpr const char* NAME = "kernel"; - static std::string get_subrelation_label(size_t index) - { - switch (index) { - case 0: - return "NOTE_HASH_EXISTS_INC_CONSISTENCY_CHECK"; - case 1: - return "EMIT_NOTE_HASH_INC_CONSISTENCY_CHECK"; - case 2: - return "NULLIFIER_EXISTS_INC_CONSISTENCY_CHECK"; - case 3: - return "NULLIFIER_NON_EXISTS_INC_CONSISTENCY_CHECK"; - case 4: - return "EMIT_NULLIFIER_INC_CONSISTENCY_CHECK"; - case 5: - return "L1_TO_L2_MSG_EXISTS_INC_CONSISTENCY_CHECK"; - case 6: - return "EMIT_UNENCRYPTED_LOG_INC_CONSISTENCY_CHECK"; - case 7: - return "EMIT_L2_TO_L1_MSG_INC_CONSISTENCY_CHECK"; - case 8: - return "SLOAD_INC_CONSISTENCY_CHECK"; - case 9: - return "SSTORE_INC_CONSISTENCY_CHECK"; - case 10: - return "ADDRESS_KERNEL"; - case 11: - return "STORAGE_ADDRESS_KERNEL"; - case 12: - return "SENDER_KERNEL"; - case 13: - return "FUNCTION_SELECTOR_KERNEL"; - case 14: - return "FEE_TRANSACTION_FEE_KERNEL"; - case 15: - return "IS_STATIC_CALL_KERNEL"; - case 16: - return "CHAIN_ID_KERNEL"; - case 17: - return "VERSION_KERNEL"; - case 18: - return "BLOCK_NUMBER_KERNEL"; - case 19: - return "TIMESTAMP_KERNEL"; - case 20: - return "FEE_DA_GAS_KERNEL"; - case 21: - return "FEE_L2_GAS_KERNEL"; - case 22: - return "NOTE_HASH_KERNEL_OUTPUT"; - case 24: - return "EMIT_NOTE_HASH_KERNEL_OUTPUT"; - case 26: - return "NULLIFIER_EXISTS_KERNEL_OUTPUT"; - case 29: - return "EMIT_NULLIFIER_KERNEL_OUTPUT"; - case 31: - return "L1_TO_L2_MSG_EXISTS_KERNEL_OUTPUT"; - case 33: - return "EMIT_UNENCRYPTED_LOG_KERNEL_OUTPUT"; - case 35: - return "EMIT_L2_TO_L1_MSGS_KERNEL_OUTPUT"; - case 37: - return "SLOAD_KERNEL_OUTPUT"; - case 39: - return "SSTORE_KERNEL_OUTPUT"; - case 41: - return "KERNEL_INPUT_ACTIVE_CHECK"; - case 42: - return "KERNEL_OUTPUT_ACTIVE_CHECK"; + static std::string get_subrelation_label(size_t index) { + switch (index) { + case 0: + return "NOTE_HASH_EXISTS_INC_CONSISTENCY_CHECK"; + case 1: + return "EMIT_NOTE_HASH_INC_CONSISTENCY_CHECK"; + case 2: + return "NULLIFIER_EXISTS_INC_CONSISTENCY_CHECK"; + case 3: + return "NULLIFIER_NON_EXISTS_INC_CONSISTENCY_CHECK"; + case 4: + return "EMIT_NULLIFIER_INC_CONSISTENCY_CHECK"; + case 5: + return "L1_TO_L2_MSG_EXISTS_INC_CONSISTENCY_CHECK"; + case 6: + return "EMIT_UNENCRYPTED_LOG_INC_CONSISTENCY_CHECK"; + case 7: + return "EMIT_L2_TO_L1_MSG_INC_CONSISTENCY_CHECK"; + case 8: + return "SLOAD_INC_CONSISTENCY_CHECK"; + case 9: + return "SSTORE_INC_CONSISTENCY_CHECK"; + case 10: + return "ADDRESS_KERNEL"; + case 11: + return "STORAGE_ADDRESS_KERNEL"; + case 12: + return "SENDER_KERNEL"; + case 13: + return "FUNCTION_SELECTOR_KERNEL"; + case 14: + return "FEE_TRANSACTION_FEE_KERNEL"; + case 15: + return "IS_STATIC_CALL_KERNEL"; + case 16: + return "CHAIN_ID_KERNEL"; + case 17: + return "VERSION_KERNEL"; + case 18: + return "BLOCK_NUMBER_KERNEL"; + case 19: + return "TIMESTAMP_KERNEL"; + case 20: + return "FEE_DA_GAS_KERNEL"; + case 21: + return "FEE_L2_GAS_KERNEL"; + case 22: + return "NOTE_HASH_KERNEL_OUTPUT"; + case 24: + return "EMIT_NOTE_HASH_KERNEL_OUTPUT"; + case 26: + return "NULLIFIER_EXISTS_KERNEL_OUTPUT"; + case 29: + return "EMIT_NULLIFIER_KERNEL_OUTPUT"; + case 31: + return "L1_TO_L2_MSG_EXISTS_KERNEL_OUTPUT"; + case 33: + return "EMIT_UNENCRYPTED_LOG_KERNEL_OUTPUT"; + case 35: + return "EMIT_L2_TO_L1_MSGS_KERNEL_OUTPUT"; + case 37: + return "SLOAD_KERNEL_OUTPUT"; + case 39: + return "SSTORE_KERNEL_OUTPUT"; + case 41: + return "KERNEL_INPUT_ACTIVE_CHECK"; + case 42: + return "KERNEL_OUTPUT_ACTIVE_CHECK"; + } + return std::to_string(index); } - return std::to_string(index); - } }; } // namespace bb::Avm_vm \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/kernel_output_lookup.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/kernel_output_lookup.hpp index 72a11d0e50f..4dc70d0eaef 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/kernel_output_lookup.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/kernel_output_lookup.hpp @@ -12,8 +12,8 @@ class kernel_output_lookup_lookup_settings { public: static constexpr size_t READ_TERMS = 1; static constexpr size_t WRITE_TERMS = 1; - static constexpr size_t READ_TERM_TYPES[READ_TERMS] = { 0 }; - static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = { 0 }; + static constexpr size_t READ_TERM_TYPES[READ_TERMS] = {0}; + static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = {0}; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; static constexpr size_t INVERSE_EXISTS_POLYNOMIAL_DEGREE = 4; static constexpr size_t READ_TERM_DEGREE = 0; @@ -35,33 +35,36 @@ class kernel_output_lookup_lookup_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.kernel_output_lookup_inv, - in.kernel_output_lookup_counts, - in.main_sel_q_kernel_output_lookup, - in.main_sel_kernel_out, - in.main_kernel_out_offset, - in.main_ib, - in.main_clk, - in.main_kernel_metadata_out); + return std::forward_as_tuple( + in.kernel_output_lookup_inv, + in.kernel_output_lookup_counts, + in.main_sel_q_kernel_output_lookup, + in.main_sel_kernel_out, + in.main_kernel_out_offset, + in.main_ib, + in.main_clk, + in.main_kernel_metadata_out + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.kernel_output_lookup_inv, - in.kernel_output_lookup_counts, - in.main_sel_q_kernel_output_lookup, - in.main_sel_kernel_out, - in.main_kernel_out_offset, - in.main_ib, - in.main_clk, - in.main_kernel_metadata_out); + return std::forward_as_tuple( + in.kernel_output_lookup_inv, + in.kernel_output_lookup_counts, + in.main_sel_q_kernel_output_lookup, + in.main_sel_kernel_out, + in.main_kernel_out_offset, + in.main_ib, + in.main_clk, + in.main_kernel_metadata_out + ); } }; -template -class kernel_output_lookup_relation : public GenericLookupRelation { - public: - static constexpr const char* NAME = "KERNEL_OUTPUT_LOOKUP"; +template class kernel_output_lookup_relation : public GenericLookupRelation { + public: + static constexpr const char* NAME = "KERNEL_OUTPUT_LOOKUP"; }; template using kernel_output_lookup = GenericLookup; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_byte_lengths.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_byte_lengths.hpp index 1c7d960b140..42a9ea7acd6 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_byte_lengths.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_byte_lengths.hpp @@ -12,8 +12,8 @@ class lookup_byte_lengths_lookup_settings { public: static constexpr size_t READ_TERMS = 1; static constexpr size_t WRITE_TERMS = 1; - static constexpr size_t READ_TERM_TYPES[READ_TERMS] = { 0 }; - static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = { 0 }; + static constexpr size_t READ_TERM_TYPES[READ_TERMS] = {0}; + static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = {0}; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; static constexpr size_t INVERSE_EXISTS_POLYNOMIAL_DEGREE = 4; static constexpr size_t READ_TERM_DEGREE = 0; @@ -35,33 +35,36 @@ class lookup_byte_lengths_lookup_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.lookup_byte_lengths_inv, - in.lookup_byte_lengths_counts, - in.binary_start, - in.byte_lookup_sel_bin, - in.binary_in_tag, - in.binary_mem_tag_ctr, - in.byte_lookup_table_in_tags, - in.byte_lookup_table_byte_lengths); + return std::forward_as_tuple( + in.lookup_byte_lengths_inv, + in.lookup_byte_lengths_counts, + in.binary_start, + in.byte_lookup_sel_bin, + in.binary_in_tag, + in.binary_mem_tag_ctr, + in.byte_lookup_table_in_tags, + in.byte_lookup_table_byte_lengths + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.lookup_byte_lengths_inv, - in.lookup_byte_lengths_counts, - in.binary_start, - in.byte_lookup_sel_bin, - in.binary_in_tag, - in.binary_mem_tag_ctr, - in.byte_lookup_table_in_tags, - in.byte_lookup_table_byte_lengths); + return std::forward_as_tuple( + in.lookup_byte_lengths_inv, + in.lookup_byte_lengths_counts, + in.binary_start, + in.byte_lookup_sel_bin, + in.binary_in_tag, + in.binary_mem_tag_ctr, + in.byte_lookup_table_in_tags, + in.byte_lookup_table_byte_lengths + ); } }; -template -class lookup_byte_lengths_relation : public GenericLookupRelation { - public: - static constexpr const char* NAME = "LOOKUP_BYTE_LENGTHS"; +template class lookup_byte_lengths_relation : public GenericLookupRelation { + public: + static constexpr const char* NAME = "LOOKUP_BYTE_LENGTHS"; }; template using lookup_byte_lengths = GenericLookup; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_byte_operations.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_byte_operations.hpp index 142e0969b6f..9e10d959e64 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_byte_operations.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_byte_operations.hpp @@ -12,8 +12,8 @@ class lookup_byte_operations_lookup_settings { public: static constexpr size_t READ_TERMS = 1; static constexpr size_t WRITE_TERMS = 1; - static constexpr size_t READ_TERM_TYPES[READ_TERMS] = { 0 }; - static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = { 0 }; + static constexpr size_t READ_TERM_TYPES[READ_TERMS] = {0}; + static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = {0}; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; static constexpr size_t INVERSE_EXISTS_POLYNOMIAL_DEGREE = 4; static constexpr size_t READ_TERM_DEGREE = 0; @@ -35,41 +35,44 @@ class lookup_byte_operations_lookup_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.lookup_byte_operations_inv, - in.lookup_byte_operations_counts, - in.binary_sel_bin, - in.byte_lookup_sel_bin, - in.binary_op_id, - in.binary_ia_bytes, - in.binary_ib_bytes, - in.binary_ic_bytes, - in.byte_lookup_table_op_id, - in.byte_lookup_table_input_a, - in.byte_lookup_table_input_b, - in.byte_lookup_table_output); + return std::forward_as_tuple( + in.lookup_byte_operations_inv, + in.lookup_byte_operations_counts, + in.binary_sel_bin, + in.byte_lookup_sel_bin, + in.binary_op_id, + in.binary_ia_bytes, + in.binary_ib_bytes, + in.binary_ic_bytes, + in.byte_lookup_table_op_id, + in.byte_lookup_table_input_a, + in.byte_lookup_table_input_b, + in.byte_lookup_table_output + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.lookup_byte_operations_inv, - in.lookup_byte_operations_counts, - in.binary_sel_bin, - in.byte_lookup_sel_bin, - in.binary_op_id, - in.binary_ia_bytes, - in.binary_ib_bytes, - in.binary_ic_bytes, - in.byte_lookup_table_op_id, - in.byte_lookup_table_input_a, - in.byte_lookup_table_input_b, - in.byte_lookup_table_output); + return std::forward_as_tuple( + in.lookup_byte_operations_inv, + in.lookup_byte_operations_counts, + in.binary_sel_bin, + in.byte_lookup_sel_bin, + in.binary_op_id, + in.binary_ia_bytes, + in.binary_ib_bytes, + in.binary_ic_bytes, + in.byte_lookup_table_op_id, + in.byte_lookup_table_input_a, + in.byte_lookup_table_input_b, + in.byte_lookup_table_output + ); } }; -template -class lookup_byte_operations_relation : public GenericLookupRelation { - public: - static constexpr const char* NAME = "LOOKUP_BYTE_OPERATIONS"; +template class lookup_byte_operations_relation : public GenericLookupRelation { + public: + static constexpr const char* NAME = "LOOKUP_BYTE_OPERATIONS"; }; template using lookup_byte_operations = GenericLookup; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_cd_value.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_cd_value.hpp index 6de998f1207..ce8379be2f7 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_cd_value.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_cd_value.hpp @@ -12,8 +12,8 @@ class lookup_cd_value_lookup_settings { public: static constexpr size_t READ_TERMS = 1; static constexpr size_t WRITE_TERMS = 1; - static constexpr size_t READ_TERM_TYPES[READ_TERMS] = { 0 }; - static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = { 0 }; + static constexpr size_t READ_TERM_TYPES[READ_TERMS] = {0}; + static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = {0}; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; static constexpr size_t INVERSE_EXISTS_POLYNOMIAL_DEGREE = 4; static constexpr size_t READ_TERM_DEGREE = 0; @@ -35,33 +35,36 @@ class lookup_cd_value_lookup_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.lookup_cd_value_inv, - in.lookup_cd_value_counts, - in.slice_sel_cd_cpy, - in.main_sel_calldata, - in.slice_col_offset, - in.slice_val, - in.main_clk, - in.main_calldata); + return std::forward_as_tuple( + in.lookup_cd_value_inv, + in.lookup_cd_value_counts, + in.slice_sel_cd_cpy, + in.main_sel_calldata, + in.slice_col_offset, + in.slice_val, + in.main_clk, + in.main_calldata + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.lookup_cd_value_inv, - in.lookup_cd_value_counts, - in.slice_sel_cd_cpy, - in.main_sel_calldata, - in.slice_col_offset, - in.slice_val, - in.main_clk, - in.main_calldata); + return std::forward_as_tuple( + in.lookup_cd_value_inv, + in.lookup_cd_value_counts, + in.slice_sel_cd_cpy, + in.main_sel_calldata, + in.slice_col_offset, + in.slice_val, + in.main_clk, + in.main_calldata + ); } }; -template -class lookup_cd_value_relation : public GenericLookupRelation { - public: - static constexpr const char* NAME = "LOOKUP_CD_VALUE"; +template class lookup_cd_value_relation : public GenericLookupRelation { + public: + static constexpr const char* NAME = "LOOKUP_CD_VALUE"; }; template using lookup_cd_value = GenericLookup; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_into_kernel.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_into_kernel.hpp index 0de10ad7e32..65aa4b30a47 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_into_kernel.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_into_kernel.hpp @@ -12,8 +12,8 @@ class lookup_into_kernel_lookup_settings { public: static constexpr size_t READ_TERMS = 1; static constexpr size_t WRITE_TERMS = 1; - static constexpr size_t READ_TERM_TYPES[READ_TERMS] = { 0 }; - static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = { 0 }; + static constexpr size_t READ_TERM_TYPES[READ_TERMS] = {0}; + static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = {0}; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; static constexpr size_t INVERSE_EXISTS_POLYNOMIAL_DEGREE = 4; static constexpr size_t READ_TERM_DEGREE = 0; @@ -35,33 +35,36 @@ class lookup_into_kernel_lookup_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.lookup_into_kernel_inv, - in.lookup_into_kernel_counts, - in.main_sel_q_kernel_lookup, - in.main_sel_kernel_inputs, - in.main_ia, - in.main_kernel_in_offset, - in.main_kernel_inputs, - in.main_clk); + return std::forward_as_tuple( + in.lookup_into_kernel_inv, + in.lookup_into_kernel_counts, + in.main_sel_q_kernel_lookup, + in.main_sel_kernel_inputs, + in.main_ia, + in.main_kernel_in_offset, + in.main_kernel_inputs, + in.main_clk + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.lookup_into_kernel_inv, - in.lookup_into_kernel_counts, - in.main_sel_q_kernel_lookup, - in.main_sel_kernel_inputs, - in.main_ia, - in.main_kernel_in_offset, - in.main_kernel_inputs, - in.main_clk); + return std::forward_as_tuple( + in.lookup_into_kernel_inv, + in.lookup_into_kernel_counts, + in.main_sel_q_kernel_lookup, + in.main_sel_kernel_inputs, + in.main_ia, + in.main_kernel_in_offset, + in.main_kernel_inputs, + in.main_clk + ); } }; -template -class lookup_into_kernel_relation : public GenericLookupRelation { - public: - static constexpr const char* NAME = "LOOKUP_INTO_KERNEL"; +template class lookup_into_kernel_relation : public GenericLookupRelation { + public: + static constexpr const char* NAME = "LOOKUP_INTO_KERNEL"; }; template using lookup_into_kernel = GenericLookup; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_opcode_gas.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_opcode_gas.hpp index 9e2f24fca6a..40e990e9177 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_opcode_gas.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_opcode_gas.hpp @@ -12,8 +12,8 @@ class lookup_opcode_gas_lookup_settings { public: static constexpr size_t READ_TERMS = 1; static constexpr size_t WRITE_TERMS = 1; - static constexpr size_t READ_TERM_TYPES[READ_TERMS] = { 0 }; - static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = { 0 }; + static constexpr size_t READ_TERM_TYPES[READ_TERMS] = {0}; + static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = {0}; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; static constexpr size_t INVERSE_EXISTS_POLYNOMIAL_DEGREE = 4; static constexpr size_t READ_TERM_DEGREE = 0; @@ -35,45 +35,48 @@ class lookup_opcode_gas_lookup_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.lookup_opcode_gas_inv, - in.lookup_opcode_gas_counts, - in.main_is_gas_accounted, - in.gas_sel_gas_cost, - in.main_opcode_val, - in.main_base_l2_gas_op_cost, - in.main_base_da_gas_op_cost, - in.main_dyn_l2_gas_op_cost, - in.main_dyn_da_gas_op_cost, - in.main_clk, - in.gas_base_l2_gas_fixed_table, - in.gas_base_da_gas_fixed_table, - in.gas_dyn_l2_gas_fixed_table, - in.gas_dyn_da_gas_fixed_table); + return std::forward_as_tuple( + in.lookup_opcode_gas_inv, + in.lookup_opcode_gas_counts, + in.main_is_gas_accounted, + in.gas_sel_gas_cost, + in.main_opcode_val, + in.main_base_l2_gas_op_cost, + in.main_base_da_gas_op_cost, + in.main_dyn_l2_gas_op_cost, + in.main_dyn_da_gas_op_cost, + in.main_clk, + in.gas_base_l2_gas_fixed_table, + in.gas_base_da_gas_fixed_table, + in.gas_dyn_l2_gas_fixed_table, + in.gas_dyn_da_gas_fixed_table + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.lookup_opcode_gas_inv, - in.lookup_opcode_gas_counts, - in.main_is_gas_accounted, - in.gas_sel_gas_cost, - in.main_opcode_val, - in.main_base_l2_gas_op_cost, - in.main_base_da_gas_op_cost, - in.main_dyn_l2_gas_op_cost, - in.main_dyn_da_gas_op_cost, - in.main_clk, - in.gas_base_l2_gas_fixed_table, - in.gas_base_da_gas_fixed_table, - in.gas_dyn_l2_gas_fixed_table, - in.gas_dyn_da_gas_fixed_table); + return std::forward_as_tuple( + in.lookup_opcode_gas_inv, + in.lookup_opcode_gas_counts, + in.main_is_gas_accounted, + in.gas_sel_gas_cost, + in.main_opcode_val, + in.main_base_l2_gas_op_cost, + in.main_base_da_gas_op_cost, + in.main_dyn_l2_gas_op_cost, + in.main_dyn_da_gas_op_cost, + in.main_clk, + in.gas_base_l2_gas_fixed_table, + in.gas_base_da_gas_fixed_table, + in.gas_dyn_l2_gas_fixed_table, + in.gas_dyn_da_gas_fixed_table + ); } }; -template -class lookup_opcode_gas_relation : public GenericLookupRelation { - public: - static constexpr const char* NAME = "LOOKUP_OPCODE_GAS"; +template class lookup_opcode_gas_relation : public GenericLookupRelation { + public: + static constexpr const char* NAME = "LOOKUP_OPCODE_GAS"; }; template using lookup_opcode_gas = GenericLookup; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_pow_2_0.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_pow_2_0.hpp index 3e85c3d1615..f5f462bce23 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_pow_2_0.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_pow_2_0.hpp @@ -12,8 +12,8 @@ class lookup_pow_2_0_lookup_settings { public: static constexpr size_t READ_TERMS = 1; static constexpr size_t WRITE_TERMS = 1; - static constexpr size_t READ_TERM_TYPES[READ_TERMS] = { 0 }; - static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = { 0 }; + static constexpr size_t READ_TERM_TYPES[READ_TERMS] = {0}; + static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = {0}; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; static constexpr size_t INVERSE_EXISTS_POLYNOMIAL_DEGREE = 4; static constexpr size_t READ_TERM_DEGREE = 0; @@ -35,33 +35,36 @@ class lookup_pow_2_0_lookup_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.lookup_pow_2_0_inv, - in.lookup_pow_2_0_counts, - in.alu_sel_shift_which, - in.main_sel_rng_8, - in.alu_ib, - in.alu_b_pow, - in.main_clk, - in.powers_power_of_2); + return std::forward_as_tuple( + in.lookup_pow_2_0_inv, + in.lookup_pow_2_0_counts, + in.alu_sel_shift_which, + in.main_sel_rng_8, + in.alu_ib, + in.alu_b_pow, + in.main_clk, + in.powers_power_of_2 + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.lookup_pow_2_0_inv, - in.lookup_pow_2_0_counts, - in.alu_sel_shift_which, - in.main_sel_rng_8, - in.alu_ib, - in.alu_b_pow, - in.main_clk, - in.powers_power_of_2); + return std::forward_as_tuple( + in.lookup_pow_2_0_inv, + in.lookup_pow_2_0_counts, + in.alu_sel_shift_which, + in.main_sel_rng_8, + in.alu_ib, + in.alu_b_pow, + in.main_clk, + in.powers_power_of_2 + ); } }; -template -class lookup_pow_2_0_relation : public GenericLookupRelation { - public: - static constexpr const char* NAME = "LOOKUP_POW_2_0"; +template class lookup_pow_2_0_relation : public GenericLookupRelation { + public: + static constexpr const char* NAME = "LOOKUP_POW_2_0"; }; template using lookup_pow_2_0 = GenericLookup; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_pow_2_1.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_pow_2_1.hpp index 42dd3759faa..6c78736241b 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_pow_2_1.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_pow_2_1.hpp @@ -12,8 +12,8 @@ class lookup_pow_2_1_lookup_settings { public: static constexpr size_t READ_TERMS = 1; static constexpr size_t WRITE_TERMS = 1; - static constexpr size_t READ_TERM_TYPES[READ_TERMS] = { 0 }; - static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = { 0 }; + static constexpr size_t READ_TERM_TYPES[READ_TERMS] = {0}; + static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = {0}; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; static constexpr size_t INVERSE_EXISTS_POLYNOMIAL_DEGREE = 4; static constexpr size_t READ_TERM_DEGREE = 0; @@ -35,33 +35,36 @@ class lookup_pow_2_1_lookup_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.lookup_pow_2_1_inv, - in.lookup_pow_2_1_counts, - in.alu_sel_shift_which, - in.main_sel_rng_8, - in.alu_max_bits_sub_b_bits, - in.alu_max_bits_sub_b_pow, - in.main_clk, - in.powers_power_of_2); + return std::forward_as_tuple( + in.lookup_pow_2_1_inv, + in.lookup_pow_2_1_counts, + in.alu_sel_shift_which, + in.main_sel_rng_8, + in.alu_max_bits_sub_b_bits, + in.alu_max_bits_sub_b_pow, + in.main_clk, + in.powers_power_of_2 + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.lookup_pow_2_1_inv, - in.lookup_pow_2_1_counts, - in.alu_sel_shift_which, - in.main_sel_rng_8, - in.alu_max_bits_sub_b_bits, - in.alu_max_bits_sub_b_pow, - in.main_clk, - in.powers_power_of_2); + return std::forward_as_tuple( + in.lookup_pow_2_1_inv, + in.lookup_pow_2_1_counts, + in.alu_sel_shift_which, + in.main_sel_rng_8, + in.alu_max_bits_sub_b_bits, + in.alu_max_bits_sub_b_pow, + in.main_clk, + in.powers_power_of_2 + ); } }; -template -class lookup_pow_2_1_relation : public GenericLookupRelation { - public: - static constexpr const char* NAME = "LOOKUP_POW_2_1"; +template class lookup_pow_2_1_relation : public GenericLookupRelation { + public: + static constexpr const char* NAME = "LOOKUP_POW_2_1"; }; template using lookup_pow_2_1 = GenericLookup; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_ret_value.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_ret_value.hpp index a0cc928991f..f8c412f7948 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_ret_value.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_ret_value.hpp @@ -12,8 +12,8 @@ class lookup_ret_value_lookup_settings { public: static constexpr size_t READ_TERMS = 1; static constexpr size_t WRITE_TERMS = 1; - static constexpr size_t READ_TERM_TYPES[READ_TERMS] = { 0 }; - static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = { 0 }; + static constexpr size_t READ_TERM_TYPES[READ_TERMS] = {0}; + static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = {0}; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; static constexpr size_t INVERSE_EXISTS_POLYNOMIAL_DEGREE = 4; static constexpr size_t READ_TERM_DEGREE = 0; @@ -35,33 +35,36 @@ class lookup_ret_value_lookup_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.lookup_ret_value_inv, - in.lookup_ret_value_counts, - in.slice_sel_return, - in.main_sel_returndata, - in.slice_col_offset, - in.slice_val, - in.main_clk, - in.main_returndata); + return std::forward_as_tuple( + in.lookup_ret_value_inv, + in.lookup_ret_value_counts, + in.slice_sel_return, + in.main_sel_returndata, + in.slice_col_offset, + in.slice_val, + in.main_clk, + in.main_returndata + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.lookup_ret_value_inv, - in.lookup_ret_value_counts, - in.slice_sel_return, - in.main_sel_returndata, - in.slice_col_offset, - in.slice_val, - in.main_clk, - in.main_returndata); + return std::forward_as_tuple( + in.lookup_ret_value_inv, + in.lookup_ret_value_counts, + in.slice_sel_return, + in.main_sel_returndata, + in.slice_col_offset, + in.slice_val, + in.main_clk, + in.main_returndata + ); } }; -template -class lookup_ret_value_relation : public GenericLookupRelation { - public: - static constexpr const char* NAME = "LOOKUP_RET_VALUE"; +template class lookup_ret_value_relation : public GenericLookupRelation { + public: + static constexpr const char* NAME = "LOOKUP_RET_VALUE"; }; template using lookup_ret_value = GenericLookup; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_0.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_0.hpp index 6c885f428f8..ed98d00b29c 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_0.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_0.hpp @@ -12,8 +12,8 @@ class lookup_rng_chk_0_lookup_settings { public: static constexpr size_t READ_TERMS = 1; static constexpr size_t WRITE_TERMS = 1; - static constexpr size_t READ_TERM_TYPES[READ_TERMS] = { 0 }; - static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = { 0 }; + static constexpr size_t READ_TERM_TYPES[READ_TERMS] = {0}; + static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = {0}; static constexpr size_t LOOKUP_TUPLE_SIZE = 1; static constexpr size_t INVERSE_EXISTS_POLYNOMIAL_DEGREE = 4; static constexpr size_t READ_TERM_DEGREE = 0; @@ -35,29 +35,32 @@ class lookup_rng_chk_0_lookup_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.lookup_rng_chk_0_inv, - in.lookup_rng_chk_0_counts, - in.range_check_sel_lookup_0, - in.main_sel_rng_16, - in.range_check_u16_r0, - in.main_clk); + return std::forward_as_tuple( + in.lookup_rng_chk_0_inv, + in.lookup_rng_chk_0_counts, + in.range_check_sel_lookup_0, + in.main_sel_rng_16, + in.range_check_u16_r0, + in.main_clk + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.lookup_rng_chk_0_inv, - in.lookup_rng_chk_0_counts, - in.range_check_sel_lookup_0, - in.main_sel_rng_16, - in.range_check_u16_r0, - in.main_clk); + return std::forward_as_tuple( + in.lookup_rng_chk_0_inv, + in.lookup_rng_chk_0_counts, + in.range_check_sel_lookup_0, + in.main_sel_rng_16, + in.range_check_u16_r0, + in.main_clk + ); } }; -template -class lookup_rng_chk_0_relation : public GenericLookupRelation { - public: - static constexpr const char* NAME = "LOOKUP_RNG_CHK_0"; +template class lookup_rng_chk_0_relation : public GenericLookupRelation { + public: + static constexpr const char* NAME = "LOOKUP_RNG_CHK_0"; }; template using lookup_rng_chk_0 = GenericLookup; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_1.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_1.hpp index 52707ee271b..fd9ced6bcb8 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_1.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_1.hpp @@ -12,8 +12,8 @@ class lookup_rng_chk_1_lookup_settings { public: static constexpr size_t READ_TERMS = 1; static constexpr size_t WRITE_TERMS = 1; - static constexpr size_t READ_TERM_TYPES[READ_TERMS] = { 0 }; - static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = { 0 }; + static constexpr size_t READ_TERM_TYPES[READ_TERMS] = {0}; + static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = {0}; static constexpr size_t LOOKUP_TUPLE_SIZE = 1; static constexpr size_t INVERSE_EXISTS_POLYNOMIAL_DEGREE = 4; static constexpr size_t READ_TERM_DEGREE = 0; @@ -35,29 +35,32 @@ class lookup_rng_chk_1_lookup_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.lookup_rng_chk_1_inv, - in.lookup_rng_chk_1_counts, - in.range_check_sel_lookup_1, - in.main_sel_rng_16, - in.range_check_u16_r1, - in.main_clk); + return std::forward_as_tuple( + in.lookup_rng_chk_1_inv, + in.lookup_rng_chk_1_counts, + in.range_check_sel_lookup_1, + in.main_sel_rng_16, + in.range_check_u16_r1, + in.main_clk + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.lookup_rng_chk_1_inv, - in.lookup_rng_chk_1_counts, - in.range_check_sel_lookup_1, - in.main_sel_rng_16, - in.range_check_u16_r1, - in.main_clk); + return std::forward_as_tuple( + in.lookup_rng_chk_1_inv, + in.lookup_rng_chk_1_counts, + in.range_check_sel_lookup_1, + in.main_sel_rng_16, + in.range_check_u16_r1, + in.main_clk + ); } }; -template -class lookup_rng_chk_1_relation : public GenericLookupRelation { - public: - static constexpr const char* NAME = "LOOKUP_RNG_CHK_1"; +template class lookup_rng_chk_1_relation : public GenericLookupRelation { + public: + static constexpr const char* NAME = "LOOKUP_RNG_CHK_1"; }; template using lookup_rng_chk_1 = GenericLookup; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_2.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_2.hpp index dd268fb7ee6..7979e603314 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_2.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_2.hpp @@ -12,8 +12,8 @@ class lookup_rng_chk_2_lookup_settings { public: static constexpr size_t READ_TERMS = 1; static constexpr size_t WRITE_TERMS = 1; - static constexpr size_t READ_TERM_TYPES[READ_TERMS] = { 0 }; - static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = { 0 }; + static constexpr size_t READ_TERM_TYPES[READ_TERMS] = {0}; + static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = {0}; static constexpr size_t LOOKUP_TUPLE_SIZE = 1; static constexpr size_t INVERSE_EXISTS_POLYNOMIAL_DEGREE = 4; static constexpr size_t READ_TERM_DEGREE = 0; @@ -35,29 +35,32 @@ class lookup_rng_chk_2_lookup_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.lookup_rng_chk_2_inv, - in.lookup_rng_chk_2_counts, - in.range_check_sel_lookup_2, - in.main_sel_rng_16, - in.range_check_u16_r2, - in.main_clk); + return std::forward_as_tuple( + in.lookup_rng_chk_2_inv, + in.lookup_rng_chk_2_counts, + in.range_check_sel_lookup_2, + in.main_sel_rng_16, + in.range_check_u16_r2, + in.main_clk + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.lookup_rng_chk_2_inv, - in.lookup_rng_chk_2_counts, - in.range_check_sel_lookup_2, - in.main_sel_rng_16, - in.range_check_u16_r2, - in.main_clk); + return std::forward_as_tuple( + in.lookup_rng_chk_2_inv, + in.lookup_rng_chk_2_counts, + in.range_check_sel_lookup_2, + in.main_sel_rng_16, + in.range_check_u16_r2, + in.main_clk + ); } }; -template -class lookup_rng_chk_2_relation : public GenericLookupRelation { - public: - static constexpr const char* NAME = "LOOKUP_RNG_CHK_2"; +template class lookup_rng_chk_2_relation : public GenericLookupRelation { + public: + static constexpr const char* NAME = "LOOKUP_RNG_CHK_2"; }; template using lookup_rng_chk_2 = GenericLookup; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_3.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_3.hpp index dc30497b814..7e3cd668c4f 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_3.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_3.hpp @@ -12,8 +12,8 @@ class lookup_rng_chk_3_lookup_settings { public: static constexpr size_t READ_TERMS = 1; static constexpr size_t WRITE_TERMS = 1; - static constexpr size_t READ_TERM_TYPES[READ_TERMS] = { 0 }; - static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = { 0 }; + static constexpr size_t READ_TERM_TYPES[READ_TERMS] = {0}; + static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = {0}; static constexpr size_t LOOKUP_TUPLE_SIZE = 1; static constexpr size_t INVERSE_EXISTS_POLYNOMIAL_DEGREE = 4; static constexpr size_t READ_TERM_DEGREE = 0; @@ -35,29 +35,32 @@ class lookup_rng_chk_3_lookup_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.lookup_rng_chk_3_inv, - in.lookup_rng_chk_3_counts, - in.range_check_sel_lookup_3, - in.main_sel_rng_16, - in.range_check_u16_r3, - in.main_clk); + return std::forward_as_tuple( + in.lookup_rng_chk_3_inv, + in.lookup_rng_chk_3_counts, + in.range_check_sel_lookup_3, + in.main_sel_rng_16, + in.range_check_u16_r3, + in.main_clk + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.lookup_rng_chk_3_inv, - in.lookup_rng_chk_3_counts, - in.range_check_sel_lookup_3, - in.main_sel_rng_16, - in.range_check_u16_r3, - in.main_clk); + return std::forward_as_tuple( + in.lookup_rng_chk_3_inv, + in.lookup_rng_chk_3_counts, + in.range_check_sel_lookup_3, + in.main_sel_rng_16, + in.range_check_u16_r3, + in.main_clk + ); } }; -template -class lookup_rng_chk_3_relation : public GenericLookupRelation { - public: - static constexpr const char* NAME = "LOOKUP_RNG_CHK_3"; +template class lookup_rng_chk_3_relation : public GenericLookupRelation { + public: + static constexpr const char* NAME = "LOOKUP_RNG_CHK_3"; }; template using lookup_rng_chk_3 = GenericLookup; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_4.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_4.hpp index b9ee0fd2461..bb396292f1f 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_4.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_4.hpp @@ -12,8 +12,8 @@ class lookup_rng_chk_4_lookup_settings { public: static constexpr size_t READ_TERMS = 1; static constexpr size_t WRITE_TERMS = 1; - static constexpr size_t READ_TERM_TYPES[READ_TERMS] = { 0 }; - static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = { 0 }; + static constexpr size_t READ_TERM_TYPES[READ_TERMS] = {0}; + static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = {0}; static constexpr size_t LOOKUP_TUPLE_SIZE = 1; static constexpr size_t INVERSE_EXISTS_POLYNOMIAL_DEGREE = 4; static constexpr size_t READ_TERM_DEGREE = 0; @@ -35,29 +35,32 @@ class lookup_rng_chk_4_lookup_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.lookup_rng_chk_4_inv, - in.lookup_rng_chk_4_counts, - in.range_check_sel_lookup_4, - in.main_sel_rng_16, - in.range_check_u16_r4, - in.main_clk); + return std::forward_as_tuple( + in.lookup_rng_chk_4_inv, + in.lookup_rng_chk_4_counts, + in.range_check_sel_lookup_4, + in.main_sel_rng_16, + in.range_check_u16_r4, + in.main_clk + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.lookup_rng_chk_4_inv, - in.lookup_rng_chk_4_counts, - in.range_check_sel_lookup_4, - in.main_sel_rng_16, - in.range_check_u16_r4, - in.main_clk); + return std::forward_as_tuple( + in.lookup_rng_chk_4_inv, + in.lookup_rng_chk_4_counts, + in.range_check_sel_lookup_4, + in.main_sel_rng_16, + in.range_check_u16_r4, + in.main_clk + ); } }; -template -class lookup_rng_chk_4_relation : public GenericLookupRelation { - public: - static constexpr const char* NAME = "LOOKUP_RNG_CHK_4"; +template class lookup_rng_chk_4_relation : public GenericLookupRelation { + public: + static constexpr const char* NAME = "LOOKUP_RNG_CHK_4"; }; template using lookup_rng_chk_4 = GenericLookup; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_5.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_5.hpp index c3f48021727..5ffd1194526 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_5.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_5.hpp @@ -12,8 +12,8 @@ class lookup_rng_chk_5_lookup_settings { public: static constexpr size_t READ_TERMS = 1; static constexpr size_t WRITE_TERMS = 1; - static constexpr size_t READ_TERM_TYPES[READ_TERMS] = { 0 }; - static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = { 0 }; + static constexpr size_t READ_TERM_TYPES[READ_TERMS] = {0}; + static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = {0}; static constexpr size_t LOOKUP_TUPLE_SIZE = 1; static constexpr size_t INVERSE_EXISTS_POLYNOMIAL_DEGREE = 4; static constexpr size_t READ_TERM_DEGREE = 0; @@ -35,29 +35,32 @@ class lookup_rng_chk_5_lookup_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.lookup_rng_chk_5_inv, - in.lookup_rng_chk_5_counts, - in.range_check_sel_lookup_5, - in.main_sel_rng_16, - in.range_check_u16_r5, - in.main_clk); + return std::forward_as_tuple( + in.lookup_rng_chk_5_inv, + in.lookup_rng_chk_5_counts, + in.range_check_sel_lookup_5, + in.main_sel_rng_16, + in.range_check_u16_r5, + in.main_clk + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.lookup_rng_chk_5_inv, - in.lookup_rng_chk_5_counts, - in.range_check_sel_lookup_5, - in.main_sel_rng_16, - in.range_check_u16_r5, - in.main_clk); + return std::forward_as_tuple( + in.lookup_rng_chk_5_inv, + in.lookup_rng_chk_5_counts, + in.range_check_sel_lookup_5, + in.main_sel_rng_16, + in.range_check_u16_r5, + in.main_clk + ); } }; -template -class lookup_rng_chk_5_relation : public GenericLookupRelation { - public: - static constexpr const char* NAME = "LOOKUP_RNG_CHK_5"; +template class lookup_rng_chk_5_relation : public GenericLookupRelation { + public: + static constexpr const char* NAME = "LOOKUP_RNG_CHK_5"; }; template using lookup_rng_chk_5 = GenericLookup; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_6.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_6.hpp index aa9d4155d17..d434d9c4f79 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_6.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_6.hpp @@ -12,8 +12,8 @@ class lookup_rng_chk_6_lookup_settings { public: static constexpr size_t READ_TERMS = 1; static constexpr size_t WRITE_TERMS = 1; - static constexpr size_t READ_TERM_TYPES[READ_TERMS] = { 0 }; - static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = { 0 }; + static constexpr size_t READ_TERM_TYPES[READ_TERMS] = {0}; + static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = {0}; static constexpr size_t LOOKUP_TUPLE_SIZE = 1; static constexpr size_t INVERSE_EXISTS_POLYNOMIAL_DEGREE = 4; static constexpr size_t READ_TERM_DEGREE = 0; @@ -35,29 +35,32 @@ class lookup_rng_chk_6_lookup_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.lookup_rng_chk_6_inv, - in.lookup_rng_chk_6_counts, - in.range_check_sel_lookup_6, - in.main_sel_rng_16, - in.range_check_u16_r6, - in.main_clk); + return std::forward_as_tuple( + in.lookup_rng_chk_6_inv, + in.lookup_rng_chk_6_counts, + in.range_check_sel_lookup_6, + in.main_sel_rng_16, + in.range_check_u16_r6, + in.main_clk + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.lookup_rng_chk_6_inv, - in.lookup_rng_chk_6_counts, - in.range_check_sel_lookup_6, - in.main_sel_rng_16, - in.range_check_u16_r6, - in.main_clk); + return std::forward_as_tuple( + in.lookup_rng_chk_6_inv, + in.lookup_rng_chk_6_counts, + in.range_check_sel_lookup_6, + in.main_sel_rng_16, + in.range_check_u16_r6, + in.main_clk + ); } }; -template -class lookup_rng_chk_6_relation : public GenericLookupRelation { - public: - static constexpr const char* NAME = "LOOKUP_RNG_CHK_6"; +template class lookup_rng_chk_6_relation : public GenericLookupRelation { + public: + static constexpr const char* NAME = "LOOKUP_RNG_CHK_6"; }; template using lookup_rng_chk_6 = GenericLookup; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_7.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_7.hpp index 355d956bce8..870eb378b2c 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_7.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_7.hpp @@ -12,8 +12,8 @@ class lookup_rng_chk_7_lookup_settings { public: static constexpr size_t READ_TERMS = 1; static constexpr size_t WRITE_TERMS = 1; - static constexpr size_t READ_TERM_TYPES[READ_TERMS] = { 0 }; - static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = { 0 }; + static constexpr size_t READ_TERM_TYPES[READ_TERMS] = {0}; + static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = {0}; static constexpr size_t LOOKUP_TUPLE_SIZE = 1; static constexpr size_t INVERSE_EXISTS_POLYNOMIAL_DEGREE = 4; static constexpr size_t READ_TERM_DEGREE = 0; @@ -35,29 +35,32 @@ class lookup_rng_chk_7_lookup_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.lookup_rng_chk_7_inv, - in.lookup_rng_chk_7_counts, - in.range_check_sel_rng_chk, - in.main_sel_rng_16, - in.range_check_u16_r7, - in.main_clk); + return std::forward_as_tuple( + in.lookup_rng_chk_7_inv, + in.lookup_rng_chk_7_counts, + in.range_check_sel_rng_chk, + in.main_sel_rng_16, + in.range_check_u16_r7, + in.main_clk + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.lookup_rng_chk_7_inv, - in.lookup_rng_chk_7_counts, - in.range_check_sel_rng_chk, - in.main_sel_rng_16, - in.range_check_u16_r7, - in.main_clk); + return std::forward_as_tuple( + in.lookup_rng_chk_7_inv, + in.lookup_rng_chk_7_counts, + in.range_check_sel_rng_chk, + in.main_sel_rng_16, + in.range_check_u16_r7, + in.main_clk + ); } }; -template -class lookup_rng_chk_7_relation : public GenericLookupRelation { - public: - static constexpr const char* NAME = "LOOKUP_RNG_CHK_7"; +template class lookup_rng_chk_7_relation : public GenericLookupRelation { + public: + static constexpr const char* NAME = "LOOKUP_RNG_CHK_7"; }; template using lookup_rng_chk_7 = GenericLookup; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_diff.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_diff.hpp index 1e8436a046c..afaf7f05451 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_diff.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_diff.hpp @@ -12,8 +12,8 @@ class lookup_rng_chk_diff_lookup_settings { public: static constexpr size_t READ_TERMS = 1; static constexpr size_t WRITE_TERMS = 1; - static constexpr size_t READ_TERM_TYPES[READ_TERMS] = { 0 }; - static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = { 0 }; + static constexpr size_t READ_TERM_TYPES[READ_TERMS] = {0}; + static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = {0}; static constexpr size_t LOOKUP_TUPLE_SIZE = 1; static constexpr size_t INVERSE_EXISTS_POLYNOMIAL_DEGREE = 4; static constexpr size_t READ_TERM_DEGREE = 0; @@ -35,29 +35,32 @@ class lookup_rng_chk_diff_lookup_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.lookup_rng_chk_diff_inv, - in.lookup_rng_chk_diff_counts, - in.range_check_sel_rng_chk, - in.main_sel_rng_16, - in.range_check_dyn_diff, - in.main_clk); + return std::forward_as_tuple( + in.lookup_rng_chk_diff_inv, + in.lookup_rng_chk_diff_counts, + in.range_check_sel_rng_chk, + in.main_sel_rng_16, + in.range_check_dyn_diff, + in.main_clk + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.lookup_rng_chk_diff_inv, - in.lookup_rng_chk_diff_counts, - in.range_check_sel_rng_chk, - in.main_sel_rng_16, - in.range_check_dyn_diff, - in.main_clk); + return std::forward_as_tuple( + in.lookup_rng_chk_diff_inv, + in.lookup_rng_chk_diff_counts, + in.range_check_sel_rng_chk, + in.main_sel_rng_16, + in.range_check_dyn_diff, + in.main_clk + ); } }; -template -class lookup_rng_chk_diff_relation : public GenericLookupRelation { - public: - static constexpr const char* NAME = "LOOKUP_RNG_CHK_DIFF"; +template class lookup_rng_chk_diff_relation : public GenericLookupRelation { + public: + static constexpr const char* NAME = "LOOKUP_RNG_CHK_DIFF"; }; template using lookup_rng_chk_diff = GenericLookup; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_pow_2.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_pow_2.hpp index 47c08e7a014..20d3fa42d54 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_pow_2.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/lookup_rng_chk_pow_2.hpp @@ -12,8 +12,8 @@ class lookup_rng_chk_pow_2_lookup_settings { public: static constexpr size_t READ_TERMS = 1; static constexpr size_t WRITE_TERMS = 1; - static constexpr size_t READ_TERM_TYPES[READ_TERMS] = { 0 }; - static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = { 0 }; + static constexpr size_t READ_TERM_TYPES[READ_TERMS] = {0}; + static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS] = {0}; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; static constexpr size_t INVERSE_EXISTS_POLYNOMIAL_DEGREE = 4; static constexpr size_t READ_TERM_DEGREE = 0; @@ -35,33 +35,36 @@ class lookup_rng_chk_pow_2_lookup_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.lookup_rng_chk_pow_2_inv, - in.lookup_rng_chk_pow_2_counts, - in.range_check_sel_rng_chk, - in.main_sel_rng_8, - in.range_check_dyn_rng_chk_bits, - in.range_check_dyn_rng_chk_pow_2, - in.main_clk, - in.powers_power_of_2); + return std::forward_as_tuple( + in.lookup_rng_chk_pow_2_inv, + in.lookup_rng_chk_pow_2_counts, + in.range_check_sel_rng_chk, + in.main_sel_rng_8, + in.range_check_dyn_rng_chk_bits, + in.range_check_dyn_rng_chk_pow_2, + in.main_clk, + in.powers_power_of_2 + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.lookup_rng_chk_pow_2_inv, - in.lookup_rng_chk_pow_2_counts, - in.range_check_sel_rng_chk, - in.main_sel_rng_8, - in.range_check_dyn_rng_chk_bits, - in.range_check_dyn_rng_chk_pow_2, - in.main_clk, - in.powers_power_of_2); + return std::forward_as_tuple( + in.lookup_rng_chk_pow_2_inv, + in.lookup_rng_chk_pow_2_counts, + in.range_check_sel_rng_chk, + in.main_sel_rng_8, + in.range_check_dyn_rng_chk_bits, + in.range_check_dyn_rng_chk_pow_2, + in.main_clk, + in.powers_power_of_2 + ); } }; -template -class lookup_rng_chk_pow_2_relation : public GenericLookupRelation { - public: - static constexpr const char* NAME = "LOOKUP_RNG_CHK_POW_2"; +template class lookup_rng_chk_pow_2_relation : public GenericLookupRelation { + public: + static constexpr const char* NAME = "LOOKUP_RNG_CHK_POW_2"; }; template using lookup_rng_chk_pow_2 = GenericLookup; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/main.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/main.hpp index b601cb9a36f..b77ba79f94d 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/main.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/main.hpp @@ -6,858 +6,773 @@ namespace bb::Avm_vm { + template class mainImpl { - public: - using FF = FF_; + public: + using FF = FF_; + + static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { + 2,3,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,4,4,3,3,3,3,4,3,3,3,3,3,3,3,3,3,3,3,5,5,3,3,4,4,3,3,3,3,4,3,3,3,3,4,2,2 + }; - static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { - 2, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 4, 4, 3, 3, 3, 3, 4, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 3, 3, 4, 4, 3, 3, 3, 3, 4, 3, 3, 3, 3, 4, 2, 2 - }; - template - void static accumulate(ContainerOverSubrelations& evals, - const AllEntities& new_term, - [[maybe_unused]] const RelationParameters&, - [[maybe_unused]] const FF& scaling_factor) - { - const auto constants_MEM_TAG_FF = FF(0); - const auto constants_MEM_TAG_U1 = FF(1); - const auto constants_misc_INTERNAL_CALL_SPACE_ID = FF(255); - const auto main_KERNEL_INPUT_SELECTORS = - (((((((((((new_term.main_sel_op_address + new_term.main_sel_op_storage_address) + - new_term.main_sel_op_sender) + - new_term.main_sel_op_function_selector) + - new_term.main_sel_op_transaction_fee) + - new_term.main_sel_op_chain_id) + - new_term.main_sel_op_version) + - new_term.main_sel_op_block_number) + - new_term.main_sel_op_timestamp) + - new_term.main_sel_op_fee_per_l2_gas) + - new_term.main_sel_op_fee_per_da_gas) + - new_term.main_sel_op_is_static_call); - const auto main_KERNEL_OUTPUT_SELECTORS = - ((((((((new_term.main_sel_op_note_hash_exists + new_term.main_sel_op_emit_note_hash) + - new_term.main_sel_op_nullifier_exists) + - new_term.main_sel_op_emit_nullifier) + - new_term.main_sel_op_l1_to_l2_msg_exists) + - new_term.main_sel_op_emit_unencrypted_log) + - new_term.main_sel_op_emit_l2_to_l1_msg) + - new_term.main_sel_op_sload) + - new_term.main_sel_op_sstore); - const auto main_SEL_ALL_CTRL_FLOW = - ((((((new_term.main_sel_op_jump + new_term.main_sel_op_jumpi) + new_term.main_sel_op_internal_call) + - new_term.main_sel_op_internal_return) + - new_term.main_sel_op_external_call) + - new_term.main_sel_op_static_call) + - new_term.main_sel_op_external_return); - const auto main_SEL_ALU_R_TAG = - (((((((((new_term.main_sel_op_add + new_term.main_sel_op_sub) + new_term.main_sel_op_mul) + - new_term.main_sel_op_div) + - new_term.main_sel_op_not) + - new_term.main_sel_op_eq) + - new_term.main_sel_op_lt) + - new_term.main_sel_op_lte) + - new_term.main_sel_op_shr) + - new_term.main_sel_op_shl); - const auto main_SEL_ALU_W_TAG = new_term.main_sel_op_cast; - const auto main_SEL_ALL_ALU = (main_SEL_ALU_R_TAG + main_SEL_ALU_W_TAG); - const auto main_SEL_ALL_LEFTGAS = (new_term.main_sel_op_dagasleft + new_term.main_sel_op_l2gasleft); - const auto main_SEL_ALL_BINARY = - ((new_term.main_sel_op_and + new_term.main_sel_op_or) + new_term.main_sel_op_xor); - const auto main_SEL_ALL_GADGET = - (((((((new_term.main_sel_op_radix_le + new_term.main_sel_op_sha256) + new_term.main_sel_op_poseidon2) + - new_term.main_sel_op_keccak) + - new_term.main_sel_op_pedersen) + - new_term.main_sel_op_ecadd) + - new_term.main_sel_op_pedersen_commit) + - new_term.main_sel_op_msm); - const auto main_SEL_ALL_MEMORY = (new_term.main_sel_op_mov + new_term.main_sel_op_set); - const auto main_OPCODE_SELECTORS = ((((((((((new_term.main_sel_op_fdiv + new_term.main_sel_op_calldata_copy) + - new_term.main_sel_op_get_contract_instance) + - main_SEL_ALL_ALU) + - main_SEL_ALL_BINARY) + - main_SEL_ALL_MEMORY) + - main_SEL_ALL_GADGET) + - main_KERNEL_INPUT_SELECTORS) + - main_KERNEL_OUTPUT_SELECTORS) + - main_SEL_ALL_LEFTGAS) + - main_SEL_ALL_CTRL_FLOW); - const auto main_CUR_AND_NEXT_ARE_MAIN = - (new_term.main_sel_execution_row * new_term.main_sel_execution_row_shift); + template + void static accumulate( + ContainerOverSubrelations& evals, + const AllEntities& new_term, + [[maybe_unused]] const RelationParameters&, + [[maybe_unused]] const FF& scaling_factor + ){ + const auto constants_MEM_TAG_FF = FF(0); + const auto constants_MEM_TAG_U1 = FF(1); + const auto constants_misc_INTERNAL_CALL_SPACE_ID = FF(255); + const auto main_KERNEL_INPUT_SELECTORS = (((((((((((new_term.main_sel_op_address + new_term.main_sel_op_storage_address) + new_term.main_sel_op_sender) + new_term.main_sel_op_function_selector) + new_term.main_sel_op_transaction_fee) + new_term.main_sel_op_chain_id) + new_term.main_sel_op_version) + new_term.main_sel_op_block_number) + new_term.main_sel_op_timestamp) + new_term.main_sel_op_fee_per_l2_gas) + new_term.main_sel_op_fee_per_da_gas) + new_term.main_sel_op_is_static_call); + const auto main_KERNEL_OUTPUT_SELECTORS = ((((((((new_term.main_sel_op_note_hash_exists + new_term.main_sel_op_emit_note_hash) + new_term.main_sel_op_nullifier_exists) + new_term.main_sel_op_emit_nullifier) + new_term.main_sel_op_l1_to_l2_msg_exists) + new_term.main_sel_op_emit_unencrypted_log) + new_term.main_sel_op_emit_l2_to_l1_msg) + new_term.main_sel_op_sload) + new_term.main_sel_op_sstore); + const auto main_SEL_ALL_CTRL_FLOW = ((((((new_term.main_sel_op_jump + new_term.main_sel_op_jumpi) + new_term.main_sel_op_internal_call) + new_term.main_sel_op_internal_return) + new_term.main_sel_op_external_call) + new_term.main_sel_op_static_call) + new_term.main_sel_op_external_return); + const auto main_SEL_ALU_R_TAG = (((((((((new_term.main_sel_op_add + new_term.main_sel_op_sub) + new_term.main_sel_op_mul) + new_term.main_sel_op_div) + new_term.main_sel_op_not) + new_term.main_sel_op_eq) + new_term.main_sel_op_lt) + new_term.main_sel_op_lte) + new_term.main_sel_op_shr) + new_term.main_sel_op_shl); + const auto main_SEL_ALU_W_TAG = new_term.main_sel_op_cast; + const auto main_SEL_ALL_ALU = (main_SEL_ALU_R_TAG + main_SEL_ALU_W_TAG); + const auto main_SEL_ALL_LEFTGAS = (new_term.main_sel_op_dagasleft + new_term.main_sel_op_l2gasleft); + const auto main_SEL_ALL_BINARY = ((new_term.main_sel_op_and + new_term.main_sel_op_or) + new_term.main_sel_op_xor); + const auto main_SEL_ALL_GADGET = (((((new_term.main_sel_op_radix_le + new_term.main_sel_op_sha256) + new_term.main_sel_op_poseidon2) + new_term.main_sel_op_keccak) + new_term.main_sel_op_ecadd) + new_term.main_sel_op_msm); + const auto main_SEL_ALL_MEMORY = (new_term.main_sel_op_mov + new_term.main_sel_op_set); + const auto main_OPCODE_SELECTORS = ((((((((((new_term.main_sel_op_fdiv + new_term.main_sel_op_calldata_copy) + new_term.main_sel_op_get_contract_instance) + main_SEL_ALL_ALU) + main_SEL_ALL_BINARY) + main_SEL_ALL_MEMORY) + main_SEL_ALL_GADGET) + main_KERNEL_INPUT_SELECTORS) + main_KERNEL_OUTPUT_SELECTORS) + main_SEL_ALL_LEFTGAS) + main_SEL_ALL_CTRL_FLOW); + const auto main_CUR_AND_NEXT_ARE_MAIN = (new_term.main_sel_execution_row * new_term.main_sel_execution_row_shift); - { - using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_execution_row - main_OPCODE_SELECTORS); - tmp *= scaling_factor; - std::get<0>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<1, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_execution_row * (FF(1) - new_term.main_sel_execution_row)); - tmp *= scaling_factor; - std::get<1>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<2, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_execution_end_shift - - ((new_term.main_sel_execution_row * (FF(1) - new_term.main_sel_execution_row_shift)) * - (FF(1) - new_term.main_sel_first))); - tmp *= scaling_factor; - std::get<2>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<3, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_address * (FF(1) - new_term.main_sel_op_address)); - tmp *= scaling_factor; - std::get<3>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<4, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_storage_address * (FF(1) - new_term.main_sel_op_storage_address)); - tmp *= scaling_factor; - std::get<4>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<5, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_sender * (FF(1) - new_term.main_sel_op_sender)); - tmp *= scaling_factor; - std::get<5>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<6, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_function_selector * (FF(1) - new_term.main_sel_op_function_selector)); - tmp *= scaling_factor; - std::get<6>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<7, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_transaction_fee * (FF(1) - new_term.main_sel_op_transaction_fee)); - tmp *= scaling_factor; - std::get<7>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<8, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_chain_id * (FF(1) - new_term.main_sel_op_chain_id)); - tmp *= scaling_factor; - std::get<8>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<9, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_version * (FF(1) - new_term.main_sel_op_version)); - tmp *= scaling_factor; - std::get<9>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<10, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_block_number * (FF(1) - new_term.main_sel_op_block_number)); - tmp *= scaling_factor; - std::get<10>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<11, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_timestamp * (FF(1) - new_term.main_sel_op_timestamp)); - tmp *= scaling_factor; - std::get<11>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<12, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_fee_per_l2_gas * (FF(1) - new_term.main_sel_op_fee_per_l2_gas)); - tmp *= scaling_factor; - std::get<12>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<13, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_fee_per_da_gas * (FF(1) - new_term.main_sel_op_fee_per_da_gas)); - tmp *= scaling_factor; - std::get<13>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<14, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_is_static_call * (FF(1) - new_term.main_sel_op_is_static_call)); - tmp *= scaling_factor; - std::get<14>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<15, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_l2gasleft * (FF(1) - new_term.main_sel_op_l2gasleft)); - tmp *= scaling_factor; - std::get<15>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<16, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_dagasleft * (FF(1) - new_term.main_sel_op_dagasleft)); - tmp *= scaling_factor; - std::get<16>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<17, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_note_hash_exists * (FF(1) - new_term.main_sel_op_note_hash_exists)); - tmp *= scaling_factor; - std::get<17>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<18, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_emit_note_hash * (FF(1) - new_term.main_sel_op_emit_note_hash)); - tmp *= scaling_factor; - std::get<18>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<19, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_nullifier_exists * (FF(1) - new_term.main_sel_op_nullifier_exists)); - tmp *= scaling_factor; - std::get<19>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<20, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_emit_nullifier * (FF(1) - new_term.main_sel_op_emit_nullifier)); - tmp *= scaling_factor; - std::get<20>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<21, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_l1_to_l2_msg_exists * (FF(1) - new_term.main_sel_op_l1_to_l2_msg_exists)); - tmp *= scaling_factor; - std::get<21>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<22, ContainerOverSubrelations>; - auto tmp = - (new_term.main_sel_op_emit_unencrypted_log * (FF(1) - new_term.main_sel_op_emit_unencrypted_log)); - tmp *= scaling_factor; - std::get<22>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<23, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_emit_l2_to_l1_msg * (FF(1) - new_term.main_sel_op_emit_l2_to_l1_msg)); - tmp *= scaling_factor; - std::get<23>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<24, ContainerOverSubrelations>; - auto tmp = - (new_term.main_sel_op_get_contract_instance * (FF(1) - new_term.main_sel_op_get_contract_instance)); - tmp *= scaling_factor; - std::get<24>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<25, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_sload * (FF(1) - new_term.main_sel_op_sload)); - tmp *= scaling_factor; - std::get<25>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<26, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_sstore * (FF(1) - new_term.main_sel_op_sstore)); - tmp *= scaling_factor; - std::get<26>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<27, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_radix_le * (FF(1) - new_term.main_sel_op_radix_le)); - tmp *= scaling_factor; - std::get<27>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<28, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_sha256 * (FF(1) - new_term.main_sel_op_sha256)); - tmp *= scaling_factor; - std::get<28>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<29, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_poseidon2 * (FF(1) - new_term.main_sel_op_poseidon2)); - tmp *= scaling_factor; - std::get<29>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<30, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_keccak * (FF(1) - new_term.main_sel_op_keccak)); - tmp *= scaling_factor; - std::get<30>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<31, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_pedersen * (FF(1) - new_term.main_sel_op_pedersen)); - tmp *= scaling_factor; - std::get<31>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<32, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_ecadd * (FF(1) - new_term.main_sel_op_ecadd)); - tmp *= scaling_factor; - std::get<32>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<33, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_pedersen_commit * (FF(1) - new_term.main_sel_op_pedersen_commit)); - tmp *= scaling_factor; - std::get<33>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<34, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_msm * (FF(1) - new_term.main_sel_op_msm)); - tmp *= scaling_factor; - std::get<34>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<35, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_add * (FF(1) - new_term.main_sel_op_add)); - tmp *= scaling_factor; - std::get<35>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<36, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_sub * (FF(1) - new_term.main_sel_op_sub)); - tmp *= scaling_factor; - std::get<36>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<37, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_mul * (FF(1) - new_term.main_sel_op_mul)); - tmp *= scaling_factor; - std::get<37>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<38, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_div * (FF(1) - new_term.main_sel_op_div)); - tmp *= scaling_factor; - std::get<38>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<39, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_fdiv * (FF(1) - new_term.main_sel_op_fdiv)); - tmp *= scaling_factor; - std::get<39>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<40, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_not * (FF(1) - new_term.main_sel_op_not)); - tmp *= scaling_factor; - std::get<40>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<41, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_eq * (FF(1) - new_term.main_sel_op_eq)); - tmp *= scaling_factor; - std::get<41>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<42, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_and * (FF(1) - new_term.main_sel_op_and)); - tmp *= scaling_factor; - std::get<42>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<43, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_or * (FF(1) - new_term.main_sel_op_or)); - tmp *= scaling_factor; - std::get<43>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<44, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_xor * (FF(1) - new_term.main_sel_op_xor)); - tmp *= scaling_factor; - std::get<44>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<45, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_cast * (FF(1) - new_term.main_sel_op_cast)); - tmp *= scaling_factor; - std::get<45>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<46, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_lt * (FF(1) - new_term.main_sel_op_lt)); - tmp *= scaling_factor; - std::get<46>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<47, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_lte * (FF(1) - new_term.main_sel_op_lte)); - tmp *= scaling_factor; - std::get<47>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<48, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_shl * (FF(1) - new_term.main_sel_op_shl)); - tmp *= scaling_factor; - std::get<48>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<49, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_shr * (FF(1) - new_term.main_sel_op_shr)); - tmp *= scaling_factor; - std::get<49>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<50, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_internal_call * (FF(1) - new_term.main_sel_op_internal_call)); - tmp *= scaling_factor; - std::get<50>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<51, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_internal_return * (FF(1) - new_term.main_sel_op_internal_return)); - tmp *= scaling_factor; - std::get<51>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<52, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_jump * (FF(1) - new_term.main_sel_op_jump)); - tmp *= scaling_factor; - std::get<52>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<53, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_jumpi * (FF(1) - new_term.main_sel_op_jumpi)); - tmp *= scaling_factor; - std::get<53>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<54, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_external_call * (FF(1) - new_term.main_sel_op_external_call)); - tmp *= scaling_factor; - std::get<54>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<55, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_static_call * (FF(1) - new_term.main_sel_op_static_call)); - tmp *= scaling_factor; - std::get<55>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<56, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_calldata_copy * (FF(1) - new_term.main_sel_op_calldata_copy)); - tmp *= scaling_factor; - std::get<56>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<57, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_external_return * (FF(1) - new_term.main_sel_op_external_return)); - tmp *= scaling_factor; - std::get<57>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<58, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_external_revert * (FF(1) - new_term.main_sel_op_external_revert)); - tmp *= scaling_factor; - std::get<58>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<59, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_set * (FF(1) - new_term.main_sel_op_set)); - tmp *= scaling_factor; - std::get<59>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<60, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_mov * (FF(1) - new_term.main_sel_op_mov)); - tmp *= scaling_factor; - std::get<60>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<61, ContainerOverSubrelations>; - auto tmp = (new_term.main_op_err * (FF(1) - new_term.main_op_err)); - tmp *= scaling_factor; - std::get<61>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<62, ContainerOverSubrelations>; - auto tmp = (new_term.main_tag_err * (FF(1) - new_term.main_tag_err)); - tmp *= scaling_factor; - std::get<62>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<63, ContainerOverSubrelations>; - auto tmp = (new_term.main_id_zero * (FF(1) - new_term.main_id_zero)); - tmp *= scaling_factor; - std::get<63>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<64, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_mem_op_a * (FF(1) - new_term.main_sel_mem_op_a)); - tmp *= scaling_factor; - std::get<64>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<65, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_mem_op_b * (FF(1) - new_term.main_sel_mem_op_b)); - tmp *= scaling_factor; - std::get<65>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<66, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_mem_op_c * (FF(1) - new_term.main_sel_mem_op_c)); - tmp *= scaling_factor; - std::get<66>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<67, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_mem_op_d * (FF(1) - new_term.main_sel_mem_op_d)); - tmp *= scaling_factor; - std::get<67>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<68, ContainerOverSubrelations>; - auto tmp = (new_term.main_rwa * (FF(1) - new_term.main_rwa)); - tmp *= scaling_factor; - std::get<68>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<69, ContainerOverSubrelations>; - auto tmp = (new_term.main_rwb * (FF(1) - new_term.main_rwb)); - tmp *= scaling_factor; - std::get<69>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<70, ContainerOverSubrelations>; - auto tmp = (new_term.main_rwc * (FF(1) - new_term.main_rwc)); - tmp *= scaling_factor; - std::get<70>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<71, ContainerOverSubrelations>; - auto tmp = (new_term.main_rwd * (FF(1) - new_term.main_rwd)); - tmp *= scaling_factor; - std::get<71>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<72, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_resolve_ind_addr_a * (FF(1) - new_term.main_sel_resolve_ind_addr_a)); - tmp *= scaling_factor; - std::get<72>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<73, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_resolve_ind_addr_b * (FF(1) - new_term.main_sel_resolve_ind_addr_b)); - tmp *= scaling_factor; - std::get<73>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<74, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_resolve_ind_addr_c * (FF(1) - new_term.main_sel_resolve_ind_addr_c)); - tmp *= scaling_factor; - std::get<74>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<75, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_resolve_ind_addr_d * (FF(1) - new_term.main_sel_resolve_ind_addr_d)); - tmp *= scaling_factor; - std::get<75>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<76, ContainerOverSubrelations>; - auto tmp = (((new_term.main_sel_op_eq + new_term.main_sel_op_lte) + new_term.main_sel_op_lt) * - (new_term.main_w_in_tag - constants_MEM_TAG_U1)); - tmp *= scaling_factor; - std::get<76>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<77, ContainerOverSubrelations>; - auto tmp = ((new_term.main_sel_op_fdiv * (FF(1) - new_term.main_op_err)) * - ((new_term.main_ic * new_term.main_ib) - new_term.main_ia)); - tmp *= scaling_factor; - std::get<77>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<78, ContainerOverSubrelations>; - auto tmp = ((new_term.main_sel_op_fdiv + new_term.main_sel_op_div) * - (((new_term.main_ib * new_term.main_inv) - FF(1)) + new_term.main_op_err)); - tmp *= scaling_factor; - std::get<78>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<79, ContainerOverSubrelations>; - auto tmp = (((new_term.main_sel_op_fdiv + new_term.main_sel_op_div) * new_term.main_op_err) * - (FF(1) - new_term.main_inv)); - tmp *= scaling_factor; - std::get<79>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<80, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_fdiv * (new_term.main_r_in_tag - constants_MEM_TAG_FF)); - tmp *= scaling_factor; - std::get<80>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<81, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_fdiv * (new_term.main_w_in_tag - constants_MEM_TAG_FF)); - tmp *= scaling_factor; - std::get<81>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<82, ContainerOverSubrelations>; - auto tmp = (new_term.main_op_err * ((new_term.main_sel_op_fdiv + new_term.main_sel_op_div) - FF(1))); - tmp *= scaling_factor; - std::get<82>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<83, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_jump * (new_term.main_pc_shift - new_term.main_ia)); - tmp *= scaling_factor; - std::get<83>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<84, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_jumpi * - (((FF(1) - new_term.main_id_zero) * (new_term.main_pc_shift - new_term.main_ia)) + - (new_term.main_id_zero * ((new_term.main_pc_shift - new_term.main_pc) - FF(1))))); - tmp *= scaling_factor; - std::get<84>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<85, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_internal_call * - (new_term.main_internal_return_ptr_shift - (new_term.main_internal_return_ptr + FF(1)))); - tmp *= scaling_factor; - std::get<85>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<86, ContainerOverSubrelations>; - auto tmp = - (new_term.main_sel_op_internal_call * (new_term.main_internal_return_ptr - new_term.main_mem_addr_b)); - tmp *= scaling_factor; - std::get<86>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<87, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_internal_call * (new_term.main_pc_shift - new_term.main_ia)); - tmp *= scaling_factor; - std::get<87>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<88, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_internal_call * ((new_term.main_pc + FF(1)) - new_term.main_ib)); - tmp *= scaling_factor; - std::get<88>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<89, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_internal_call * (new_term.main_rwb - FF(1))); - tmp *= scaling_factor; - std::get<89>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<90, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_internal_call * (new_term.main_sel_mem_op_b - FF(1))); - tmp *= scaling_factor; - std::get<90>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<91, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_internal_return * - (new_term.main_internal_return_ptr_shift - (new_term.main_internal_return_ptr - FF(1)))); - tmp *= scaling_factor; - std::get<91>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<92, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_internal_return * - ((new_term.main_internal_return_ptr - FF(1)) - new_term.main_mem_addr_a)); - tmp *= scaling_factor; - std::get<92>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<93, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_internal_return * (new_term.main_pc_shift - new_term.main_ia)); - tmp *= scaling_factor; - std::get<93>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<94, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_internal_return * new_term.main_rwa); - tmp *= scaling_factor; - std::get<94>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<95, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_internal_return * (new_term.main_sel_mem_op_a - FF(1))); - tmp *= scaling_factor; - std::get<95>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<96, ContainerOverSubrelations>; - auto tmp = ((main_CUR_AND_NEXT_ARE_MAIN * (FF(1) - main_SEL_ALL_CTRL_FLOW)) * - (new_term.main_pc_shift - (new_term.main_pc + FF(1)))); - tmp *= scaling_factor; - std::get<96>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<97, ContainerOverSubrelations>; - auto tmp = ((main_CUR_AND_NEXT_ARE_MAIN * (FF(1) - main_SEL_ALL_CTRL_FLOW)) * - (new_term.main_internal_return_ptr_shift - new_term.main_internal_return_ptr)); - tmp *= scaling_factor; - std::get<97>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<98, ContainerOverSubrelations>; - auto tmp = ((new_term.main_sel_op_internal_call + new_term.main_sel_op_internal_return) * - (new_term.main_space_id - constants_misc_INTERNAL_CALL_SPACE_ID)); - tmp *= scaling_factor; - std::get<98>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<99, ContainerOverSubrelations>; - auto tmp = (((FF(1) - new_term.main_sel_op_internal_call) - new_term.main_sel_op_internal_return) * - (new_term.main_call_ptr - new_term.main_space_id)); - tmp *= scaling_factor; - std::get<99>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<100, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_jumpi * - (((new_term.main_id * new_term.main_inv) - FF(1)) + new_term.main_id_zero)); - tmp *= scaling_factor; - std::get<100>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<101, ContainerOverSubrelations>; - auto tmp = ((new_term.main_sel_op_jumpi * new_term.main_id_zero) * (FF(1) - new_term.main_inv)); - tmp *= scaling_factor; - std::get<101>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<102, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_mov_ia_to_ic - (new_term.main_sel_op_mov * (FF(1) - new_term.main_id_zero))); - tmp *= scaling_factor; - std::get<102>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<103, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_mov_ia_to_ic * (new_term.main_ia - new_term.main_ic)); - tmp *= scaling_factor; - std::get<103>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<104, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_mov_ib_to_ic * (new_term.main_ib - new_term.main_ic)); - tmp *= scaling_factor; - std::get<104>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<105, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_mov * (new_term.main_r_in_tag - new_term.main_w_in_tag)); - tmp *= scaling_factor; - std::get<105>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<106, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_alu - - ((main_SEL_ALL_ALU * (FF(1) - new_term.main_tag_err)) * (FF(1) - new_term.main_op_err))); - tmp *= scaling_factor; - std::get<106>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<107, ContainerOverSubrelations>; - auto tmp = (main_SEL_ALU_R_TAG * (new_term.main_alu_in_tag - new_term.main_r_in_tag)); - tmp *= scaling_factor; - std::get<107>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<108, ContainerOverSubrelations>; - auto tmp = (main_SEL_ALU_W_TAG * (new_term.main_alu_in_tag - new_term.main_w_in_tag)); - tmp *= scaling_factor; - std::get<108>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<109, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_l2gasleft * (new_term.main_ia - new_term.main_l2_gas_remaining_shift)); - tmp *= scaling_factor; - std::get<109>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<110, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_op_dagasleft * (new_term.main_ia - new_term.main_da_gas_remaining_shift)); - tmp *= scaling_factor; - std::get<110>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<111, ContainerOverSubrelations>; - auto tmp = ((new_term.main_ib * (FF(1) - new_term.main_tag_err)) * - ((new_term.main_sel_op_calldata_copy + new_term.main_sel_op_external_return) - - new_term.main_sel_slice_gadget)); - tmp *= scaling_factor; - std::get<111>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<112, ContainerOverSubrelations>; - auto tmp = (new_term.main_bin_op_id - (new_term.main_sel_op_or + (FF(2) * new_term.main_sel_op_xor))); - tmp *= scaling_factor; - std::get<112>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<113, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_bin - - ((new_term.main_sel_op_and + new_term.main_sel_op_or) + new_term.main_sel_op_xor)); - tmp *= scaling_factor; - std::get<113>(evals) += typename Accumulator::View(tmp); + { + using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_execution_row - main_OPCODE_SELECTORS); + tmp *= scaling_factor; + std::get<0>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<1, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_execution_row * (FF(1) - new_term.main_sel_execution_row)); + tmp *= scaling_factor; + std::get<1>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<2, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_execution_end_shift - ((new_term.main_sel_execution_row * (FF(1) - new_term.main_sel_execution_row_shift)) * (FF(1) - new_term.main_sel_first))); + tmp *= scaling_factor; + std::get<2>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<3, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_address * (FF(1) - new_term.main_sel_op_address)); + tmp *= scaling_factor; + std::get<3>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<4, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_storage_address * (FF(1) - new_term.main_sel_op_storage_address)); + tmp *= scaling_factor; + std::get<4>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<5, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_sender * (FF(1) - new_term.main_sel_op_sender)); + tmp *= scaling_factor; + std::get<5>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<6, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_function_selector * (FF(1) - new_term.main_sel_op_function_selector)); + tmp *= scaling_factor; + std::get<6>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<7, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_transaction_fee * (FF(1) - new_term.main_sel_op_transaction_fee)); + tmp *= scaling_factor; + std::get<7>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<8, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_chain_id * (FF(1) - new_term.main_sel_op_chain_id)); + tmp *= scaling_factor; + std::get<8>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<9, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_version * (FF(1) - new_term.main_sel_op_version)); + tmp *= scaling_factor; + std::get<9>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<10, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_block_number * (FF(1) - new_term.main_sel_op_block_number)); + tmp *= scaling_factor; + std::get<10>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<11, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_timestamp * (FF(1) - new_term.main_sel_op_timestamp)); + tmp *= scaling_factor; + std::get<11>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<12, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_fee_per_l2_gas * (FF(1) - new_term.main_sel_op_fee_per_l2_gas)); + tmp *= scaling_factor; + std::get<12>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<13, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_fee_per_da_gas * (FF(1) - new_term.main_sel_op_fee_per_da_gas)); + tmp *= scaling_factor; + std::get<13>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<14, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_is_static_call * (FF(1) - new_term.main_sel_op_is_static_call)); + tmp *= scaling_factor; + std::get<14>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<15, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_l2gasleft * (FF(1) - new_term.main_sel_op_l2gasleft)); + tmp *= scaling_factor; + std::get<15>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<16, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_dagasleft * (FF(1) - new_term.main_sel_op_dagasleft)); + tmp *= scaling_factor; + std::get<16>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<17, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_note_hash_exists * (FF(1) - new_term.main_sel_op_note_hash_exists)); + tmp *= scaling_factor; + std::get<17>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<18, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_emit_note_hash * (FF(1) - new_term.main_sel_op_emit_note_hash)); + tmp *= scaling_factor; + std::get<18>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<19, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_nullifier_exists * (FF(1) - new_term.main_sel_op_nullifier_exists)); + tmp *= scaling_factor; + std::get<19>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<20, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_emit_nullifier * (FF(1) - new_term.main_sel_op_emit_nullifier)); + tmp *= scaling_factor; + std::get<20>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<21, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_l1_to_l2_msg_exists * (FF(1) - new_term.main_sel_op_l1_to_l2_msg_exists)); + tmp *= scaling_factor; + std::get<21>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<22, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_emit_unencrypted_log * (FF(1) - new_term.main_sel_op_emit_unencrypted_log)); + tmp *= scaling_factor; + std::get<22>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<23, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_emit_l2_to_l1_msg * (FF(1) - new_term.main_sel_op_emit_l2_to_l1_msg)); + tmp *= scaling_factor; + std::get<23>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<24, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_get_contract_instance * (FF(1) - new_term.main_sel_op_get_contract_instance)); + tmp *= scaling_factor; + std::get<24>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<25, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_sload * (FF(1) - new_term.main_sel_op_sload)); + tmp *= scaling_factor; + std::get<25>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<26, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_sstore * (FF(1) - new_term.main_sel_op_sstore)); + tmp *= scaling_factor; + std::get<26>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<27, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_radix_le * (FF(1) - new_term.main_sel_op_radix_le)); + tmp *= scaling_factor; + std::get<27>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<28, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_sha256 * (FF(1) - new_term.main_sel_op_sha256)); + tmp *= scaling_factor; + std::get<28>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<29, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_poseidon2 * (FF(1) - new_term.main_sel_op_poseidon2)); + tmp *= scaling_factor; + std::get<29>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<30, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_keccak * (FF(1) - new_term.main_sel_op_keccak)); + tmp *= scaling_factor; + std::get<30>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<31, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_ecadd * (FF(1) - new_term.main_sel_op_ecadd)); + tmp *= scaling_factor; + std::get<31>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<32, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_msm * (FF(1) - new_term.main_sel_op_msm)); + tmp *= scaling_factor; + std::get<32>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<33, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_add * (FF(1) - new_term.main_sel_op_add)); + tmp *= scaling_factor; + std::get<33>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<34, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_sub * (FF(1) - new_term.main_sel_op_sub)); + tmp *= scaling_factor; + std::get<34>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<35, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_mul * (FF(1) - new_term.main_sel_op_mul)); + tmp *= scaling_factor; + std::get<35>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<36, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_div * (FF(1) - new_term.main_sel_op_div)); + tmp *= scaling_factor; + std::get<36>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<37, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_fdiv * (FF(1) - new_term.main_sel_op_fdiv)); + tmp *= scaling_factor; + std::get<37>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<38, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_not * (FF(1) - new_term.main_sel_op_not)); + tmp *= scaling_factor; + std::get<38>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<39, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_eq * (FF(1) - new_term.main_sel_op_eq)); + tmp *= scaling_factor; + std::get<39>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<40, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_and * (FF(1) - new_term.main_sel_op_and)); + tmp *= scaling_factor; + std::get<40>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<41, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_or * (FF(1) - new_term.main_sel_op_or)); + tmp *= scaling_factor; + std::get<41>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<42, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_xor * (FF(1) - new_term.main_sel_op_xor)); + tmp *= scaling_factor; + std::get<42>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<43, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_cast * (FF(1) - new_term.main_sel_op_cast)); + tmp *= scaling_factor; + std::get<43>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<44, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_lt * (FF(1) - new_term.main_sel_op_lt)); + tmp *= scaling_factor; + std::get<44>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<45, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_lte * (FF(1) - new_term.main_sel_op_lte)); + tmp *= scaling_factor; + std::get<45>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<46, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_shl * (FF(1) - new_term.main_sel_op_shl)); + tmp *= scaling_factor; + std::get<46>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<47, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_shr * (FF(1) - new_term.main_sel_op_shr)); + tmp *= scaling_factor; + std::get<47>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<48, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_internal_call * (FF(1) - new_term.main_sel_op_internal_call)); + tmp *= scaling_factor; + std::get<48>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<49, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_internal_return * (FF(1) - new_term.main_sel_op_internal_return)); + tmp *= scaling_factor; + std::get<49>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<50, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_jump * (FF(1) - new_term.main_sel_op_jump)); + tmp *= scaling_factor; + std::get<50>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<51, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_jumpi * (FF(1) - new_term.main_sel_op_jumpi)); + tmp *= scaling_factor; + std::get<51>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<52, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_external_call * (FF(1) - new_term.main_sel_op_external_call)); + tmp *= scaling_factor; + std::get<52>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<53, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_static_call * (FF(1) - new_term.main_sel_op_static_call)); + tmp *= scaling_factor; + std::get<53>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<54, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_calldata_copy * (FF(1) - new_term.main_sel_op_calldata_copy)); + tmp *= scaling_factor; + std::get<54>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<55, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_external_return * (FF(1) - new_term.main_sel_op_external_return)); + tmp *= scaling_factor; + std::get<55>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<56, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_external_revert * (FF(1) - new_term.main_sel_op_external_revert)); + tmp *= scaling_factor; + std::get<56>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<57, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_set * (FF(1) - new_term.main_sel_op_set)); + tmp *= scaling_factor; + std::get<57>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<58, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_mov * (FF(1) - new_term.main_sel_op_mov)); + tmp *= scaling_factor; + std::get<58>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<59, ContainerOverSubrelations>; + auto tmp = (new_term.main_op_err * (FF(1) - new_term.main_op_err)); + tmp *= scaling_factor; + std::get<59>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<60, ContainerOverSubrelations>; + auto tmp = (new_term.main_tag_err * (FF(1) - new_term.main_tag_err)); + tmp *= scaling_factor; + std::get<60>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<61, ContainerOverSubrelations>; + auto tmp = (new_term.main_id_zero * (FF(1) - new_term.main_id_zero)); + tmp *= scaling_factor; + std::get<61>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<62, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_mem_op_a * (FF(1) - new_term.main_sel_mem_op_a)); + tmp *= scaling_factor; + std::get<62>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<63, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_mem_op_b * (FF(1) - new_term.main_sel_mem_op_b)); + tmp *= scaling_factor; + std::get<63>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<64, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_mem_op_c * (FF(1) - new_term.main_sel_mem_op_c)); + tmp *= scaling_factor; + std::get<64>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<65, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_mem_op_d * (FF(1) - new_term.main_sel_mem_op_d)); + tmp *= scaling_factor; + std::get<65>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<66, ContainerOverSubrelations>; + auto tmp = (new_term.main_rwa * (FF(1) - new_term.main_rwa)); + tmp *= scaling_factor; + std::get<66>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<67, ContainerOverSubrelations>; + auto tmp = (new_term.main_rwb * (FF(1) - new_term.main_rwb)); + tmp *= scaling_factor; + std::get<67>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<68, ContainerOverSubrelations>; + auto tmp = (new_term.main_rwc * (FF(1) - new_term.main_rwc)); + tmp *= scaling_factor; + std::get<68>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<69, ContainerOverSubrelations>; + auto tmp = (new_term.main_rwd * (FF(1) - new_term.main_rwd)); + tmp *= scaling_factor; + std::get<69>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<70, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_resolve_ind_addr_a * (FF(1) - new_term.main_sel_resolve_ind_addr_a)); + tmp *= scaling_factor; + std::get<70>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<71, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_resolve_ind_addr_b * (FF(1) - new_term.main_sel_resolve_ind_addr_b)); + tmp *= scaling_factor; + std::get<71>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<72, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_resolve_ind_addr_c * (FF(1) - new_term.main_sel_resolve_ind_addr_c)); + tmp *= scaling_factor; + std::get<72>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<73, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_resolve_ind_addr_d * (FF(1) - new_term.main_sel_resolve_ind_addr_d)); + tmp *= scaling_factor; + std::get<73>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<74, ContainerOverSubrelations>; + auto tmp = (((new_term.main_sel_op_eq + new_term.main_sel_op_lte) + new_term.main_sel_op_lt) * (new_term.main_w_in_tag - constants_MEM_TAG_U1)); + tmp *= scaling_factor; + std::get<74>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<75, ContainerOverSubrelations>; + auto tmp = ((new_term.main_sel_op_fdiv * (FF(1) - new_term.main_op_err)) * ((new_term.main_ic * new_term.main_ib) - new_term.main_ia)); + tmp *= scaling_factor; + std::get<75>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<76, ContainerOverSubrelations>; + auto tmp = ((new_term.main_sel_op_fdiv + new_term.main_sel_op_div) * (((new_term.main_ib * new_term.main_inv) - FF(1)) + new_term.main_op_err)); + tmp *= scaling_factor; + std::get<76>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<77, ContainerOverSubrelations>; + auto tmp = (((new_term.main_sel_op_fdiv + new_term.main_sel_op_div) * new_term.main_op_err) * (FF(1) - new_term.main_inv)); + tmp *= scaling_factor; + std::get<77>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<78, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_fdiv * (new_term.main_r_in_tag - constants_MEM_TAG_FF)); + tmp *= scaling_factor; + std::get<78>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<79, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_fdiv * (new_term.main_w_in_tag - constants_MEM_TAG_FF)); + tmp *= scaling_factor; + std::get<79>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<80, ContainerOverSubrelations>; + auto tmp = (new_term.main_op_err * ((new_term.main_sel_op_fdiv + new_term.main_sel_op_div) - FF(1))); + tmp *= scaling_factor; + std::get<80>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<81, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_jump * (new_term.main_pc_shift - new_term.main_ia)); + tmp *= scaling_factor; + std::get<81>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<82, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_jumpi * (((FF(1) - new_term.main_id_zero) * (new_term.main_pc_shift - new_term.main_ia)) + (new_term.main_id_zero * ((new_term.main_pc_shift - new_term.main_pc) - FF(1))))); + tmp *= scaling_factor; + std::get<82>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<83, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_internal_call * (new_term.main_internal_return_ptr_shift - (new_term.main_internal_return_ptr + FF(1)))); + tmp *= scaling_factor; + std::get<83>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<84, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_internal_call * (new_term.main_internal_return_ptr - new_term.main_mem_addr_b)); + tmp *= scaling_factor; + std::get<84>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<85, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_internal_call * (new_term.main_pc_shift - new_term.main_ia)); + tmp *= scaling_factor; + std::get<85>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<86, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_internal_call * ((new_term.main_pc + FF(1)) - new_term.main_ib)); + tmp *= scaling_factor; + std::get<86>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<87, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_internal_call * (new_term.main_rwb - FF(1))); + tmp *= scaling_factor; + std::get<87>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<88, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_internal_call * (new_term.main_sel_mem_op_b - FF(1))); + tmp *= scaling_factor; + std::get<88>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<89, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_internal_return * (new_term.main_internal_return_ptr_shift - (new_term.main_internal_return_ptr - FF(1)))); + tmp *= scaling_factor; + std::get<89>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<90, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_internal_return * ((new_term.main_internal_return_ptr - FF(1)) - new_term.main_mem_addr_a)); + tmp *= scaling_factor; + std::get<90>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<91, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_internal_return * (new_term.main_pc_shift - new_term.main_ia)); + tmp *= scaling_factor; + std::get<91>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<92, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_internal_return * new_term.main_rwa); + tmp *= scaling_factor; + std::get<92>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<93, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_internal_return * (new_term.main_sel_mem_op_a - FF(1))); + tmp *= scaling_factor; + std::get<93>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<94, ContainerOverSubrelations>; + auto tmp = ((main_CUR_AND_NEXT_ARE_MAIN * (FF(1) - main_SEL_ALL_CTRL_FLOW)) * (new_term.main_pc_shift - (new_term.main_pc + FF(1)))); + tmp *= scaling_factor; + std::get<94>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<95, ContainerOverSubrelations>; + auto tmp = ((main_CUR_AND_NEXT_ARE_MAIN * (FF(1) - main_SEL_ALL_CTRL_FLOW)) * (new_term.main_internal_return_ptr_shift - new_term.main_internal_return_ptr)); + tmp *= scaling_factor; + std::get<95>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<96, ContainerOverSubrelations>; + auto tmp = ((new_term.main_sel_op_internal_call + new_term.main_sel_op_internal_return) * (new_term.main_space_id - constants_misc_INTERNAL_CALL_SPACE_ID)); + tmp *= scaling_factor; + std::get<96>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<97, ContainerOverSubrelations>; + auto tmp = (((FF(1) - new_term.main_sel_op_internal_call) - new_term.main_sel_op_internal_return) * (new_term.main_call_ptr - new_term.main_space_id)); + tmp *= scaling_factor; + std::get<97>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<98, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_jumpi * (((new_term.main_id * new_term.main_inv) - FF(1)) + new_term.main_id_zero)); + tmp *= scaling_factor; + std::get<98>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<99, ContainerOverSubrelations>; + auto tmp = ((new_term.main_sel_op_jumpi * new_term.main_id_zero) * (FF(1) - new_term.main_inv)); + tmp *= scaling_factor; + std::get<99>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<100, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_mov_ia_to_ic - (new_term.main_sel_op_mov * (FF(1) - new_term.main_id_zero))); + tmp *= scaling_factor; + std::get<100>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<101, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_mov_ia_to_ic * (new_term.main_ia - new_term.main_ic)); + tmp *= scaling_factor; + std::get<101>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<102, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_mov_ib_to_ic * (new_term.main_ib - new_term.main_ic)); + tmp *= scaling_factor; + std::get<102>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<103, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_mov * (new_term.main_r_in_tag - new_term.main_w_in_tag)); + tmp *= scaling_factor; + std::get<103>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<104, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_alu - ((main_SEL_ALL_ALU * (FF(1) - new_term.main_tag_err)) * (FF(1) - new_term.main_op_err))); + tmp *= scaling_factor; + std::get<104>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<105, ContainerOverSubrelations>; + auto tmp = (main_SEL_ALU_R_TAG * (new_term.main_alu_in_tag - new_term.main_r_in_tag)); + tmp *= scaling_factor; + std::get<105>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<106, ContainerOverSubrelations>; + auto tmp = (main_SEL_ALU_W_TAG * (new_term.main_alu_in_tag - new_term.main_w_in_tag)); + tmp *= scaling_factor; + std::get<106>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<107, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_l2gasleft * (new_term.main_ia - new_term.main_l2_gas_remaining_shift)); + tmp *= scaling_factor; + std::get<107>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<108, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_op_dagasleft * (new_term.main_ia - new_term.main_da_gas_remaining_shift)); + tmp *= scaling_factor; + std::get<108>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<109, ContainerOverSubrelations>; + auto tmp = ((new_term.main_ib * (FF(1) - new_term.main_tag_err)) * ((new_term.main_sel_op_calldata_copy + new_term.main_sel_op_external_return) - new_term.main_sel_slice_gadget)); + tmp *= scaling_factor; + std::get<109>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<110, ContainerOverSubrelations>; + auto tmp = (new_term.main_bin_op_id - (new_term.main_sel_op_or + (FF(2) * new_term.main_sel_op_xor))); + tmp *= scaling_factor; + std::get<110>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<111, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_bin - ((new_term.main_sel_op_and + new_term.main_sel_op_or) + new_term.main_sel_op_xor)); + tmp *= scaling_factor; + std::get<111>(evals) += typename Accumulator::View(tmp); + } } - } }; template class main : public Relation> { - public: - static constexpr const char* NAME = "main"; + public: + static constexpr const char* NAME = "main"; - static std::string get_subrelation_label(size_t index) - { - switch (index) { - case 0: - return "OPCODE_SELECTORS"; - case 76: - return "OUTPUT_U1"; - case 77: - return "SUBOP_FDIV"; - case 78: - return "SUBOP_FDIV_ZERO_ERR1"; - case 79: - return "SUBOP_FDIV_ZERO_ERR2"; - case 80: - return "SUBOP_FDIV_R_IN_TAG_FF"; - case 81: - return "SUBOP_FDIV_W_IN_TAG_FF"; - case 82: - return "SUBOP_ERROR_RELEVANT_OP"; - case 83: - return "PC_JUMP"; - case 84: - return "PC_JUMPI"; - case 85: - return "RETURN_POINTER_INCREMENT"; - case 91: - return "RETURN_POINTER_DECREMENT"; - case 96: - return "PC_INCREMENT"; - case 97: - return "INTERNAL_RETURN_POINTER_CONSISTENCY"; - case 98: - return "SPACE_ID_INTERNAL"; - case 99: - return "SPACE_ID_STANDARD_OPCODES"; - case 100: - return "JMP_CONDITION_RES_1"; - case 101: - return "JMP_CONDITION_RES_2"; - case 103: - return "MOV_SAME_VALUE_A"; - case 104: - return "MOV_SAME_VALUE_B"; - case 105: - return "MOV_MAIN_SAME_TAG"; - case 109: - return "L2GASLEFT"; - case 110: - return "DAGASLEFT"; - case 112: - return "BIN_SEL_1"; - case 113: - return "BIN_SEL_2"; + static std::string get_subrelation_label(size_t index) { + switch (index) { + case 0: + return "OPCODE_SELECTORS"; + case 74: + return "OUTPUT_U1"; + case 75: + return "SUBOP_FDIV"; + case 76: + return "SUBOP_FDIV_ZERO_ERR1"; + case 77: + return "SUBOP_FDIV_ZERO_ERR2"; + case 78: + return "SUBOP_FDIV_R_IN_TAG_FF"; + case 79: + return "SUBOP_FDIV_W_IN_TAG_FF"; + case 80: + return "SUBOP_ERROR_RELEVANT_OP"; + case 81: + return "PC_JUMP"; + case 82: + return "PC_JUMPI"; + case 83: + return "RETURN_POINTER_INCREMENT"; + case 89: + return "RETURN_POINTER_DECREMENT"; + case 94: + return "PC_INCREMENT"; + case 95: + return "INTERNAL_RETURN_POINTER_CONSISTENCY"; + case 96: + return "SPACE_ID_INTERNAL"; + case 97: + return "SPACE_ID_STANDARD_OPCODES"; + case 98: + return "JMP_CONDITION_RES_1"; + case 99: + return "JMP_CONDITION_RES_2"; + case 101: + return "MOV_SAME_VALUE_A"; + case 102: + return "MOV_SAME_VALUE_B"; + case 103: + return "MOV_MAIN_SAME_TAG"; + case 107: + return "L2GASLEFT"; + case 108: + return "DAGASLEFT"; + case 110: + return "BIN_SEL_1"; + case 111: + return "BIN_SEL_2"; + } + return std::to_string(index); } - return std::to_string(index); - } }; } // namespace bb::Avm_vm \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/mem.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/mem.hpp index 5ee5785375f..030b97ab6e0 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/mem.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/mem.hpp @@ -6,422 +6,397 @@ namespace bb::Avm_vm { + template class memImpl { - public: - using FF = FF_; + public: + using FF = FF_; + + static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { + 3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,4,3,4,3,3,2,3,3,4,4,4,4,4,2,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 + }; - static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, - 3, 4, 3, 4, 3, 3, 2, 3, 3, 4, 4, 4, 4, 4, - 2, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; - template - void static accumulate(ContainerOverSubrelations& evals, - const AllEntities& new_term, - [[maybe_unused]] const RelationParameters&, - [[maybe_unused]] const FF& scaling_factor) - { - const auto constants_MEM_TAG_FF = FF(0); - const auto constants_MEM_TAG_U32 = FF(4); - const auto mem_SEL_DIRECT_MEM_OP_A = - ((new_term.mem_sel_op_a + new_term.mem_sel_op_poseidon_read_a) + new_term.mem_sel_op_poseidon_write_a); - const auto mem_SEL_DIRECT_MEM_OP_B = - ((new_term.mem_sel_op_b + new_term.mem_sel_op_poseidon_read_b) + new_term.mem_sel_op_poseidon_write_b); - const auto mem_SEL_DIRECT_MEM_OP_C = - ((new_term.mem_sel_op_c + new_term.mem_sel_op_poseidon_read_c) + new_term.mem_sel_op_poseidon_write_c); - const auto mem_SEL_DIRECT_MEM_OP_D = - ((new_term.mem_sel_op_d + new_term.mem_sel_op_poseidon_read_d) + new_term.mem_sel_op_poseidon_write_d); - const auto mem_NUM_SUB_CLK = FF(12); - const auto mem_IND_OP = (((new_term.mem_sel_resolve_ind_addr_a + new_term.mem_sel_resolve_ind_addr_b) + - new_term.mem_sel_resolve_ind_addr_c) + - new_term.mem_sel_resolve_ind_addr_d); - const auto mem_SUB_CLK = - (new_term.mem_sel_mem * ((((new_term.mem_sel_resolve_ind_addr_b + mem_SEL_DIRECT_MEM_OP_B) + - (FF(2) * (new_term.mem_sel_resolve_ind_addr_c + mem_SEL_DIRECT_MEM_OP_C))) + - (FF(3) * (new_term.mem_sel_resolve_ind_addr_d + mem_SEL_DIRECT_MEM_OP_D))) + - (FF(4) * ((FF(1) - mem_IND_OP) + new_term.mem_rw)))); + template + void static accumulate( + ContainerOverSubrelations& evals, + const AllEntities& new_term, + [[maybe_unused]] const RelationParameters&, + [[maybe_unused]] const FF& scaling_factor + ){ + const auto constants_MEM_TAG_FF = FF(0); + const auto constants_MEM_TAG_U32 = FF(4); + const auto mem_SEL_DIRECT_MEM_OP_A = ((new_term.mem_sel_op_a + new_term.mem_sel_op_poseidon_read_a) + new_term.mem_sel_op_poseidon_write_a); + const auto mem_SEL_DIRECT_MEM_OP_B = ((new_term.mem_sel_op_b + new_term.mem_sel_op_poseidon_read_b) + new_term.mem_sel_op_poseidon_write_b); + const auto mem_SEL_DIRECT_MEM_OP_C = ((new_term.mem_sel_op_c + new_term.mem_sel_op_poseidon_read_c) + new_term.mem_sel_op_poseidon_write_c); + const auto mem_SEL_DIRECT_MEM_OP_D = ((new_term.mem_sel_op_d + new_term.mem_sel_op_poseidon_read_d) + new_term.mem_sel_op_poseidon_write_d); + const auto mem_NUM_SUB_CLK = FF(12); + const auto mem_IND_OP = (((new_term.mem_sel_resolve_ind_addr_a + new_term.mem_sel_resolve_ind_addr_b) + new_term.mem_sel_resolve_ind_addr_c) + new_term.mem_sel_resolve_ind_addr_d); + const auto mem_SUB_CLK = (new_term.mem_sel_mem * ((((new_term.mem_sel_resolve_ind_addr_b + mem_SEL_DIRECT_MEM_OP_B) + (FF(2) * (new_term.mem_sel_resolve_ind_addr_c + mem_SEL_DIRECT_MEM_OP_C))) + (FF(3) * (new_term.mem_sel_resolve_ind_addr_d + mem_SEL_DIRECT_MEM_OP_D))) + (FF(4) * ((FF(1) - mem_IND_OP) + new_term.mem_rw)))); - { - using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>; - auto tmp = (new_term.mem_lastAccess * (FF(1) - new_term.mem_lastAccess)); - tmp *= scaling_factor; - std::get<0>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<1, ContainerOverSubrelations>; - auto tmp = (new_term.mem_last * (FF(1) - new_term.mem_last)); - tmp *= scaling_factor; - std::get<1>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<2, ContainerOverSubrelations>; - auto tmp = (new_term.mem_rw * (FF(1) - new_term.mem_rw)); - tmp *= scaling_factor; - std::get<2>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<3, ContainerOverSubrelations>; - auto tmp = (new_term.mem_tag_err * (FF(1) - new_term.mem_tag_err)); - tmp *= scaling_factor; - std::get<3>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<4, ContainerOverSubrelations>; - auto tmp = (new_term.mem_sel_op_a * (FF(1) - new_term.mem_sel_op_a)); - tmp *= scaling_factor; - std::get<4>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<5, ContainerOverSubrelations>; - auto tmp = (new_term.mem_sel_op_b * (FF(1) - new_term.mem_sel_op_b)); - tmp *= scaling_factor; - std::get<5>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<6, ContainerOverSubrelations>; - auto tmp = (new_term.mem_sel_op_c * (FF(1) - new_term.mem_sel_op_c)); - tmp *= scaling_factor; - std::get<6>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<7, ContainerOverSubrelations>; - auto tmp = (new_term.mem_sel_op_d * (FF(1) - new_term.mem_sel_op_d)); - tmp *= scaling_factor; - std::get<7>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<8, ContainerOverSubrelations>; - auto tmp = (new_term.mem_sel_op_slice * (FF(1) - new_term.mem_sel_op_slice)); - tmp *= scaling_factor; - std::get<8>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<9, ContainerOverSubrelations>; - auto tmp = (new_term.mem_sel_resolve_ind_addr_a * (FF(1) - new_term.mem_sel_resolve_ind_addr_a)); - tmp *= scaling_factor; - std::get<9>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<10, ContainerOverSubrelations>; - auto tmp = (new_term.mem_sel_resolve_ind_addr_b * (FF(1) - new_term.mem_sel_resolve_ind_addr_b)); - tmp *= scaling_factor; - std::get<10>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<11, ContainerOverSubrelations>; - auto tmp = (new_term.mem_sel_resolve_ind_addr_c * (FF(1) - new_term.mem_sel_resolve_ind_addr_c)); - tmp *= scaling_factor; - std::get<11>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<12, ContainerOverSubrelations>; - auto tmp = (new_term.mem_sel_resolve_ind_addr_d * (FF(1) - new_term.mem_sel_resolve_ind_addr_d)); - tmp *= scaling_factor; - std::get<12>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<13, ContainerOverSubrelations>; - auto tmp = (new_term.mem_sel_mem - - ((((((((mem_SEL_DIRECT_MEM_OP_A + mem_SEL_DIRECT_MEM_OP_B) + mem_SEL_DIRECT_MEM_OP_C) + - mem_SEL_DIRECT_MEM_OP_D) + - new_term.mem_sel_resolve_ind_addr_a) + - new_term.mem_sel_resolve_ind_addr_b) + - new_term.mem_sel_resolve_ind_addr_c) + - new_term.mem_sel_resolve_ind_addr_d) + - new_term.mem_sel_op_slice)); - tmp *= scaling_factor; - std::get<13>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<14, ContainerOverSubrelations>; - auto tmp = (new_term.mem_sel_mem * (new_term.mem_sel_mem - FF(1))); - tmp *= scaling_factor; - std::get<14>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<15, ContainerOverSubrelations>; - auto tmp = - (((FF(1) - new_term.main_sel_first) * new_term.mem_sel_mem_shift) * (FF(1) - new_term.mem_sel_mem)); - tmp *= scaling_factor; - std::get<15>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<16, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_first * new_term.mem_sel_mem); - tmp *= scaling_factor; - std::get<16>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<17, ContainerOverSubrelations>; - auto tmp = (((FF(1) - new_term.mem_last) * new_term.mem_sel_mem) * (FF(1) - new_term.mem_sel_mem_shift)); - tmp *= scaling_factor; - std::get<17>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<18, ContainerOverSubrelations>; - auto tmp = (new_term.mem_sel_rng_chk - (new_term.mem_sel_mem * (FF(1) - new_term.mem_last))); - tmp *= scaling_factor; - std::get<18>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<19, ContainerOverSubrelations>; - auto tmp = (new_term.mem_tsp - ((mem_NUM_SUB_CLK * new_term.mem_clk) + mem_SUB_CLK)); - tmp *= scaling_factor; - std::get<19>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<20, ContainerOverSubrelations>; - auto tmp = (new_term.mem_glob_addr - ((new_term.mem_space_id * FF(4294967296UL)) + new_term.mem_addr)); - tmp *= scaling_factor; - std::get<20>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<21, ContainerOverSubrelations>; - auto tmp = (new_term.main_sel_first * (FF(1) - new_term.mem_lastAccess)); - tmp *= scaling_factor; - std::get<21>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<22, ContainerOverSubrelations>; - auto tmp = ((FF(1) - new_term.mem_lastAccess) * (new_term.mem_glob_addr_shift - new_term.mem_glob_addr)); - tmp *= scaling_factor; - std::get<22>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<23, ContainerOverSubrelations>; - auto tmp = (new_term.mem_sel_rng_chk * - (new_term.mem_diff - - ((new_term.mem_lastAccess * (new_term.mem_glob_addr_shift - new_term.mem_glob_addr)) + - ((FF(1) - new_term.mem_lastAccess) * (new_term.mem_tsp_shift - new_term.mem_tsp))))); - tmp *= scaling_factor; - std::get<23>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<24, ContainerOverSubrelations>; - auto tmp = (((FF(1) - new_term.mem_lastAccess) * (FF(1) - new_term.mem_rw_shift)) * - (new_term.mem_val_shift - new_term.mem_val)); - tmp *= scaling_factor; - std::get<24>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<25, ContainerOverSubrelations>; - auto tmp = (((FF(1) - new_term.mem_lastAccess) * (FF(1) - new_term.mem_rw_shift)) * - (new_term.mem_tag_shift - new_term.mem_tag)); - tmp *= scaling_factor; - std::get<25>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<26, ContainerOverSubrelations>; - auto tmp = ((new_term.mem_lastAccess * (FF(1) - new_term.mem_rw_shift)) * new_term.mem_val_shift); - tmp *= scaling_factor; - std::get<26>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<27, ContainerOverSubrelations>; - auto tmp = ((new_term.mem_lastAccess * (FF(1) - new_term.mem_rw_shift)) * - (new_term.mem_tag_shift - constants_MEM_TAG_FF)); - tmp *= scaling_factor; - std::get<27>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<28, ContainerOverSubrelations>; - auto tmp = (new_term.mem_skip_check_tag - new_term.mem_sel_op_slice); - tmp *= scaling_factor; - std::get<28>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<29, ContainerOverSubrelations>; - auto tmp = (((FF(1) - new_term.mem_skip_check_tag) * (FF(1) - new_term.mem_rw)) * - (((new_term.mem_r_in_tag - new_term.mem_tag) * (FF(1) - new_term.mem_one_min_inv)) - - new_term.mem_tag_err)); - tmp *= scaling_factor; - std::get<29>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<30, ContainerOverSubrelations>; - auto tmp = ((FF(1) - new_term.mem_tag_err) * new_term.mem_one_min_inv); - tmp *= scaling_factor; - std::get<30>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<31, ContainerOverSubrelations>; - auto tmp = ((new_term.mem_skip_check_tag + new_term.mem_rw) * new_term.mem_tag_err); - tmp *= scaling_factor; - std::get<31>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<32, ContainerOverSubrelations>; - auto tmp = (new_term.mem_rw * (new_term.mem_w_in_tag - new_term.mem_tag)); - tmp *= scaling_factor; - std::get<32>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<33, ContainerOverSubrelations>; - auto tmp = (new_term.mem_rw * new_term.mem_tag_err); - tmp *= scaling_factor; - std::get<33>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<34, ContainerOverSubrelations>; - auto tmp = (new_term.mem_sel_resolve_ind_addr_a * (new_term.mem_r_in_tag - constants_MEM_TAG_U32)); - tmp *= scaling_factor; - std::get<34>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<35, ContainerOverSubrelations>; - auto tmp = (new_term.mem_sel_resolve_ind_addr_b * (new_term.mem_r_in_tag - constants_MEM_TAG_U32)); - tmp *= scaling_factor; - std::get<35>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<36, ContainerOverSubrelations>; - auto tmp = (new_term.mem_sel_resolve_ind_addr_c * (new_term.mem_r_in_tag - constants_MEM_TAG_U32)); - tmp *= scaling_factor; - std::get<36>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<37, ContainerOverSubrelations>; - auto tmp = (new_term.mem_sel_resolve_ind_addr_d * (new_term.mem_r_in_tag - constants_MEM_TAG_U32)); - tmp *= scaling_factor; - std::get<37>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<38, ContainerOverSubrelations>; - auto tmp = (new_term.mem_sel_resolve_ind_addr_a * new_term.mem_rw); - tmp *= scaling_factor; - std::get<38>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<39, ContainerOverSubrelations>; - auto tmp = (new_term.mem_sel_resolve_ind_addr_b * new_term.mem_rw); - tmp *= scaling_factor; - std::get<39>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<40, ContainerOverSubrelations>; - auto tmp = (new_term.mem_sel_resolve_ind_addr_c * new_term.mem_rw); - tmp *= scaling_factor; - std::get<40>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<41, ContainerOverSubrelations>; - auto tmp = (new_term.mem_sel_resolve_ind_addr_d * new_term.mem_rw); - tmp *= scaling_factor; - std::get<41>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<42, ContainerOverSubrelations>; - auto tmp = (new_term.mem_sel_op_slice * (new_term.mem_w_in_tag - constants_MEM_TAG_FF)); - tmp *= scaling_factor; - std::get<42>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<43, ContainerOverSubrelations>; - auto tmp = (new_term.mem_sel_op_slice * (new_term.mem_r_in_tag - constants_MEM_TAG_FF)); - tmp *= scaling_factor; - std::get<43>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<44, ContainerOverSubrelations>; - auto tmp = (new_term.mem_sel_op_poseidon_read_a * (new_term.mem_w_in_tag - constants_MEM_TAG_FF)); - tmp *= scaling_factor; - std::get<44>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<45, ContainerOverSubrelations>; - auto tmp = (new_term.mem_sel_op_poseidon_read_b * (new_term.mem_w_in_tag - constants_MEM_TAG_FF)); - tmp *= scaling_factor; - std::get<45>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<46, ContainerOverSubrelations>; - auto tmp = (new_term.mem_sel_op_poseidon_read_c * (new_term.mem_w_in_tag - constants_MEM_TAG_FF)); - tmp *= scaling_factor; - std::get<46>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<47, ContainerOverSubrelations>; - auto tmp = (new_term.mem_sel_op_poseidon_read_d * (new_term.mem_w_in_tag - constants_MEM_TAG_FF)); - tmp *= scaling_factor; - std::get<47>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<48, ContainerOverSubrelations>; - auto tmp = (new_term.mem_sel_op_poseidon_write_a * (new_term.mem_r_in_tag - constants_MEM_TAG_FF)); - tmp *= scaling_factor; - std::get<48>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<49, ContainerOverSubrelations>; - auto tmp = (new_term.mem_sel_op_poseidon_write_b * (new_term.mem_r_in_tag - constants_MEM_TAG_FF)); - tmp *= scaling_factor; - std::get<49>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<50, ContainerOverSubrelations>; - auto tmp = (new_term.mem_sel_op_poseidon_write_c * (new_term.mem_r_in_tag - constants_MEM_TAG_FF)); - tmp *= scaling_factor; - std::get<50>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<51, ContainerOverSubrelations>; - auto tmp = (new_term.mem_sel_op_poseidon_write_d * (new_term.mem_r_in_tag - constants_MEM_TAG_FF)); - tmp *= scaling_factor; - std::get<51>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<52, ContainerOverSubrelations>; - auto tmp = ((new_term.mem_sel_mov_ia_to_ic + new_term.mem_sel_mov_ib_to_ic) * new_term.mem_tag_err); - tmp *= scaling_factor; - std::get<52>(evals) += typename Accumulator::View(tmp); + { + using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>; + auto tmp = (new_term.mem_lastAccess * (FF(1) - new_term.mem_lastAccess)); + tmp *= scaling_factor; + std::get<0>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<1, ContainerOverSubrelations>; + auto tmp = (new_term.mem_last * (FF(1) - new_term.mem_last)); + tmp *= scaling_factor; + std::get<1>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<2, ContainerOverSubrelations>; + auto tmp = (new_term.mem_rw * (FF(1) - new_term.mem_rw)); + tmp *= scaling_factor; + std::get<2>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<3, ContainerOverSubrelations>; + auto tmp = (new_term.mem_tag_err * (FF(1) - new_term.mem_tag_err)); + tmp *= scaling_factor; + std::get<3>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<4, ContainerOverSubrelations>; + auto tmp = (new_term.mem_sel_op_a * (FF(1) - new_term.mem_sel_op_a)); + tmp *= scaling_factor; + std::get<4>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<5, ContainerOverSubrelations>; + auto tmp = (new_term.mem_sel_op_b * (FF(1) - new_term.mem_sel_op_b)); + tmp *= scaling_factor; + std::get<5>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<6, ContainerOverSubrelations>; + auto tmp = (new_term.mem_sel_op_c * (FF(1) - new_term.mem_sel_op_c)); + tmp *= scaling_factor; + std::get<6>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<7, ContainerOverSubrelations>; + auto tmp = (new_term.mem_sel_op_d * (FF(1) - new_term.mem_sel_op_d)); + tmp *= scaling_factor; + std::get<7>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<8, ContainerOverSubrelations>; + auto tmp = (new_term.mem_sel_op_slice * (FF(1) - new_term.mem_sel_op_slice)); + tmp *= scaling_factor; + std::get<8>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<9, ContainerOverSubrelations>; + auto tmp = (new_term.mem_sel_resolve_ind_addr_a * (FF(1) - new_term.mem_sel_resolve_ind_addr_a)); + tmp *= scaling_factor; + std::get<9>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<10, ContainerOverSubrelations>; + auto tmp = (new_term.mem_sel_resolve_ind_addr_b * (FF(1) - new_term.mem_sel_resolve_ind_addr_b)); + tmp *= scaling_factor; + std::get<10>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<11, ContainerOverSubrelations>; + auto tmp = (new_term.mem_sel_resolve_ind_addr_c * (FF(1) - new_term.mem_sel_resolve_ind_addr_c)); + tmp *= scaling_factor; + std::get<11>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<12, ContainerOverSubrelations>; + auto tmp = (new_term.mem_sel_resolve_ind_addr_d * (FF(1) - new_term.mem_sel_resolve_ind_addr_d)); + tmp *= scaling_factor; + std::get<12>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<13, ContainerOverSubrelations>; + auto tmp = (new_term.mem_sel_mem - ((((((((mem_SEL_DIRECT_MEM_OP_A + mem_SEL_DIRECT_MEM_OP_B) + mem_SEL_DIRECT_MEM_OP_C) + mem_SEL_DIRECT_MEM_OP_D) + new_term.mem_sel_resolve_ind_addr_a) + new_term.mem_sel_resolve_ind_addr_b) + new_term.mem_sel_resolve_ind_addr_c) + new_term.mem_sel_resolve_ind_addr_d) + new_term.mem_sel_op_slice)); + tmp *= scaling_factor; + std::get<13>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<14, ContainerOverSubrelations>; + auto tmp = (new_term.mem_sel_mem * (new_term.mem_sel_mem - FF(1))); + tmp *= scaling_factor; + std::get<14>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<15, ContainerOverSubrelations>; + auto tmp = (((FF(1) - new_term.main_sel_first) * new_term.mem_sel_mem_shift) * (FF(1) - new_term.mem_sel_mem)); + tmp *= scaling_factor; + std::get<15>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<16, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_first * new_term.mem_sel_mem); + tmp *= scaling_factor; + std::get<16>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<17, ContainerOverSubrelations>; + auto tmp = (((FF(1) - new_term.mem_last) * new_term.mem_sel_mem) * (FF(1) - new_term.mem_sel_mem_shift)); + tmp *= scaling_factor; + std::get<17>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<18, ContainerOverSubrelations>; + auto tmp = (new_term.mem_sel_rng_chk - (new_term.mem_sel_mem * (FF(1) - new_term.mem_last))); + tmp *= scaling_factor; + std::get<18>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<19, ContainerOverSubrelations>; + auto tmp = (new_term.mem_tsp - ((mem_NUM_SUB_CLK * new_term.mem_clk) + mem_SUB_CLK)); + tmp *= scaling_factor; + std::get<19>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<20, ContainerOverSubrelations>; + auto tmp = (new_term.mem_glob_addr - ((new_term.mem_space_id * FF(4294967296UL)) + new_term.mem_addr)); + tmp *= scaling_factor; + std::get<20>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<21, ContainerOverSubrelations>; + auto tmp = (new_term.main_sel_first * (FF(1) - new_term.mem_lastAccess)); + tmp *= scaling_factor; + std::get<21>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<22, ContainerOverSubrelations>; + auto tmp = ((FF(1) - new_term.mem_lastAccess) * (new_term.mem_glob_addr_shift - new_term.mem_glob_addr)); + tmp *= scaling_factor; + std::get<22>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<23, ContainerOverSubrelations>; + auto tmp = (new_term.mem_sel_rng_chk * (new_term.mem_diff - ((new_term.mem_lastAccess * (new_term.mem_glob_addr_shift - new_term.mem_glob_addr)) + ((FF(1) - new_term.mem_lastAccess) * (new_term.mem_tsp_shift - new_term.mem_tsp))))); + tmp *= scaling_factor; + std::get<23>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<24, ContainerOverSubrelations>; + auto tmp = (((FF(1) - new_term.mem_lastAccess) * (FF(1) - new_term.mem_rw_shift)) * (new_term.mem_val_shift - new_term.mem_val)); + tmp *= scaling_factor; + std::get<24>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<25, ContainerOverSubrelations>; + auto tmp = (((FF(1) - new_term.mem_lastAccess) * (FF(1) - new_term.mem_rw_shift)) * (new_term.mem_tag_shift - new_term.mem_tag)); + tmp *= scaling_factor; + std::get<25>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<26, ContainerOverSubrelations>; + auto tmp = ((new_term.mem_lastAccess * (FF(1) - new_term.mem_rw_shift)) * new_term.mem_val_shift); + tmp *= scaling_factor; + std::get<26>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<27, ContainerOverSubrelations>; + auto tmp = ((new_term.mem_lastAccess * (FF(1) - new_term.mem_rw_shift)) * (new_term.mem_tag_shift - constants_MEM_TAG_FF)); + tmp *= scaling_factor; + std::get<27>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<28, ContainerOverSubrelations>; + auto tmp = (new_term.mem_skip_check_tag - new_term.mem_sel_op_slice); + tmp *= scaling_factor; + std::get<28>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<29, ContainerOverSubrelations>; + auto tmp = (((FF(1) - new_term.mem_skip_check_tag) * (FF(1) - new_term.mem_rw)) * (((new_term.mem_r_in_tag - new_term.mem_tag) * (FF(1) - new_term.mem_one_min_inv)) - new_term.mem_tag_err)); + tmp *= scaling_factor; + std::get<29>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<30, ContainerOverSubrelations>; + auto tmp = ((FF(1) - new_term.mem_tag_err) * new_term.mem_one_min_inv); + tmp *= scaling_factor; + std::get<30>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<31, ContainerOverSubrelations>; + auto tmp = ((new_term.mem_skip_check_tag + new_term.mem_rw) * new_term.mem_tag_err); + tmp *= scaling_factor; + std::get<31>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<32, ContainerOverSubrelations>; + auto tmp = (new_term.mem_rw * (new_term.mem_w_in_tag - new_term.mem_tag)); + tmp *= scaling_factor; + std::get<32>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<33, ContainerOverSubrelations>; + auto tmp = (new_term.mem_rw * new_term.mem_tag_err); + tmp *= scaling_factor; + std::get<33>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<34, ContainerOverSubrelations>; + auto tmp = (new_term.mem_sel_resolve_ind_addr_a * (new_term.mem_r_in_tag - constants_MEM_TAG_U32)); + tmp *= scaling_factor; + std::get<34>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<35, ContainerOverSubrelations>; + auto tmp = (new_term.mem_sel_resolve_ind_addr_b * (new_term.mem_r_in_tag - constants_MEM_TAG_U32)); + tmp *= scaling_factor; + std::get<35>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<36, ContainerOverSubrelations>; + auto tmp = (new_term.mem_sel_resolve_ind_addr_c * (new_term.mem_r_in_tag - constants_MEM_TAG_U32)); + tmp *= scaling_factor; + std::get<36>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<37, ContainerOverSubrelations>; + auto tmp = (new_term.mem_sel_resolve_ind_addr_d * (new_term.mem_r_in_tag - constants_MEM_TAG_U32)); + tmp *= scaling_factor; + std::get<37>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<38, ContainerOverSubrelations>; + auto tmp = (new_term.mem_sel_resolve_ind_addr_a * new_term.mem_rw); + tmp *= scaling_factor; + std::get<38>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<39, ContainerOverSubrelations>; + auto tmp = (new_term.mem_sel_resolve_ind_addr_b * new_term.mem_rw); + tmp *= scaling_factor; + std::get<39>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<40, ContainerOverSubrelations>; + auto tmp = (new_term.mem_sel_resolve_ind_addr_c * new_term.mem_rw); + tmp *= scaling_factor; + std::get<40>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<41, ContainerOverSubrelations>; + auto tmp = (new_term.mem_sel_resolve_ind_addr_d * new_term.mem_rw); + tmp *= scaling_factor; + std::get<41>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<42, ContainerOverSubrelations>; + auto tmp = (new_term.mem_sel_op_slice * (new_term.mem_w_in_tag - constants_MEM_TAG_FF)); + tmp *= scaling_factor; + std::get<42>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<43, ContainerOverSubrelations>; + auto tmp = (new_term.mem_sel_op_slice * (new_term.mem_r_in_tag - constants_MEM_TAG_FF)); + tmp *= scaling_factor; + std::get<43>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<44, ContainerOverSubrelations>; + auto tmp = (new_term.mem_sel_op_poseidon_read_a * (new_term.mem_w_in_tag - constants_MEM_TAG_FF)); + tmp *= scaling_factor; + std::get<44>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<45, ContainerOverSubrelations>; + auto tmp = (new_term.mem_sel_op_poseidon_read_b * (new_term.mem_w_in_tag - constants_MEM_TAG_FF)); + tmp *= scaling_factor; + std::get<45>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<46, ContainerOverSubrelations>; + auto tmp = (new_term.mem_sel_op_poseidon_read_c * (new_term.mem_w_in_tag - constants_MEM_TAG_FF)); + tmp *= scaling_factor; + std::get<46>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<47, ContainerOverSubrelations>; + auto tmp = (new_term.mem_sel_op_poseidon_read_d * (new_term.mem_w_in_tag - constants_MEM_TAG_FF)); + tmp *= scaling_factor; + std::get<47>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<48, ContainerOverSubrelations>; + auto tmp = (new_term.mem_sel_op_poseidon_write_a * (new_term.mem_r_in_tag - constants_MEM_TAG_FF)); + tmp *= scaling_factor; + std::get<48>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<49, ContainerOverSubrelations>; + auto tmp = (new_term.mem_sel_op_poseidon_write_b * (new_term.mem_r_in_tag - constants_MEM_TAG_FF)); + tmp *= scaling_factor; + std::get<49>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<50, ContainerOverSubrelations>; + auto tmp = (new_term.mem_sel_op_poseidon_write_c * (new_term.mem_r_in_tag - constants_MEM_TAG_FF)); + tmp *= scaling_factor; + std::get<50>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<51, ContainerOverSubrelations>; + auto tmp = (new_term.mem_sel_op_poseidon_write_d * (new_term.mem_r_in_tag - constants_MEM_TAG_FF)); + tmp *= scaling_factor; + std::get<51>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<52, ContainerOverSubrelations>; + auto tmp = ((new_term.mem_sel_mov_ia_to_ic + new_term.mem_sel_mov_ib_to_ic) * new_term.mem_tag_err); + tmp *= scaling_factor; + std::get<52>(evals) += typename Accumulator::View(tmp); + } } - } }; template class mem : public Relation> { - public: - static constexpr const char* NAME = "mem"; + public: + static constexpr const char* NAME = "mem"; - static std::string get_subrelation_label(size_t index) - { - switch (index) { - case 15: - return "MEM_CONTIGUOUS"; - case 16: - return "MEM_FIRST_EMPTY"; - case 17: - return "MEM_LAST"; - case 19: - return "TIMESTAMP"; - case 20: - return "GLOBAL_ADDR"; - case 21: - return "LAST_ACCESS_FIRST_ROW"; - case 22: - return "MEM_LAST_ACCESS_DELIMITER"; - case 24: - return "MEM_READ_WRITE_VAL_CONSISTENCY"; - case 25: - return "MEM_READ_WRITE_TAG_CONSISTENCY"; - case 26: - return "MEM_ZERO_INIT"; - case 27: - return "MEM_ZERO_INIT_TAG_FF"; - case 28: - return "SKIP_CHECK_TAG"; - case 29: - return "MEM_IN_TAG_CONSISTENCY_1"; - case 30: - return "MEM_IN_TAG_CONSISTENCY_2"; - case 31: - return "NO_TAG_ERR_WRITE_OR_SKIP"; - case 33: - return "NO_TAG_ERR_WRITE"; - case 52: - return "MOV_SAME_TAG"; + static std::string get_subrelation_label(size_t index) { + switch (index) { + case 15: + return "MEM_CONTIGUOUS"; + case 16: + return "MEM_FIRST_EMPTY"; + case 17: + return "MEM_LAST"; + case 19: + return "TIMESTAMP"; + case 20: + return "GLOBAL_ADDR"; + case 21: + return "LAST_ACCESS_FIRST_ROW"; + case 22: + return "MEM_LAST_ACCESS_DELIMITER"; + case 24: + return "MEM_READ_WRITE_VAL_CONSISTENCY"; + case 25: + return "MEM_READ_WRITE_TAG_CONSISTENCY"; + case 26: + return "MEM_ZERO_INIT"; + case 27: + return "MEM_ZERO_INIT_TAG_FF"; + case 28: + return "SKIP_CHECK_TAG"; + case 29: + return "MEM_IN_TAG_CONSISTENCY_1"; + case 30: + return "MEM_IN_TAG_CONSISTENCY_2"; + case 31: + return "NO_TAG_ERR_WRITE_OR_SKIP"; + case 33: + return "NO_TAG_ERR_WRITE"; + case 52: + return "MOV_SAME_TAG"; + } + return std::to_string(index); } - return std::to_string(index); - } }; } // namespace bb::Avm_vm \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/mem_slice.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/mem_slice.hpp index 537b30b0d32..e178930b866 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/mem_slice.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/mem_slice.hpp @@ -6,122 +6,122 @@ namespace bb::Avm_vm { + template class mem_sliceImpl { - public: - using FF = FF_; + public: + using FF = FF_; + + static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { + 2,3,3,3,3,3,3,3,4,4,4 + }; - static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4 }; - template - void static accumulate(ContainerOverSubrelations& evals, - const AllEntities& new_term, - [[maybe_unused]] const RelationParameters&, - [[maybe_unused]] const FF& scaling_factor) - { + template + void static accumulate( + ContainerOverSubrelations& evals, + const AllEntities& new_term, + [[maybe_unused]] const RelationParameters&, + [[maybe_unused]] const FF& scaling_factor + ){ - { - using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>; - auto tmp = (new_term.slice_sel_mem_active - (new_term.slice_sel_cd_cpy + new_term.slice_sel_return)); - tmp *= scaling_factor; - std::get<0>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<1, ContainerOverSubrelations>; - auto tmp = ((new_term.slice_cnt * (FF(1) - new_term.slice_one_min_inv)) - new_term.slice_sel_mem_active); - tmp *= scaling_factor; - std::get<1>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<2, ContainerOverSubrelations>; - auto tmp = ((FF(1) - new_term.slice_sel_mem_active) * new_term.slice_one_min_inv); - tmp *= scaling_factor; - std::get<2>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<3, ContainerOverSubrelations>; - auto tmp = (new_term.slice_sel_mem_active * ((new_term.slice_cnt - FF(1)) - new_term.slice_cnt_shift)); - tmp *= scaling_factor; - std::get<3>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<4, ContainerOverSubrelations>; - auto tmp = (new_term.slice_sel_mem_active * ((new_term.slice_addr + FF(1)) - new_term.slice_addr_shift)); - tmp *= scaling_factor; - std::get<4>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<5, ContainerOverSubrelations>; - auto tmp = (new_term.slice_sel_mem_active * - ((new_term.slice_col_offset + FF(1)) - new_term.slice_col_offset_shift)); - tmp *= scaling_factor; - std::get<5>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<6, ContainerOverSubrelations>; - auto tmp = (new_term.slice_sel_mem_active * (new_term.slice_clk - new_term.slice_clk_shift)); - tmp *= scaling_factor; - std::get<6>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<7, ContainerOverSubrelations>; - auto tmp = (new_term.slice_sel_mem_active * (new_term.slice_space_id - new_term.slice_space_id_shift)); - tmp *= scaling_factor; - std::get<7>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<8, ContainerOverSubrelations>; - auto tmp = ((new_term.slice_sel_mem_active * new_term.slice_sel_mem_active_shift) * - (new_term.slice_sel_return - new_term.slice_sel_return_shift)); - tmp *= scaling_factor; - std::get<8>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<9, ContainerOverSubrelations>; - auto tmp = ((new_term.slice_sel_mem_active * new_term.slice_sel_mem_active_shift) * - (new_term.slice_sel_cd_cpy - new_term.slice_sel_cd_cpy_shift)); - tmp *= scaling_factor; - std::get<9>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<10, ContainerOverSubrelations>; - auto tmp = (((FF(1) - new_term.slice_sel_mem_active) * new_term.slice_sel_mem_active_shift) * - (FF(1) - new_term.slice_sel_start_shift)); - tmp *= scaling_factor; - std::get<10>(evals) += typename Accumulator::View(tmp); + { + using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>; + auto tmp = (new_term.slice_sel_mem_active - (new_term.slice_sel_cd_cpy + new_term.slice_sel_return)); + tmp *= scaling_factor; + std::get<0>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<1, ContainerOverSubrelations>; + auto tmp = ((new_term.slice_cnt * (FF(1) - new_term.slice_one_min_inv)) - new_term.slice_sel_mem_active); + tmp *= scaling_factor; + std::get<1>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<2, ContainerOverSubrelations>; + auto tmp = ((FF(1) - new_term.slice_sel_mem_active) * new_term.slice_one_min_inv); + tmp *= scaling_factor; + std::get<2>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<3, ContainerOverSubrelations>; + auto tmp = (new_term.slice_sel_mem_active * ((new_term.slice_cnt - FF(1)) - new_term.slice_cnt_shift)); + tmp *= scaling_factor; + std::get<3>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<4, ContainerOverSubrelations>; + auto tmp = (new_term.slice_sel_mem_active * ((new_term.slice_addr + FF(1)) - new_term.slice_addr_shift)); + tmp *= scaling_factor; + std::get<4>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<5, ContainerOverSubrelations>; + auto tmp = (new_term.slice_sel_mem_active * ((new_term.slice_col_offset + FF(1)) - new_term.slice_col_offset_shift)); + tmp *= scaling_factor; + std::get<5>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<6, ContainerOverSubrelations>; + auto tmp = (new_term.slice_sel_mem_active * (new_term.slice_clk - new_term.slice_clk_shift)); + tmp *= scaling_factor; + std::get<6>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<7, ContainerOverSubrelations>; + auto tmp = (new_term.slice_sel_mem_active * (new_term.slice_space_id - new_term.slice_space_id_shift)); + tmp *= scaling_factor; + std::get<7>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<8, ContainerOverSubrelations>; + auto tmp = ((new_term.slice_sel_mem_active * new_term.slice_sel_mem_active_shift) * (new_term.slice_sel_return - new_term.slice_sel_return_shift)); + tmp *= scaling_factor; + std::get<8>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<9, ContainerOverSubrelations>; + auto tmp = ((new_term.slice_sel_mem_active * new_term.slice_sel_mem_active_shift) * (new_term.slice_sel_cd_cpy - new_term.slice_sel_cd_cpy_shift)); + tmp *= scaling_factor; + std::get<9>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<10, ContainerOverSubrelations>; + auto tmp = (((FF(1) - new_term.slice_sel_mem_active) * new_term.slice_sel_mem_active_shift) * (FF(1) - new_term.slice_sel_start_shift)); + tmp *= scaling_factor; + std::get<10>(evals) += typename Accumulator::View(tmp); + } } - } }; template class mem_slice : public Relation> { - public: - static constexpr const char* NAME = "mem_slice"; + public: + static constexpr const char* NAME = "mem_slice"; - static std::string get_subrelation_label(size_t index) - { - switch (index) { - case 1: - return "SLICE_CNT_ZERO_TEST1"; - case 2: - return "SLICE_CNT_ZERO_TEST2"; - case 3: - return "SLICE_CNT_DECREMENT"; - case 4: - return "ADDR_INCREMENT"; - case 5: - return "COL_OFFSET_INCREMENT"; - case 6: - return "SAME_CLK"; - case 7: - return "SAME_SPACE_ID"; - case 8: - return "SAME_SEL_RETURN"; - case 9: - return "SAME_SEL_CD_CPY"; - case 10: - return "SEL_MEM_INACTIVE"; + static std::string get_subrelation_label(size_t index) { + switch (index) { + case 1: + return "SLICE_CNT_ZERO_TEST1"; + case 2: + return "SLICE_CNT_ZERO_TEST2"; + case 3: + return "SLICE_CNT_DECREMENT"; + case 4: + return "ADDR_INCREMENT"; + case 5: + return "COL_OFFSET_INCREMENT"; + case 6: + return "SAME_CLK"; + case 7: + return "SAME_SPACE_ID"; + case 8: + return "SAME_SEL_RETURN"; + case 9: + return "SAME_SEL_CD_CPY"; + case 10: + return "SEL_MEM_INACTIVE"; + } + return std::to_string(index); } - return std::to_string(index); - } }; } // namespace bb::Avm_vm \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/pedersen.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/pedersen.hpp deleted file mode 100644 index 8ca5201e767..00000000000 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/pedersen.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// AUTOGENERATED FILE -#pragma once - -#include "barretenberg/relations/relation_parameters.hpp" -#include "barretenberg/relations/relation_types.hpp" - -namespace bb::Avm_vm { - -template class pedersenImpl { - public: - using FF = FF_; - - static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { 3 }; - - template - void static accumulate(ContainerOverSubrelations& evals, - const AllEntities& new_term, - [[maybe_unused]] const RelationParameters&, - [[maybe_unused]] const FF& scaling_factor) - { - - { - using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>; - auto tmp = (new_term.pedersen_sel_pedersen * (FF(1) - new_term.pedersen_sel_pedersen)); - tmp *= scaling_factor; - std::get<0>(evals) += typename Accumulator::View(tmp); - } - } -}; - -template class pedersen : public Relation> { - public: - static constexpr const char* NAME = "pedersen"; - - static std::string get_subrelation_label(size_t index) - { - switch (index) {} - return std::to_string(index); - } -}; - -} // namespace bb::Avm_vm \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_cmp_alu.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_cmp_alu.hpp index fd66a4aed55..d67c6e6ec87 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_cmp_alu.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_cmp_alu.hpp @@ -20,49 +20,52 @@ class perm_cmp_alu_permutation_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.perm_cmp_alu_inv, - in.cmp_sel_cmp, - in.cmp_sel_cmp, - in.alu_cmp_gadget_sel, - in.cmp_clk, - in.cmp_input_a, - in.cmp_input_b, - in.cmp_result, - in.cmp_op_eq, - in.cmp_op_gt, - in.alu_clk, - in.alu_cmp_gadget_input_a, - in.alu_cmp_gadget_input_b, - in.alu_cmp_gadget_result, - in.alu_op_eq, - in.alu_cmp_gadget_gt); + return std::forward_as_tuple( + in.perm_cmp_alu_inv, + in.cmp_sel_cmp, + in.cmp_sel_cmp, + in.alu_cmp_gadget_sel, + in.cmp_clk, + in.cmp_input_a, + in.cmp_input_b, + in.cmp_result, + in.cmp_op_eq, + in.cmp_op_gt, + in.alu_clk, + in.alu_cmp_gadget_input_a, + in.alu_cmp_gadget_input_b, + in.alu_cmp_gadget_result, + in.alu_op_eq, + in.alu_cmp_gadget_gt + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.perm_cmp_alu_inv, - in.cmp_sel_cmp, - in.cmp_sel_cmp, - in.alu_cmp_gadget_sel, - in.cmp_clk, - in.cmp_input_a, - in.cmp_input_b, - in.cmp_result, - in.cmp_op_eq, - in.cmp_op_gt, - in.alu_clk, - in.alu_cmp_gadget_input_a, - in.alu_cmp_gadget_input_b, - in.alu_cmp_gadget_result, - in.alu_op_eq, - in.alu_cmp_gadget_gt); + return std::forward_as_tuple( + in.perm_cmp_alu_inv, + in.cmp_sel_cmp, + in.cmp_sel_cmp, + in.alu_cmp_gadget_sel, + in.cmp_clk, + in.cmp_input_a, + in.cmp_input_b, + in.cmp_result, + in.cmp_op_eq, + in.cmp_op_gt, + in.alu_clk, + in.alu_cmp_gadget_input_a, + in.alu_cmp_gadget_input_b, + in.alu_cmp_gadget_result, + in.alu_op_eq, + in.alu_cmp_gadget_gt + ); } }; -template -class perm_cmp_alu_relation : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_CMP_ALU"; +template class perm_cmp_alu_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_CMP_ALU"; }; template using perm_cmp_alu = GenericPermutation; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_da_end_gas.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_da_end_gas.hpp index fadf779290b..c9af1659472 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_da_end_gas.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_da_end_gas.hpp @@ -20,29 +20,32 @@ class perm_da_end_gas_permutation_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.perm_da_end_gas_inv, - in.main_sel_execution_end, - in.main_sel_execution_end, - in.main_sel_da_end_gas_kernel_input, - in.main_da_gas_remaining, - in.main_kernel_inputs); + return std::forward_as_tuple( + in.perm_da_end_gas_inv, + in.main_sel_execution_end, + in.main_sel_execution_end, + in.main_sel_da_end_gas_kernel_input, + in.main_da_gas_remaining, + in.main_kernel_inputs + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.perm_da_end_gas_inv, - in.main_sel_execution_end, - in.main_sel_execution_end, - in.main_sel_da_end_gas_kernel_input, - in.main_da_gas_remaining, - in.main_kernel_inputs); + return std::forward_as_tuple( + in.perm_da_end_gas_inv, + in.main_sel_execution_end, + in.main_sel_execution_end, + in.main_sel_da_end_gas_kernel_input, + in.main_da_gas_remaining, + in.main_kernel_inputs + ); } }; -template -class perm_da_end_gas_relation : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_DA_END_GAS"; +template class perm_da_end_gas_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_DA_END_GAS"; }; template using perm_da_end_gas = GenericPermutation; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_da_start_gas.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_da_start_gas.hpp index 30d86ff4966..c7594eefd57 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_da_start_gas.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_da_start_gas.hpp @@ -20,29 +20,32 @@ class perm_da_start_gas_permutation_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.perm_da_start_gas_inv, - in.main_sel_start_exec, - in.main_sel_start_exec, - in.main_sel_da_start_gas_kernel_input, - in.main_da_gas_remaining, - in.main_kernel_inputs); + return std::forward_as_tuple( + in.perm_da_start_gas_inv, + in.main_sel_start_exec, + in.main_sel_start_exec, + in.main_sel_da_start_gas_kernel_input, + in.main_da_gas_remaining, + in.main_kernel_inputs + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.perm_da_start_gas_inv, - in.main_sel_start_exec, - in.main_sel_start_exec, - in.main_sel_da_start_gas_kernel_input, - in.main_da_gas_remaining, - in.main_kernel_inputs); + return std::forward_as_tuple( + in.perm_da_start_gas_inv, + in.main_sel_start_exec, + in.main_sel_start_exec, + in.main_sel_da_start_gas_kernel_input, + in.main_da_gas_remaining, + in.main_kernel_inputs + ); } }; -template -class perm_da_start_gas_relation : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_DA_START_GAS"; +template class perm_da_start_gas_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_DA_START_GAS"; }; template using perm_da_start_gas = GenericPermutation; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_l2_end_gas.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_l2_end_gas.hpp index 6fff50ff54a..39b3bbfd27e 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_l2_end_gas.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_l2_end_gas.hpp @@ -20,29 +20,32 @@ class perm_l2_end_gas_permutation_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.perm_l2_end_gas_inv, - in.main_sel_execution_end, - in.main_sel_execution_end, - in.main_sel_l2_end_gas_kernel_input, - in.main_l2_gas_remaining, - in.main_kernel_inputs); + return std::forward_as_tuple( + in.perm_l2_end_gas_inv, + in.main_sel_execution_end, + in.main_sel_execution_end, + in.main_sel_l2_end_gas_kernel_input, + in.main_l2_gas_remaining, + in.main_kernel_inputs + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.perm_l2_end_gas_inv, - in.main_sel_execution_end, - in.main_sel_execution_end, - in.main_sel_l2_end_gas_kernel_input, - in.main_l2_gas_remaining, - in.main_kernel_inputs); + return std::forward_as_tuple( + in.perm_l2_end_gas_inv, + in.main_sel_execution_end, + in.main_sel_execution_end, + in.main_sel_l2_end_gas_kernel_input, + in.main_l2_gas_remaining, + in.main_kernel_inputs + ); } }; -template -class perm_l2_end_gas_relation : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_L2_END_GAS"; +template class perm_l2_end_gas_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_L2_END_GAS"; }; template using perm_l2_end_gas = GenericPermutation; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_l2_start_gas.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_l2_start_gas.hpp index 40d64f343c3..fb3be4cb188 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_l2_start_gas.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_l2_start_gas.hpp @@ -20,29 +20,32 @@ class perm_l2_start_gas_permutation_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.perm_l2_start_gas_inv, - in.main_sel_start_exec, - in.main_sel_start_exec, - in.main_sel_l2_start_gas_kernel_input, - in.main_l2_gas_remaining, - in.main_kernel_inputs); + return std::forward_as_tuple( + in.perm_l2_start_gas_inv, + in.main_sel_start_exec, + in.main_sel_start_exec, + in.main_sel_l2_start_gas_kernel_input, + in.main_l2_gas_remaining, + in.main_kernel_inputs + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.perm_l2_start_gas_inv, - in.main_sel_start_exec, - in.main_sel_start_exec, - in.main_sel_l2_start_gas_kernel_input, - in.main_l2_gas_remaining, - in.main_kernel_inputs); + return std::forward_as_tuple( + in.perm_l2_start_gas_inv, + in.main_sel_start_exec, + in.main_sel_start_exec, + in.main_sel_l2_start_gas_kernel_input, + in.main_l2_gas_remaining, + in.main_kernel_inputs + ); } }; -template -class perm_l2_start_gas_relation : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_L2_START_GAS"; +template class perm_l2_start_gas_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_L2_START_GAS"; }; template using perm_l2_start_gas = GenericPermutation; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_alu.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_alu.hpp index 6e21f0cf6c1..2762a12fdb9 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_alu.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_alu.hpp @@ -20,89 +20,92 @@ class perm_main_alu_permutation_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.perm_main_alu_inv, - in.main_sel_alu, - in.main_sel_alu, - in.alu_sel_alu, - in.main_clk, - in.main_ia, - in.main_ib, - in.main_ic, - in.main_sel_op_add, - in.main_sel_op_sub, - in.main_sel_op_mul, - in.main_sel_op_div, - in.main_sel_op_eq, - in.main_sel_op_not, - in.main_sel_op_cast, - in.main_sel_op_lt, - in.main_sel_op_lte, - in.main_sel_op_shr, - in.main_sel_op_shl, - in.main_alu_in_tag, - in.alu_clk, - in.alu_ia, - in.alu_ib, - in.alu_ic, - in.alu_op_add, - in.alu_op_sub, - in.alu_op_mul, - in.alu_op_div, - in.alu_op_eq, - in.alu_op_not, - in.alu_op_cast, - in.alu_op_lt, - in.alu_op_lte, - in.alu_op_shr, - in.alu_op_shl, - in.alu_in_tag); + return std::forward_as_tuple( + in.perm_main_alu_inv, + in.main_sel_alu, + in.main_sel_alu, + in.alu_sel_alu, + in.main_clk, + in.main_ia, + in.main_ib, + in.main_ic, + in.main_sel_op_add, + in.main_sel_op_sub, + in.main_sel_op_mul, + in.main_sel_op_div, + in.main_sel_op_eq, + in.main_sel_op_not, + in.main_sel_op_cast, + in.main_sel_op_lt, + in.main_sel_op_lte, + in.main_sel_op_shr, + in.main_sel_op_shl, + in.main_alu_in_tag, + in.alu_clk, + in.alu_ia, + in.alu_ib, + in.alu_ic, + in.alu_op_add, + in.alu_op_sub, + in.alu_op_mul, + in.alu_op_div, + in.alu_op_eq, + in.alu_op_not, + in.alu_op_cast, + in.alu_op_lt, + in.alu_op_lte, + in.alu_op_shr, + in.alu_op_shl, + in.alu_in_tag + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.perm_main_alu_inv, - in.main_sel_alu, - in.main_sel_alu, - in.alu_sel_alu, - in.main_clk, - in.main_ia, - in.main_ib, - in.main_ic, - in.main_sel_op_add, - in.main_sel_op_sub, - in.main_sel_op_mul, - in.main_sel_op_div, - in.main_sel_op_eq, - in.main_sel_op_not, - in.main_sel_op_cast, - in.main_sel_op_lt, - in.main_sel_op_lte, - in.main_sel_op_shr, - in.main_sel_op_shl, - in.main_alu_in_tag, - in.alu_clk, - in.alu_ia, - in.alu_ib, - in.alu_ic, - in.alu_op_add, - in.alu_op_sub, - in.alu_op_mul, - in.alu_op_div, - in.alu_op_eq, - in.alu_op_not, - in.alu_op_cast, - in.alu_op_lt, - in.alu_op_lte, - in.alu_op_shr, - in.alu_op_shl, - in.alu_in_tag); + return std::forward_as_tuple( + in.perm_main_alu_inv, + in.main_sel_alu, + in.main_sel_alu, + in.alu_sel_alu, + in.main_clk, + in.main_ia, + in.main_ib, + in.main_ic, + in.main_sel_op_add, + in.main_sel_op_sub, + in.main_sel_op_mul, + in.main_sel_op_div, + in.main_sel_op_eq, + in.main_sel_op_not, + in.main_sel_op_cast, + in.main_sel_op_lt, + in.main_sel_op_lte, + in.main_sel_op_shr, + in.main_sel_op_shl, + in.main_alu_in_tag, + in.alu_clk, + in.alu_ia, + in.alu_ib, + in.alu_ic, + in.alu_op_add, + in.alu_op_sub, + in.alu_op_mul, + in.alu_op_div, + in.alu_op_eq, + in.alu_op_not, + in.alu_op_cast, + in.alu_op_lt, + in.alu_op_lte, + in.alu_op_shr, + in.alu_op_shl, + in.alu_in_tag + ); } }; -template -class perm_main_alu_relation : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_MAIN_ALU"; +template class perm_main_alu_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_MAIN_ALU"; }; template using perm_main_alu = GenericPermutation; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_bin.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_bin.hpp index 076fbd2339e..a34fa0f429f 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_bin.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_bin.hpp @@ -20,49 +20,52 @@ class perm_main_bin_permutation_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.perm_main_bin_inv, - in.main_sel_bin, - in.main_sel_bin, - in.binary_start, - in.main_clk, - in.main_ia, - in.main_ib, - in.main_ic, - in.main_bin_op_id, - in.main_r_in_tag, - in.binary_clk, - in.binary_acc_ia, - in.binary_acc_ib, - in.binary_acc_ic, - in.binary_op_id, - in.binary_in_tag); + return std::forward_as_tuple( + in.perm_main_bin_inv, + in.main_sel_bin, + in.main_sel_bin, + in.binary_start, + in.main_clk, + in.main_ia, + in.main_ib, + in.main_ic, + in.main_bin_op_id, + in.main_r_in_tag, + in.binary_clk, + in.binary_acc_ia, + in.binary_acc_ib, + in.binary_acc_ic, + in.binary_op_id, + in.binary_in_tag + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.perm_main_bin_inv, - in.main_sel_bin, - in.main_sel_bin, - in.binary_start, - in.main_clk, - in.main_ia, - in.main_ib, - in.main_ic, - in.main_bin_op_id, - in.main_r_in_tag, - in.binary_clk, - in.binary_acc_ia, - in.binary_acc_ib, - in.binary_acc_ic, - in.binary_op_id, - in.binary_in_tag); + return std::forward_as_tuple( + in.perm_main_bin_inv, + in.main_sel_bin, + in.main_sel_bin, + in.binary_start, + in.main_clk, + in.main_ia, + in.main_ib, + in.main_ic, + in.main_bin_op_id, + in.main_r_in_tag, + in.binary_clk, + in.binary_acc_ia, + in.binary_acc_ib, + in.binary_acc_ic, + in.binary_op_id, + in.binary_in_tag + ); } }; -template -class perm_main_bin_relation : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_MAIN_BIN"; +template class perm_main_bin_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_MAIN_BIN"; }; template using perm_main_bin = GenericPermutation; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_conv.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_conv.hpp index a97b8c1a046..9f6fa88fab6 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_conv.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_conv.hpp @@ -20,45 +20,48 @@ class perm_main_conv_permutation_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.perm_main_conv_inv, - in.main_sel_op_radix_le, - in.main_sel_op_radix_le, - in.conversion_sel_to_radix_le, - in.main_clk, - in.main_ia, - in.main_ib, - in.main_ic, - in.main_id, - in.conversion_clk, - in.conversion_input, - in.conversion_radix, - in.conversion_num_limbs, - in.conversion_output_bits); + return std::forward_as_tuple( + in.perm_main_conv_inv, + in.main_sel_op_radix_le, + in.main_sel_op_radix_le, + in.conversion_sel_to_radix_le, + in.main_clk, + in.main_ia, + in.main_ib, + in.main_ic, + in.main_id, + in.conversion_clk, + in.conversion_input, + in.conversion_radix, + in.conversion_num_limbs, + in.conversion_output_bits + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.perm_main_conv_inv, - in.main_sel_op_radix_le, - in.main_sel_op_radix_le, - in.conversion_sel_to_radix_le, - in.main_clk, - in.main_ia, - in.main_ib, - in.main_ic, - in.main_id, - in.conversion_clk, - in.conversion_input, - in.conversion_radix, - in.conversion_num_limbs, - in.conversion_output_bits); + return std::forward_as_tuple( + in.perm_main_conv_inv, + in.main_sel_op_radix_le, + in.main_sel_op_radix_le, + in.conversion_sel_to_radix_le, + in.main_clk, + in.main_ia, + in.main_ib, + in.main_ic, + in.main_id, + in.conversion_clk, + in.conversion_input, + in.conversion_radix, + in.conversion_num_limbs, + in.conversion_output_bits + ); } }; -template -class perm_main_conv_relation : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_MAIN_CONV"; +template class perm_main_conv_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_MAIN_CONV"; }; template using perm_main_conv = GenericPermutation; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_mem_a.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_mem_a.hpp index 0554d525236..0ad89ecfc99 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_mem_a.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_mem_a.hpp @@ -20,57 +20,60 @@ class perm_main_mem_a_permutation_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.perm_main_mem_a_inv, - in.main_sel_mem_op_a, - in.main_sel_mem_op_a, - in.mem_sel_op_a, - in.main_clk, - in.main_space_id, - in.main_mem_addr_a, - in.main_ia, - in.main_rwa, - in.main_r_in_tag, - in.main_w_in_tag, - in.main_sel_mov_ia_to_ic, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val, - in.mem_rw, - in.mem_r_in_tag, - in.mem_w_in_tag, - in.mem_sel_mov_ia_to_ic); + return std::forward_as_tuple( + in.perm_main_mem_a_inv, + in.main_sel_mem_op_a, + in.main_sel_mem_op_a, + in.mem_sel_op_a, + in.main_clk, + in.main_space_id, + in.main_mem_addr_a, + in.main_ia, + in.main_rwa, + in.main_r_in_tag, + in.main_w_in_tag, + in.main_sel_mov_ia_to_ic, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val, + in.mem_rw, + in.mem_r_in_tag, + in.mem_w_in_tag, + in.mem_sel_mov_ia_to_ic + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.perm_main_mem_a_inv, - in.main_sel_mem_op_a, - in.main_sel_mem_op_a, - in.mem_sel_op_a, - in.main_clk, - in.main_space_id, - in.main_mem_addr_a, - in.main_ia, - in.main_rwa, - in.main_r_in_tag, - in.main_w_in_tag, - in.main_sel_mov_ia_to_ic, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val, - in.mem_rw, - in.mem_r_in_tag, - in.mem_w_in_tag, - in.mem_sel_mov_ia_to_ic); + return std::forward_as_tuple( + in.perm_main_mem_a_inv, + in.main_sel_mem_op_a, + in.main_sel_mem_op_a, + in.mem_sel_op_a, + in.main_clk, + in.main_space_id, + in.main_mem_addr_a, + in.main_ia, + in.main_rwa, + in.main_r_in_tag, + in.main_w_in_tag, + in.main_sel_mov_ia_to_ic, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val, + in.mem_rw, + in.mem_r_in_tag, + in.mem_w_in_tag, + in.mem_sel_mov_ia_to_ic + ); } }; -template -class perm_main_mem_a_relation : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_MAIN_MEM_A"; +template class perm_main_mem_a_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_MAIN_MEM_A"; }; template using perm_main_mem_a = GenericPermutation; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_mem_b.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_mem_b.hpp index b2e93f46e7c..2b7e4a9367e 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_mem_b.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_mem_b.hpp @@ -20,57 +20,60 @@ class perm_main_mem_b_permutation_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.perm_main_mem_b_inv, - in.main_sel_mem_op_b, - in.main_sel_mem_op_b, - in.mem_sel_op_b, - in.main_clk, - in.main_space_id, - in.main_mem_addr_b, - in.main_ib, - in.main_rwb, - in.main_r_in_tag, - in.main_w_in_tag, - in.main_sel_mov_ib_to_ic, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val, - in.mem_rw, - in.mem_r_in_tag, - in.mem_w_in_tag, - in.mem_sel_mov_ib_to_ic); + return std::forward_as_tuple( + in.perm_main_mem_b_inv, + in.main_sel_mem_op_b, + in.main_sel_mem_op_b, + in.mem_sel_op_b, + in.main_clk, + in.main_space_id, + in.main_mem_addr_b, + in.main_ib, + in.main_rwb, + in.main_r_in_tag, + in.main_w_in_tag, + in.main_sel_mov_ib_to_ic, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val, + in.mem_rw, + in.mem_r_in_tag, + in.mem_w_in_tag, + in.mem_sel_mov_ib_to_ic + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.perm_main_mem_b_inv, - in.main_sel_mem_op_b, - in.main_sel_mem_op_b, - in.mem_sel_op_b, - in.main_clk, - in.main_space_id, - in.main_mem_addr_b, - in.main_ib, - in.main_rwb, - in.main_r_in_tag, - in.main_w_in_tag, - in.main_sel_mov_ib_to_ic, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val, - in.mem_rw, - in.mem_r_in_tag, - in.mem_w_in_tag, - in.mem_sel_mov_ib_to_ic); + return std::forward_as_tuple( + in.perm_main_mem_b_inv, + in.main_sel_mem_op_b, + in.main_sel_mem_op_b, + in.mem_sel_op_b, + in.main_clk, + in.main_space_id, + in.main_mem_addr_b, + in.main_ib, + in.main_rwb, + in.main_r_in_tag, + in.main_w_in_tag, + in.main_sel_mov_ib_to_ic, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val, + in.mem_rw, + in.mem_r_in_tag, + in.mem_w_in_tag, + in.mem_sel_mov_ib_to_ic + ); } }; -template -class perm_main_mem_b_relation : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_MAIN_MEM_B"; +template class perm_main_mem_b_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_MAIN_MEM_B"; }; template using perm_main_mem_b = GenericPermutation; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_mem_c.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_mem_c.hpp index d5a4693b804..49a2349f5a1 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_mem_c.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_mem_c.hpp @@ -20,53 +20,56 @@ class perm_main_mem_c_permutation_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.perm_main_mem_c_inv, - in.main_sel_mem_op_c, - in.main_sel_mem_op_c, - in.mem_sel_op_c, - in.main_clk, - in.main_space_id, - in.main_mem_addr_c, - in.main_ic, - in.main_rwc, - in.main_r_in_tag, - in.main_w_in_tag, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val, - in.mem_rw, - in.mem_r_in_tag, - in.mem_w_in_tag); + return std::forward_as_tuple( + in.perm_main_mem_c_inv, + in.main_sel_mem_op_c, + in.main_sel_mem_op_c, + in.mem_sel_op_c, + in.main_clk, + in.main_space_id, + in.main_mem_addr_c, + in.main_ic, + in.main_rwc, + in.main_r_in_tag, + in.main_w_in_tag, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val, + in.mem_rw, + in.mem_r_in_tag, + in.mem_w_in_tag + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.perm_main_mem_c_inv, - in.main_sel_mem_op_c, - in.main_sel_mem_op_c, - in.mem_sel_op_c, - in.main_clk, - in.main_space_id, - in.main_mem_addr_c, - in.main_ic, - in.main_rwc, - in.main_r_in_tag, - in.main_w_in_tag, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val, - in.mem_rw, - in.mem_r_in_tag, - in.mem_w_in_tag); + return std::forward_as_tuple( + in.perm_main_mem_c_inv, + in.main_sel_mem_op_c, + in.main_sel_mem_op_c, + in.mem_sel_op_c, + in.main_clk, + in.main_space_id, + in.main_mem_addr_c, + in.main_ic, + in.main_rwc, + in.main_r_in_tag, + in.main_w_in_tag, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val, + in.mem_rw, + in.mem_r_in_tag, + in.mem_w_in_tag + ); } }; -template -class perm_main_mem_c_relation : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_MAIN_MEM_C"; +template class perm_main_mem_c_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_MAIN_MEM_C"; }; template using perm_main_mem_c = GenericPermutation; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_mem_d.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_mem_d.hpp index 2322e097e46..37144a0d698 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_mem_d.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_mem_d.hpp @@ -20,53 +20,56 @@ class perm_main_mem_d_permutation_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.perm_main_mem_d_inv, - in.main_sel_mem_op_d, - in.main_sel_mem_op_d, - in.mem_sel_op_d, - in.main_clk, - in.main_space_id, - in.main_mem_addr_d, - in.main_id, - in.main_rwd, - in.main_r_in_tag, - in.main_w_in_tag, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val, - in.mem_rw, - in.mem_r_in_tag, - in.mem_w_in_tag); + return std::forward_as_tuple( + in.perm_main_mem_d_inv, + in.main_sel_mem_op_d, + in.main_sel_mem_op_d, + in.mem_sel_op_d, + in.main_clk, + in.main_space_id, + in.main_mem_addr_d, + in.main_id, + in.main_rwd, + in.main_r_in_tag, + in.main_w_in_tag, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val, + in.mem_rw, + in.mem_r_in_tag, + in.mem_w_in_tag + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.perm_main_mem_d_inv, - in.main_sel_mem_op_d, - in.main_sel_mem_op_d, - in.mem_sel_op_d, - in.main_clk, - in.main_space_id, - in.main_mem_addr_d, - in.main_id, - in.main_rwd, - in.main_r_in_tag, - in.main_w_in_tag, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val, - in.mem_rw, - in.mem_r_in_tag, - in.mem_w_in_tag); + return std::forward_as_tuple( + in.perm_main_mem_d_inv, + in.main_sel_mem_op_d, + in.main_sel_mem_op_d, + in.mem_sel_op_d, + in.main_clk, + in.main_space_id, + in.main_mem_addr_d, + in.main_id, + in.main_rwd, + in.main_r_in_tag, + in.main_w_in_tag, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val, + in.mem_rw, + in.mem_r_in_tag, + in.mem_w_in_tag + ); } }; -template -class perm_main_mem_d_relation : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_MAIN_MEM_D"; +template class perm_main_mem_d_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_MAIN_MEM_D"; }; template using perm_main_mem_d = GenericPermutation; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_mem_ind_addr_a.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_mem_ind_addr_a.hpp index 8da6e08631c..d4bee05c67b 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_mem_ind_addr_a.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_mem_ind_addr_a.hpp @@ -20,44 +20,45 @@ class perm_main_mem_ind_addr_a_permutation_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.perm_main_mem_ind_addr_a_inv, - in.main_sel_resolve_ind_addr_a, - in.main_sel_resolve_ind_addr_a, - in.mem_sel_resolve_ind_addr_a, - in.main_clk, - in.main_space_id, - in.main_ind_addr_a, - in.main_mem_addr_a, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val); + return std::forward_as_tuple( + in.perm_main_mem_ind_addr_a_inv, + in.main_sel_resolve_ind_addr_a, + in.main_sel_resolve_ind_addr_a, + in.mem_sel_resolve_ind_addr_a, + in.main_clk, + in.main_space_id, + in.main_ind_addr_a, + in.main_mem_addr_a, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.perm_main_mem_ind_addr_a_inv, - in.main_sel_resolve_ind_addr_a, - in.main_sel_resolve_ind_addr_a, - in.mem_sel_resolve_ind_addr_a, - in.main_clk, - in.main_space_id, - in.main_ind_addr_a, - in.main_mem_addr_a, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val); + return std::forward_as_tuple( + in.perm_main_mem_ind_addr_a_inv, + in.main_sel_resolve_ind_addr_a, + in.main_sel_resolve_ind_addr_a, + in.mem_sel_resolve_ind_addr_a, + in.main_clk, + in.main_space_id, + in.main_ind_addr_a, + in.main_mem_addr_a, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val + ); } }; -template -class perm_main_mem_ind_addr_a_relation - : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_MAIN_MEM_IND_ADDR_A"; +template class perm_main_mem_ind_addr_a_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_MAIN_MEM_IND_ADDR_A"; }; -template -using perm_main_mem_ind_addr_a = GenericPermutation; +template using perm_main_mem_ind_addr_a = GenericPermutation; } // namespace bb \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_mem_ind_addr_b.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_mem_ind_addr_b.hpp index 6f3ee4ed7cd..cdc94e1bfdc 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_mem_ind_addr_b.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_mem_ind_addr_b.hpp @@ -20,44 +20,45 @@ class perm_main_mem_ind_addr_b_permutation_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.perm_main_mem_ind_addr_b_inv, - in.main_sel_resolve_ind_addr_b, - in.main_sel_resolve_ind_addr_b, - in.mem_sel_resolve_ind_addr_b, - in.main_clk, - in.main_space_id, - in.main_ind_addr_b, - in.main_mem_addr_b, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val); + return std::forward_as_tuple( + in.perm_main_mem_ind_addr_b_inv, + in.main_sel_resolve_ind_addr_b, + in.main_sel_resolve_ind_addr_b, + in.mem_sel_resolve_ind_addr_b, + in.main_clk, + in.main_space_id, + in.main_ind_addr_b, + in.main_mem_addr_b, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.perm_main_mem_ind_addr_b_inv, - in.main_sel_resolve_ind_addr_b, - in.main_sel_resolve_ind_addr_b, - in.mem_sel_resolve_ind_addr_b, - in.main_clk, - in.main_space_id, - in.main_ind_addr_b, - in.main_mem_addr_b, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val); + return std::forward_as_tuple( + in.perm_main_mem_ind_addr_b_inv, + in.main_sel_resolve_ind_addr_b, + in.main_sel_resolve_ind_addr_b, + in.mem_sel_resolve_ind_addr_b, + in.main_clk, + in.main_space_id, + in.main_ind_addr_b, + in.main_mem_addr_b, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val + ); } }; -template -class perm_main_mem_ind_addr_b_relation - : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_MAIN_MEM_IND_ADDR_B"; +template class perm_main_mem_ind_addr_b_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_MAIN_MEM_IND_ADDR_B"; }; -template -using perm_main_mem_ind_addr_b = GenericPermutation; +template using perm_main_mem_ind_addr_b = GenericPermutation; } // namespace bb \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_mem_ind_addr_c.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_mem_ind_addr_c.hpp index 3d698de8da1..244ae7a19ab 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_mem_ind_addr_c.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_mem_ind_addr_c.hpp @@ -20,44 +20,45 @@ class perm_main_mem_ind_addr_c_permutation_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.perm_main_mem_ind_addr_c_inv, - in.main_sel_resolve_ind_addr_c, - in.main_sel_resolve_ind_addr_c, - in.mem_sel_resolve_ind_addr_c, - in.main_clk, - in.main_space_id, - in.main_ind_addr_c, - in.main_mem_addr_c, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val); + return std::forward_as_tuple( + in.perm_main_mem_ind_addr_c_inv, + in.main_sel_resolve_ind_addr_c, + in.main_sel_resolve_ind_addr_c, + in.mem_sel_resolve_ind_addr_c, + in.main_clk, + in.main_space_id, + in.main_ind_addr_c, + in.main_mem_addr_c, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.perm_main_mem_ind_addr_c_inv, - in.main_sel_resolve_ind_addr_c, - in.main_sel_resolve_ind_addr_c, - in.mem_sel_resolve_ind_addr_c, - in.main_clk, - in.main_space_id, - in.main_ind_addr_c, - in.main_mem_addr_c, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val); + return std::forward_as_tuple( + in.perm_main_mem_ind_addr_c_inv, + in.main_sel_resolve_ind_addr_c, + in.main_sel_resolve_ind_addr_c, + in.mem_sel_resolve_ind_addr_c, + in.main_clk, + in.main_space_id, + in.main_ind_addr_c, + in.main_mem_addr_c, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val + ); } }; -template -class perm_main_mem_ind_addr_c_relation - : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_MAIN_MEM_IND_ADDR_C"; +template class perm_main_mem_ind_addr_c_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_MAIN_MEM_IND_ADDR_C"; }; -template -using perm_main_mem_ind_addr_c = GenericPermutation; +template using perm_main_mem_ind_addr_c = GenericPermutation; } // namespace bb \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_mem_ind_addr_d.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_mem_ind_addr_d.hpp index 621e7c9bf25..00b18554d1e 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_mem_ind_addr_d.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_mem_ind_addr_d.hpp @@ -20,44 +20,45 @@ class perm_main_mem_ind_addr_d_permutation_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.perm_main_mem_ind_addr_d_inv, - in.main_sel_resolve_ind_addr_d, - in.main_sel_resolve_ind_addr_d, - in.mem_sel_resolve_ind_addr_d, - in.main_clk, - in.main_space_id, - in.main_ind_addr_d, - in.main_mem_addr_d, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val); + return std::forward_as_tuple( + in.perm_main_mem_ind_addr_d_inv, + in.main_sel_resolve_ind_addr_d, + in.main_sel_resolve_ind_addr_d, + in.mem_sel_resolve_ind_addr_d, + in.main_clk, + in.main_space_id, + in.main_ind_addr_d, + in.main_mem_addr_d, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.perm_main_mem_ind_addr_d_inv, - in.main_sel_resolve_ind_addr_d, - in.main_sel_resolve_ind_addr_d, - in.mem_sel_resolve_ind_addr_d, - in.main_clk, - in.main_space_id, - in.main_ind_addr_d, - in.main_mem_addr_d, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val); + return std::forward_as_tuple( + in.perm_main_mem_ind_addr_d_inv, + in.main_sel_resolve_ind_addr_d, + in.main_sel_resolve_ind_addr_d, + in.mem_sel_resolve_ind_addr_d, + in.main_clk, + in.main_space_id, + in.main_ind_addr_d, + in.main_mem_addr_d, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val + ); } }; -template -class perm_main_mem_ind_addr_d_relation - : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_MAIN_MEM_IND_ADDR_D"; +template class perm_main_mem_ind_addr_d_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_MAIN_MEM_IND_ADDR_D"; }; -template -using perm_main_mem_ind_addr_d = GenericPermutation; +template using perm_main_mem_ind_addr_d = GenericPermutation; } // namespace bb \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_pedersen.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_pedersen.hpp deleted file mode 100644 index 77bd92cea43..00000000000 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_pedersen.hpp +++ /dev/null @@ -1,53 +0,0 @@ -// AUTOGENERATED FILE -#pragma once - -#include "barretenberg/relations/generic_permutation/generic_permutation_relation.hpp" - -#include -#include - -namespace bb { - -class perm_main_pedersen_permutation_settings { - public: - // This constant defines how many columns are bundled together to form each set. - constexpr static size_t COLUMNS_PER_SET = 2; - - template static inline auto inverse_polynomial_is_computed_at_row(const AllEntities& in) - { - return (in.main_sel_op_pedersen == 1 || in.pedersen_sel_pedersen == 1); - } - - template static inline auto get_const_entities(const AllEntities& in) - { - return std::forward_as_tuple(in.perm_main_pedersen_inv, - in.main_sel_op_pedersen, - in.main_sel_op_pedersen, - in.pedersen_sel_pedersen, - in.main_clk, - in.main_ia, - in.pedersen_clk, - in.pedersen_input); - } - - template static inline auto get_nonconst_entities(AllEntities& in) - { - return std::forward_as_tuple(in.perm_main_pedersen_inv, - in.main_sel_op_pedersen, - in.main_sel_op_pedersen, - in.pedersen_sel_pedersen, - in.main_clk, - in.main_ia, - in.pedersen_clk, - in.pedersen_input); - } -}; - -template -class perm_main_pedersen_relation : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_MAIN_PEDERSEN"; -}; -template using perm_main_pedersen = GenericPermutation; - -} // namespace bb \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_pos2_perm.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_pos2_perm.hpp index 71aac08e198..959d0163b67 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_pos2_perm.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_pos2_perm.hpp @@ -20,41 +20,44 @@ class perm_main_pos2_perm_permutation_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.perm_main_pos2_perm_inv, - in.main_sel_op_poseidon2, - in.main_sel_op_poseidon2, - in.poseidon2_sel_poseidon_perm, - in.main_clk, - in.main_space_id, - in.main_mem_addr_a, - in.main_mem_addr_b, - in.poseidon2_clk, - in.poseidon2_space_id, - in.poseidon2_input_addr, - in.poseidon2_output_addr); + return std::forward_as_tuple( + in.perm_main_pos2_perm_inv, + in.main_sel_op_poseidon2, + in.main_sel_op_poseidon2, + in.poseidon2_sel_poseidon_perm, + in.main_clk, + in.main_space_id, + in.main_mem_addr_a, + in.main_mem_addr_b, + in.poseidon2_clk, + in.poseidon2_space_id, + in.poseidon2_input_addr, + in.poseidon2_output_addr + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.perm_main_pos2_perm_inv, - in.main_sel_op_poseidon2, - in.main_sel_op_poseidon2, - in.poseidon2_sel_poseidon_perm, - in.main_clk, - in.main_space_id, - in.main_mem_addr_a, - in.main_mem_addr_b, - in.poseidon2_clk, - in.poseidon2_space_id, - in.poseidon2_input_addr, - in.poseidon2_output_addr); + return std::forward_as_tuple( + in.perm_main_pos2_perm_inv, + in.main_sel_op_poseidon2, + in.main_sel_op_poseidon2, + in.poseidon2_sel_poseidon_perm, + in.main_clk, + in.main_space_id, + in.main_mem_addr_a, + in.main_mem_addr_b, + in.poseidon2_clk, + in.poseidon2_space_id, + in.poseidon2_input_addr, + in.poseidon2_output_addr + ); } }; -template -class perm_main_pos2_perm_relation : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_MAIN_POS2_PERM"; +template class perm_main_pos2_perm_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_MAIN_POS2_PERM"; }; template using perm_main_pos2_perm = GenericPermutation; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_sha256.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_sha256.hpp new file mode 100644 index 00000000000..e92267ea0cb --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_sha256.hpp @@ -0,0 +1,64 @@ +// AUTOGENERATED FILE +#pragma once + +#include "barretenberg/relations/generic_permutation/generic_permutation_relation.hpp" + +#include +#include + +namespace bb { + +class perm_main_sha256_permutation_settings { + public: + // This constant defines how many columns are bundled together to form each set. + constexpr static size_t COLUMNS_PER_SET = 4; + + template static inline auto inverse_polynomial_is_computed_at_row(const AllEntities& in) + { + return (in.main_sel_op_sha256 == 1 || in.sha256_sel_sha256_compression == 1); + } + + template static inline auto get_const_entities(const AllEntities& in) + { + return std::forward_as_tuple( + in.perm_main_sha256_inv, + in.main_sel_op_sha256, + in.main_sel_op_sha256, + in.sha256_sel_sha256_compression, + in.main_clk, + in.main_ia, + in.main_ib, + in.main_ic, + in.sha256_clk, + in.sha256_state, + in.sha256_input, + in.sha256_output + ); + } + + template static inline auto get_nonconst_entities(AllEntities& in) + { + return std::forward_as_tuple( + in.perm_main_sha256_inv, + in.main_sel_op_sha256, + in.main_sel_op_sha256, + in.sha256_sel_sha256_compression, + in.main_clk, + in.main_ia, + in.main_ib, + in.main_ic, + in.sha256_clk, + in.sha256_state, + in.sha256_input, + in.sha256_output + ); + } +}; + +template class perm_main_sha256_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_MAIN_SHA256"; +}; +template using perm_main_sha256 = GenericPermutation; + +} // namespace bb \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_slice.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_slice.hpp index 550c68d60ce..c876747dfd0 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_slice.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_main_slice.hpp @@ -20,53 +20,56 @@ class perm_main_slice_permutation_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.perm_main_slice_inv, - in.main_sel_slice_gadget, - in.main_sel_slice_gadget, - in.slice_sel_start, - in.main_clk, - in.main_space_id, - in.main_ia, - in.main_ib, - in.main_mem_addr_c, - in.main_sel_op_calldata_copy, - in.main_sel_op_external_return, - in.slice_clk, - in.slice_space_id, - in.slice_col_offset, - in.slice_cnt, - in.slice_addr, - in.slice_sel_cd_cpy, - in.slice_sel_return); + return std::forward_as_tuple( + in.perm_main_slice_inv, + in.main_sel_slice_gadget, + in.main_sel_slice_gadget, + in.slice_sel_start, + in.main_clk, + in.main_space_id, + in.main_ia, + in.main_ib, + in.main_mem_addr_c, + in.main_sel_op_calldata_copy, + in.main_sel_op_external_return, + in.slice_clk, + in.slice_space_id, + in.slice_col_offset, + in.slice_cnt, + in.slice_addr, + in.slice_sel_cd_cpy, + in.slice_sel_return + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.perm_main_slice_inv, - in.main_sel_slice_gadget, - in.main_sel_slice_gadget, - in.slice_sel_start, - in.main_clk, - in.main_space_id, - in.main_ia, - in.main_ib, - in.main_mem_addr_c, - in.main_sel_op_calldata_copy, - in.main_sel_op_external_return, - in.slice_clk, - in.slice_space_id, - in.slice_col_offset, - in.slice_cnt, - in.slice_addr, - in.slice_sel_cd_cpy, - in.slice_sel_return); + return std::forward_as_tuple( + in.perm_main_slice_inv, + in.main_sel_slice_gadget, + in.main_sel_slice_gadget, + in.slice_sel_start, + in.main_clk, + in.main_space_id, + in.main_ia, + in.main_ib, + in.main_mem_addr_c, + in.main_sel_op_calldata_copy, + in.main_sel_op_external_return, + in.slice_clk, + in.slice_space_id, + in.slice_col_offset, + in.slice_cnt, + in.slice_addr, + in.slice_sel_cd_cpy, + in.slice_sel_return + ); } }; -template -class perm_main_slice_relation : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_MAIN_SLICE"; +template class perm_main_slice_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_MAIN_SLICE"; }; template using perm_main_slice = GenericPermutation; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_pos_mem_read_a.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_pos_mem_read_a.hpp index 8b13fd79341..703d881be87 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_pos_mem_read_a.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_pos_mem_read_a.hpp @@ -20,45 +20,48 @@ class perm_pos_mem_read_a_permutation_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.perm_pos_mem_read_a_inv, - in.poseidon2_sel_poseidon_perm, - in.poseidon2_sel_poseidon_perm, - in.mem_sel_op_poseidon_read_a, - in.poseidon2_clk, - in.poseidon2_space_id, - in.poseidon2_mem_addr_read_a, - in.poseidon2_a_0, - in.main_zeroes, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val, - in.mem_rw); + return std::forward_as_tuple( + in.perm_pos_mem_read_a_inv, + in.poseidon2_sel_poseidon_perm, + in.poseidon2_sel_poseidon_perm, + in.mem_sel_op_poseidon_read_a, + in.poseidon2_clk, + in.poseidon2_space_id, + in.poseidon2_mem_addr_read_a, + in.poseidon2_a_0, + in.main_zeroes, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val, + in.mem_rw + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.perm_pos_mem_read_a_inv, - in.poseidon2_sel_poseidon_perm, - in.poseidon2_sel_poseidon_perm, - in.mem_sel_op_poseidon_read_a, - in.poseidon2_clk, - in.poseidon2_space_id, - in.poseidon2_mem_addr_read_a, - in.poseidon2_a_0, - in.main_zeroes, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val, - in.mem_rw); + return std::forward_as_tuple( + in.perm_pos_mem_read_a_inv, + in.poseidon2_sel_poseidon_perm, + in.poseidon2_sel_poseidon_perm, + in.mem_sel_op_poseidon_read_a, + in.poseidon2_clk, + in.poseidon2_space_id, + in.poseidon2_mem_addr_read_a, + in.poseidon2_a_0, + in.main_zeroes, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val, + in.mem_rw + ); } }; -template -class perm_pos_mem_read_a_relation : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_POS_MEM_READ_A"; +template class perm_pos_mem_read_a_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_POS_MEM_READ_A"; }; template using perm_pos_mem_read_a = GenericPermutation; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_pos_mem_read_b.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_pos_mem_read_b.hpp index e30bf25fecb..66a98adeedf 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_pos_mem_read_b.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_pos_mem_read_b.hpp @@ -20,45 +20,48 @@ class perm_pos_mem_read_b_permutation_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.perm_pos_mem_read_b_inv, - in.poseidon2_sel_poseidon_perm, - in.poseidon2_sel_poseidon_perm, - in.mem_sel_op_poseidon_read_b, - in.poseidon2_clk, - in.poseidon2_space_id, - in.poseidon2_mem_addr_read_b, - in.poseidon2_a_1, - in.main_zeroes, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val, - in.mem_rw); + return std::forward_as_tuple( + in.perm_pos_mem_read_b_inv, + in.poseidon2_sel_poseidon_perm, + in.poseidon2_sel_poseidon_perm, + in.mem_sel_op_poseidon_read_b, + in.poseidon2_clk, + in.poseidon2_space_id, + in.poseidon2_mem_addr_read_b, + in.poseidon2_a_1, + in.main_zeroes, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val, + in.mem_rw + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.perm_pos_mem_read_b_inv, - in.poseidon2_sel_poseidon_perm, - in.poseidon2_sel_poseidon_perm, - in.mem_sel_op_poseidon_read_b, - in.poseidon2_clk, - in.poseidon2_space_id, - in.poseidon2_mem_addr_read_b, - in.poseidon2_a_1, - in.main_zeroes, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val, - in.mem_rw); + return std::forward_as_tuple( + in.perm_pos_mem_read_b_inv, + in.poseidon2_sel_poseidon_perm, + in.poseidon2_sel_poseidon_perm, + in.mem_sel_op_poseidon_read_b, + in.poseidon2_clk, + in.poseidon2_space_id, + in.poseidon2_mem_addr_read_b, + in.poseidon2_a_1, + in.main_zeroes, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val, + in.mem_rw + ); } }; -template -class perm_pos_mem_read_b_relation : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_POS_MEM_READ_B"; +template class perm_pos_mem_read_b_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_POS_MEM_READ_B"; }; template using perm_pos_mem_read_b = GenericPermutation; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_pos_mem_read_c.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_pos_mem_read_c.hpp index c228ef2707e..c30899b8cc7 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_pos_mem_read_c.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_pos_mem_read_c.hpp @@ -20,45 +20,48 @@ class perm_pos_mem_read_c_permutation_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.perm_pos_mem_read_c_inv, - in.poseidon2_sel_poseidon_perm, - in.poseidon2_sel_poseidon_perm, - in.mem_sel_op_poseidon_read_c, - in.poseidon2_clk, - in.poseidon2_space_id, - in.poseidon2_mem_addr_read_c, - in.poseidon2_a_2, - in.main_zeroes, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val, - in.mem_rw); + return std::forward_as_tuple( + in.perm_pos_mem_read_c_inv, + in.poseidon2_sel_poseidon_perm, + in.poseidon2_sel_poseidon_perm, + in.mem_sel_op_poseidon_read_c, + in.poseidon2_clk, + in.poseidon2_space_id, + in.poseidon2_mem_addr_read_c, + in.poseidon2_a_2, + in.main_zeroes, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val, + in.mem_rw + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.perm_pos_mem_read_c_inv, - in.poseidon2_sel_poseidon_perm, - in.poseidon2_sel_poseidon_perm, - in.mem_sel_op_poseidon_read_c, - in.poseidon2_clk, - in.poseidon2_space_id, - in.poseidon2_mem_addr_read_c, - in.poseidon2_a_2, - in.main_zeroes, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val, - in.mem_rw); + return std::forward_as_tuple( + in.perm_pos_mem_read_c_inv, + in.poseidon2_sel_poseidon_perm, + in.poseidon2_sel_poseidon_perm, + in.mem_sel_op_poseidon_read_c, + in.poseidon2_clk, + in.poseidon2_space_id, + in.poseidon2_mem_addr_read_c, + in.poseidon2_a_2, + in.main_zeroes, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val, + in.mem_rw + ); } }; -template -class perm_pos_mem_read_c_relation : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_POS_MEM_READ_C"; +template class perm_pos_mem_read_c_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_POS_MEM_READ_C"; }; template using perm_pos_mem_read_c = GenericPermutation; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_pos_mem_read_d.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_pos_mem_read_d.hpp index 1ae2f45e493..4e9fd3df990 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_pos_mem_read_d.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_pos_mem_read_d.hpp @@ -20,45 +20,48 @@ class perm_pos_mem_read_d_permutation_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.perm_pos_mem_read_d_inv, - in.poseidon2_sel_poseidon_perm, - in.poseidon2_sel_poseidon_perm, - in.mem_sel_op_poseidon_read_d, - in.poseidon2_clk, - in.poseidon2_space_id, - in.poseidon2_mem_addr_read_d, - in.poseidon2_a_3, - in.main_zeroes, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val, - in.mem_rw); + return std::forward_as_tuple( + in.perm_pos_mem_read_d_inv, + in.poseidon2_sel_poseidon_perm, + in.poseidon2_sel_poseidon_perm, + in.mem_sel_op_poseidon_read_d, + in.poseidon2_clk, + in.poseidon2_space_id, + in.poseidon2_mem_addr_read_d, + in.poseidon2_a_3, + in.main_zeroes, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val, + in.mem_rw + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.perm_pos_mem_read_d_inv, - in.poseidon2_sel_poseidon_perm, - in.poseidon2_sel_poseidon_perm, - in.mem_sel_op_poseidon_read_d, - in.poseidon2_clk, - in.poseidon2_space_id, - in.poseidon2_mem_addr_read_d, - in.poseidon2_a_3, - in.main_zeroes, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val, - in.mem_rw); + return std::forward_as_tuple( + in.perm_pos_mem_read_d_inv, + in.poseidon2_sel_poseidon_perm, + in.poseidon2_sel_poseidon_perm, + in.mem_sel_op_poseidon_read_d, + in.poseidon2_clk, + in.poseidon2_space_id, + in.poseidon2_mem_addr_read_d, + in.poseidon2_a_3, + in.main_zeroes, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val, + in.mem_rw + ); } }; -template -class perm_pos_mem_read_d_relation : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_POS_MEM_READ_D"; +template class perm_pos_mem_read_d_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_POS_MEM_READ_D"; }; template using perm_pos_mem_read_d = GenericPermutation; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_pos_mem_write_a.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_pos_mem_write_a.hpp index 1701904f286..5453cab9b6d 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_pos_mem_write_a.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_pos_mem_write_a.hpp @@ -20,46 +20,48 @@ class perm_pos_mem_write_a_permutation_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.perm_pos_mem_write_a_inv, - in.poseidon2_sel_poseidon_perm, - in.poseidon2_sel_poseidon_perm, - in.mem_sel_op_poseidon_write_a, - in.poseidon2_clk, - in.poseidon2_space_id, - in.poseidon2_mem_addr_write_a, - in.poseidon2_b_0, - in.poseidon2_sel_poseidon_perm, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val, - in.mem_rw); + return std::forward_as_tuple( + in.perm_pos_mem_write_a_inv, + in.poseidon2_sel_poseidon_perm, + in.poseidon2_sel_poseidon_perm, + in.mem_sel_op_poseidon_write_a, + in.poseidon2_clk, + in.poseidon2_space_id, + in.poseidon2_mem_addr_write_a, + in.poseidon2_b_0, + in.poseidon2_sel_poseidon_perm, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val, + in.mem_rw + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.perm_pos_mem_write_a_inv, - in.poseidon2_sel_poseidon_perm, - in.poseidon2_sel_poseidon_perm, - in.mem_sel_op_poseidon_write_a, - in.poseidon2_clk, - in.poseidon2_space_id, - in.poseidon2_mem_addr_write_a, - in.poseidon2_b_0, - in.poseidon2_sel_poseidon_perm, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val, - in.mem_rw); + return std::forward_as_tuple( + in.perm_pos_mem_write_a_inv, + in.poseidon2_sel_poseidon_perm, + in.poseidon2_sel_poseidon_perm, + in.mem_sel_op_poseidon_write_a, + in.poseidon2_clk, + in.poseidon2_space_id, + in.poseidon2_mem_addr_write_a, + in.poseidon2_b_0, + in.poseidon2_sel_poseidon_perm, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val, + in.mem_rw + ); } }; -template -class perm_pos_mem_write_a_relation - : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_POS_MEM_WRITE_A"; +template class perm_pos_mem_write_a_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_POS_MEM_WRITE_A"; }; template using perm_pos_mem_write_a = GenericPermutation; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_pos_mem_write_b.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_pos_mem_write_b.hpp index d516072c318..bbbb61350af 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_pos_mem_write_b.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_pos_mem_write_b.hpp @@ -20,46 +20,48 @@ class perm_pos_mem_write_b_permutation_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.perm_pos_mem_write_b_inv, - in.poseidon2_sel_poseidon_perm, - in.poseidon2_sel_poseidon_perm, - in.mem_sel_op_poseidon_write_b, - in.poseidon2_clk, - in.poseidon2_space_id, - in.poseidon2_mem_addr_write_b, - in.poseidon2_b_1, - in.poseidon2_sel_poseidon_perm, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val, - in.mem_rw); + return std::forward_as_tuple( + in.perm_pos_mem_write_b_inv, + in.poseidon2_sel_poseidon_perm, + in.poseidon2_sel_poseidon_perm, + in.mem_sel_op_poseidon_write_b, + in.poseidon2_clk, + in.poseidon2_space_id, + in.poseidon2_mem_addr_write_b, + in.poseidon2_b_1, + in.poseidon2_sel_poseidon_perm, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val, + in.mem_rw + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.perm_pos_mem_write_b_inv, - in.poseidon2_sel_poseidon_perm, - in.poseidon2_sel_poseidon_perm, - in.mem_sel_op_poseidon_write_b, - in.poseidon2_clk, - in.poseidon2_space_id, - in.poseidon2_mem_addr_write_b, - in.poseidon2_b_1, - in.poseidon2_sel_poseidon_perm, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val, - in.mem_rw); + return std::forward_as_tuple( + in.perm_pos_mem_write_b_inv, + in.poseidon2_sel_poseidon_perm, + in.poseidon2_sel_poseidon_perm, + in.mem_sel_op_poseidon_write_b, + in.poseidon2_clk, + in.poseidon2_space_id, + in.poseidon2_mem_addr_write_b, + in.poseidon2_b_1, + in.poseidon2_sel_poseidon_perm, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val, + in.mem_rw + ); } }; -template -class perm_pos_mem_write_b_relation - : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_POS_MEM_WRITE_B"; +template class perm_pos_mem_write_b_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_POS_MEM_WRITE_B"; }; template using perm_pos_mem_write_b = GenericPermutation; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_pos_mem_write_c.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_pos_mem_write_c.hpp index 352efe17030..9718a0b02b5 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_pos_mem_write_c.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_pos_mem_write_c.hpp @@ -20,46 +20,48 @@ class perm_pos_mem_write_c_permutation_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.perm_pos_mem_write_c_inv, - in.poseidon2_sel_poseidon_perm, - in.poseidon2_sel_poseidon_perm, - in.mem_sel_op_poseidon_write_c, - in.poseidon2_clk, - in.poseidon2_space_id, - in.poseidon2_mem_addr_write_c, - in.poseidon2_b_2, - in.poseidon2_sel_poseidon_perm, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val, - in.mem_rw); + return std::forward_as_tuple( + in.perm_pos_mem_write_c_inv, + in.poseidon2_sel_poseidon_perm, + in.poseidon2_sel_poseidon_perm, + in.mem_sel_op_poseidon_write_c, + in.poseidon2_clk, + in.poseidon2_space_id, + in.poseidon2_mem_addr_write_c, + in.poseidon2_b_2, + in.poseidon2_sel_poseidon_perm, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val, + in.mem_rw + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.perm_pos_mem_write_c_inv, - in.poseidon2_sel_poseidon_perm, - in.poseidon2_sel_poseidon_perm, - in.mem_sel_op_poseidon_write_c, - in.poseidon2_clk, - in.poseidon2_space_id, - in.poseidon2_mem_addr_write_c, - in.poseidon2_b_2, - in.poseidon2_sel_poseidon_perm, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val, - in.mem_rw); + return std::forward_as_tuple( + in.perm_pos_mem_write_c_inv, + in.poseidon2_sel_poseidon_perm, + in.poseidon2_sel_poseidon_perm, + in.mem_sel_op_poseidon_write_c, + in.poseidon2_clk, + in.poseidon2_space_id, + in.poseidon2_mem_addr_write_c, + in.poseidon2_b_2, + in.poseidon2_sel_poseidon_perm, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val, + in.mem_rw + ); } }; -template -class perm_pos_mem_write_c_relation - : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_POS_MEM_WRITE_C"; +template class perm_pos_mem_write_c_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_POS_MEM_WRITE_C"; }; template using perm_pos_mem_write_c = GenericPermutation; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_pos_mem_write_d.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_pos_mem_write_d.hpp index 0f8e34f9365..427aefa2ef4 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_pos_mem_write_d.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_pos_mem_write_d.hpp @@ -20,46 +20,48 @@ class perm_pos_mem_write_d_permutation_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.perm_pos_mem_write_d_inv, - in.poseidon2_sel_poseidon_perm, - in.poseidon2_sel_poseidon_perm, - in.mem_sel_op_poseidon_write_d, - in.poseidon2_clk, - in.poseidon2_space_id, - in.poseidon2_mem_addr_write_d, - in.poseidon2_b_3, - in.poseidon2_sel_poseidon_perm, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val, - in.mem_rw); + return std::forward_as_tuple( + in.perm_pos_mem_write_d_inv, + in.poseidon2_sel_poseidon_perm, + in.poseidon2_sel_poseidon_perm, + in.mem_sel_op_poseidon_write_d, + in.poseidon2_clk, + in.poseidon2_space_id, + in.poseidon2_mem_addr_write_d, + in.poseidon2_b_3, + in.poseidon2_sel_poseidon_perm, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val, + in.mem_rw + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.perm_pos_mem_write_d_inv, - in.poseidon2_sel_poseidon_perm, - in.poseidon2_sel_poseidon_perm, - in.mem_sel_op_poseidon_write_d, - in.poseidon2_clk, - in.poseidon2_space_id, - in.poseidon2_mem_addr_write_d, - in.poseidon2_b_3, - in.poseidon2_sel_poseidon_perm, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val, - in.mem_rw); + return std::forward_as_tuple( + in.perm_pos_mem_write_d_inv, + in.poseidon2_sel_poseidon_perm, + in.poseidon2_sel_poseidon_perm, + in.mem_sel_op_poseidon_write_d, + in.poseidon2_clk, + in.poseidon2_space_id, + in.poseidon2_mem_addr_write_d, + in.poseidon2_b_3, + in.poseidon2_sel_poseidon_perm, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val, + in.mem_rw + ); } }; -template -class perm_pos_mem_write_d_relation - : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_POS_MEM_WRITE_D"; +template class perm_pos_mem_write_d_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_POS_MEM_WRITE_D"; }; template using perm_pos_mem_write_d = GenericPermutation; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_rng_alu.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_rng_alu.hpp index 85f650aadca..8b91f981c8b 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_rng_alu.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_rng_alu.hpp @@ -20,37 +20,40 @@ class perm_rng_alu_permutation_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.perm_rng_alu_inv, - in.range_check_alu_rng_chk, - in.range_check_alu_rng_chk, - in.alu_range_check_sel, - in.range_check_clk, - in.range_check_value, - in.range_check_rng_chk_bits, - in.alu_clk, - in.alu_range_check_input_value, - in.alu_range_check_num_bits); + return std::forward_as_tuple( + in.perm_rng_alu_inv, + in.range_check_alu_rng_chk, + in.range_check_alu_rng_chk, + in.alu_range_check_sel, + in.range_check_clk, + in.range_check_value, + in.range_check_rng_chk_bits, + in.alu_clk, + in.alu_range_check_input_value, + in.alu_range_check_num_bits + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.perm_rng_alu_inv, - in.range_check_alu_rng_chk, - in.range_check_alu_rng_chk, - in.alu_range_check_sel, - in.range_check_clk, - in.range_check_value, - in.range_check_rng_chk_bits, - in.alu_clk, - in.alu_range_check_input_value, - in.alu_range_check_num_bits); + return std::forward_as_tuple( + in.perm_rng_alu_inv, + in.range_check_alu_rng_chk, + in.range_check_alu_rng_chk, + in.alu_range_check_sel, + in.range_check_clk, + in.range_check_value, + in.range_check_rng_chk_bits, + in.alu_clk, + in.alu_range_check_input_value, + in.alu_range_check_num_bits + ); } }; -template -class perm_rng_alu_relation : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_RNG_ALU"; +template class perm_rng_alu_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_RNG_ALU"; }; template using perm_rng_alu = GenericPermutation; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_rng_cmp_hi.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_rng_cmp_hi.hpp index 23fda85c6bf..6eb06e76f9e 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_rng_cmp_hi.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_rng_cmp_hi.hpp @@ -20,33 +20,36 @@ class perm_rng_cmp_hi_permutation_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.perm_rng_cmp_hi_inv, - in.range_check_cmp_hi_bits_rng_chk, - in.range_check_cmp_hi_bits_rng_chk, - in.cmp_sel_rng_chk, - in.range_check_clk, - in.range_check_value, - in.cmp_range_chk_clk, - in.cmp_a_hi); + return std::forward_as_tuple( + in.perm_rng_cmp_hi_inv, + in.range_check_cmp_hi_bits_rng_chk, + in.range_check_cmp_hi_bits_rng_chk, + in.cmp_sel_rng_chk, + in.range_check_clk, + in.range_check_value, + in.cmp_range_chk_clk, + in.cmp_a_hi + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.perm_rng_cmp_hi_inv, - in.range_check_cmp_hi_bits_rng_chk, - in.range_check_cmp_hi_bits_rng_chk, - in.cmp_sel_rng_chk, - in.range_check_clk, - in.range_check_value, - in.cmp_range_chk_clk, - in.cmp_a_hi); + return std::forward_as_tuple( + in.perm_rng_cmp_hi_inv, + in.range_check_cmp_hi_bits_rng_chk, + in.range_check_cmp_hi_bits_rng_chk, + in.cmp_sel_rng_chk, + in.range_check_clk, + in.range_check_value, + in.cmp_range_chk_clk, + in.cmp_a_hi + ); } }; -template -class perm_rng_cmp_hi_relation : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_RNG_CMP_HI"; +template class perm_rng_cmp_hi_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_RNG_CMP_HI"; }; template using perm_rng_cmp_hi = GenericPermutation; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_rng_cmp_lo.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_rng_cmp_lo.hpp index c255f8565d9..781e9d07898 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_rng_cmp_lo.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_rng_cmp_lo.hpp @@ -20,33 +20,36 @@ class perm_rng_cmp_lo_permutation_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.perm_rng_cmp_lo_inv, - in.range_check_cmp_lo_bits_rng_chk, - in.range_check_cmp_lo_bits_rng_chk, - in.cmp_sel_rng_chk, - in.range_check_clk, - in.range_check_value, - in.cmp_range_chk_clk, - in.cmp_a_lo); + return std::forward_as_tuple( + in.perm_rng_cmp_lo_inv, + in.range_check_cmp_lo_bits_rng_chk, + in.range_check_cmp_lo_bits_rng_chk, + in.cmp_sel_rng_chk, + in.range_check_clk, + in.range_check_value, + in.cmp_range_chk_clk, + in.cmp_a_lo + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.perm_rng_cmp_lo_inv, - in.range_check_cmp_lo_bits_rng_chk, - in.range_check_cmp_lo_bits_rng_chk, - in.cmp_sel_rng_chk, - in.range_check_clk, - in.range_check_value, - in.cmp_range_chk_clk, - in.cmp_a_lo); + return std::forward_as_tuple( + in.perm_rng_cmp_lo_inv, + in.range_check_cmp_lo_bits_rng_chk, + in.range_check_cmp_lo_bits_rng_chk, + in.cmp_sel_rng_chk, + in.range_check_clk, + in.range_check_value, + in.cmp_range_chk_clk, + in.cmp_a_lo + ); } }; -template -class perm_rng_cmp_lo_relation : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_RNG_CMP_LO"; +template class perm_rng_cmp_lo_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_RNG_CMP_LO"; }; template using perm_rng_cmp_lo = GenericPermutation; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_rng_gas_da.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_rng_gas_da.hpp index af01d132211..566efcdfb14 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_rng_gas_da.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_rng_gas_da.hpp @@ -20,33 +20,36 @@ class perm_rng_gas_da_permutation_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.perm_rng_gas_da_inv, - in.range_check_gas_da_rng_chk, - in.range_check_gas_da_rng_chk, - in.main_is_gas_accounted, - in.range_check_clk, - in.range_check_value, - in.main_clk, - in.main_abs_da_rem_gas); + return std::forward_as_tuple( + in.perm_rng_gas_da_inv, + in.range_check_gas_da_rng_chk, + in.range_check_gas_da_rng_chk, + in.main_is_gas_accounted, + in.range_check_clk, + in.range_check_value, + in.main_clk, + in.main_abs_da_rem_gas + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.perm_rng_gas_da_inv, - in.range_check_gas_da_rng_chk, - in.range_check_gas_da_rng_chk, - in.main_is_gas_accounted, - in.range_check_clk, - in.range_check_value, - in.main_clk, - in.main_abs_da_rem_gas); + return std::forward_as_tuple( + in.perm_rng_gas_da_inv, + in.range_check_gas_da_rng_chk, + in.range_check_gas_da_rng_chk, + in.main_is_gas_accounted, + in.range_check_clk, + in.range_check_value, + in.main_clk, + in.main_abs_da_rem_gas + ); } }; -template -class perm_rng_gas_da_relation : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_RNG_GAS_DA"; +template class perm_rng_gas_da_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_RNG_GAS_DA"; }; template using perm_rng_gas_da = GenericPermutation; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_rng_gas_l2.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_rng_gas_l2.hpp index 2c4fa16bdec..668ba3f7b2f 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_rng_gas_l2.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_rng_gas_l2.hpp @@ -20,33 +20,36 @@ class perm_rng_gas_l2_permutation_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.perm_rng_gas_l2_inv, - in.range_check_gas_l2_rng_chk, - in.range_check_gas_l2_rng_chk, - in.main_is_gas_accounted, - in.range_check_clk, - in.range_check_value, - in.main_clk, - in.main_abs_l2_rem_gas); + return std::forward_as_tuple( + in.perm_rng_gas_l2_inv, + in.range_check_gas_l2_rng_chk, + in.range_check_gas_l2_rng_chk, + in.main_is_gas_accounted, + in.range_check_clk, + in.range_check_value, + in.main_clk, + in.main_abs_l2_rem_gas + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.perm_rng_gas_l2_inv, - in.range_check_gas_l2_rng_chk, - in.range_check_gas_l2_rng_chk, - in.main_is_gas_accounted, - in.range_check_clk, - in.range_check_value, - in.main_clk, - in.main_abs_l2_rem_gas); + return std::forward_as_tuple( + in.perm_rng_gas_l2_inv, + in.range_check_gas_l2_rng_chk, + in.range_check_gas_l2_rng_chk, + in.main_is_gas_accounted, + in.range_check_clk, + in.range_check_value, + in.main_clk, + in.main_abs_l2_rem_gas + ); } }; -template -class perm_rng_gas_l2_relation : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_RNG_GAS_L2"; +template class perm_rng_gas_l2_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_RNG_GAS_L2"; }; template using perm_rng_gas_l2 = GenericPermutation; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_rng_mem.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_rng_mem.hpp index 0d0c8e3701d..570d944599f 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_rng_mem.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_rng_mem.hpp @@ -20,33 +20,36 @@ class perm_rng_mem_permutation_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.perm_rng_mem_inv, - in.range_check_mem_rng_chk, - in.range_check_mem_rng_chk, - in.mem_sel_rng_chk, - in.range_check_clk, - in.range_check_value, - in.mem_tsp, - in.mem_diff); + return std::forward_as_tuple( + in.perm_rng_mem_inv, + in.range_check_mem_rng_chk, + in.range_check_mem_rng_chk, + in.mem_sel_rng_chk, + in.range_check_clk, + in.range_check_value, + in.mem_tsp, + in.mem_diff + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.perm_rng_mem_inv, - in.range_check_mem_rng_chk, - in.range_check_mem_rng_chk, - in.mem_sel_rng_chk, - in.range_check_clk, - in.range_check_value, - in.mem_tsp, - in.mem_diff); + return std::forward_as_tuple( + in.perm_rng_mem_inv, + in.range_check_mem_rng_chk, + in.range_check_mem_rng_chk, + in.mem_sel_rng_chk, + in.range_check_clk, + in.range_check_value, + in.mem_tsp, + in.mem_diff + ); } }; -template -class perm_rng_mem_relation : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_RNG_MEM"; +template class perm_rng_mem_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_RNG_MEM"; }; template using perm_rng_mem = GenericPermutation; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_slice_mem.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_slice_mem.hpp index b935c223383..7919a7ce8db 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_slice_mem.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/perm_slice_mem.hpp @@ -20,45 +20,48 @@ class perm_slice_mem_permutation_settings { template static inline auto get_const_entities(const AllEntities& in) { - return std::forward_as_tuple(in.perm_slice_mem_inv, - in.slice_sel_mem_active, - in.slice_sel_mem_active, - in.mem_sel_op_slice, - in.slice_clk, - in.slice_space_id, - in.slice_addr, - in.slice_val, - in.slice_sel_cd_cpy, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val, - in.mem_rw); + return std::forward_as_tuple( + in.perm_slice_mem_inv, + in.slice_sel_mem_active, + in.slice_sel_mem_active, + in.mem_sel_op_slice, + in.slice_clk, + in.slice_space_id, + in.slice_addr, + in.slice_val, + in.slice_sel_cd_cpy, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val, + in.mem_rw + ); } template static inline auto get_nonconst_entities(AllEntities& in) { - return std::forward_as_tuple(in.perm_slice_mem_inv, - in.slice_sel_mem_active, - in.slice_sel_mem_active, - in.mem_sel_op_slice, - in.slice_clk, - in.slice_space_id, - in.slice_addr, - in.slice_val, - in.slice_sel_cd_cpy, - in.mem_clk, - in.mem_space_id, - in.mem_addr, - in.mem_val, - in.mem_rw); + return std::forward_as_tuple( + in.perm_slice_mem_inv, + in.slice_sel_mem_active, + in.slice_sel_mem_active, + in.mem_sel_op_slice, + in.slice_clk, + in.slice_space_id, + in.slice_addr, + in.slice_val, + in.slice_sel_cd_cpy, + in.mem_clk, + in.mem_space_id, + in.mem_addr, + in.mem_val, + in.mem_rw + ); } }; -template -class perm_slice_mem_relation : public GenericPermutationRelation { - public: - static constexpr const char* NAME = "PERM_SLICE_MEM"; +template class perm_slice_mem_relation : public GenericPermutationRelation { + public: + static constexpr const char* NAME = "PERM_SLICE_MEM"; }; template using perm_slice_mem = GenericPermutation; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/poseidon2.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/poseidon2.hpp index 5523bd984c3..3fed475bc3f 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/poseidon2.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/poseidon2.hpp @@ -6,3062 +6,2543 @@ namespace bb::Avm_vm { -template class poseidon2Impl { - public: - using FF = FF_; - - static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 3, 3, 3, 3 - }; - - template inline static bool skip(const AllEntities& in) - { - const auto& new_term = in; - return (new_term.poseidon2_sel_poseidon_perm).is_zero(); - } - - template - void static accumulate(ContainerOverSubrelations& evals, - const AllEntities& new_term, - [[maybe_unused]] const RelationParameters&, - [[maybe_unused]] const FF& scaling_factor) - { - const auto poseidon2_params_MU_0 = - FF(uint256_t{ 13071735289386612455UL, 937867514930142591UL, 338297992309721356UL, 1214967615784395659UL }); - const auto poseidon2_params_MU_1 = - FF(uint256_t{ 12135856085615145995UL, 11087747206803725188UL, 92802976007797685UL, 875972510381039422UL }); - const auto poseidon2_params_MU_2 = - FF(uint256_t{ 8072276821399088149UL, 12835106910674049377UL, 12882375598172350360UL, 23726925003953432UL }); - const auto poseidon2_params_MU_3 = - FF(uint256_t{ 1422103134736368267UL, 5972060781611222310UL, 3327741120806881763UL, 2462344296021899375UL }); - const auto poseidon2_params_C_0_0 = - FF(uint256_t{ 10018390284920759269UL, 196898842818127395UL, 5249540449481148995UL, 1853312570062057576UL }); - const auto poseidon2_params_C_0_1 = FF( - uint256_t{ 12486221224710452438UL, 2372038863109147677UL, 8230667498854222355UL, 2764611904404804029UL }); - const auto poseidon2_params_C_0_2 = FF( - uint256_t{ 4466505105966356650UL, 4686185096558265002UL, 16210260819355521378UL, 1844031548168280073UL }); - const auto poseidon2_params_C_0_3 = FF( - uint256_t{ 15002325471271702008UL, 5581154705073500415UL, 1229208533183169201UL, 1549225070791782920UL }); - const auto poseidon2_params_C_1_0 = - FF(uint256_t{ 18309653156114024706UL, 798761732958817262UL, 6904962453156279281UL, 3335412762186210716UL }); - const auto poseidon2_params_C_1_1 = - FF(uint256_t{ 2824096028161810206UL, 14640933461146357672UL, 957840840567621315UL, 1024001058677493842UL }); - const auto poseidon2_params_C_1_2 = FF( - uint256_t{ 14339023814126516630UL, 12239068001133297662UL, 428134084092645147UL, 2673682960814460689UL }); - const auto poseidon2_params_C_1_3 = FF( - uint256_t{ 6214865908119297870UL, 17923963059035301363UL, 10985380589240272449UL, 1430464474809378870UL }); - const auto poseidon2_params_C_2_0 = - FF(uint256_t{ 5109255232332580664UL, 11913027714091798733UL, 4449570166290740355UL, 864862123557185234UL }); - const auto poseidon2_params_C_2_1 = - FF(uint256_t{ 2323272968957708806UL, 354488099726909104UL, 115174089281514891UL, 80808271106704719UL }); - const auto poseidon2_params_C_2_2 = - FF(uint256_t{ 9646436663147525449UL, 3404572679246369876UL, 2350204275212843361UL, 1069216089054537871UL }); - const auto poseidon2_params_C_2_3 = - FF(uint256_t{ 5059356740217174171UL, 4245857056683447103UL, 2426504795124362174UL, 350059533408463330UL }); - const auto poseidon2_params_C_3_0 = - FF(uint256_t{ 14876286709841668328UL, 6932857857384975351UL, 7976037835777844091UL, 738350885205242785UL }); - const auto poseidon2_params_C_3_1 = FF( - uint256_t{ 16522097747524989503UL, 4157368317794149558UL, 10343110624935622906UL, 2709590753056582169UL }); - const auto poseidon2_params_C_3_2 = FF( - uint256_t{ 8805379462752425633UL, 8594508728147436821UL, 15629690186821248127UL, 2936193411053712582UL }); - const auto poseidon2_params_C_3_3 = FF( - uint256_t{ 17046614324338172999UL, 14086280776151114414UL, 2804088968006330580UL, 728643340397380469UL }); - const auto poseidon2_params_C_4_0 = - FF(uint256_t{ 12986735346000814543UL, 6140074342411686364UL, 6041575944194691717UL, 896092723329689904UL }); - const auto poseidon2_params_C_4_1 = FF(0); - const auto poseidon2_params_C_4_2 = FF(0); - const auto poseidon2_params_C_4_3 = FF(0); - const auto poseidon2_params_C_5_0 = FF( - uint256_t{ 9573905030842087441UL, 12243211539080976096UL, 15287161151491266826UL, 1310836290481124728UL }); - const auto poseidon2_params_C_5_1 = FF(0); - const auto poseidon2_params_C_5_2 = FF(0); - const auto poseidon2_params_C_5_3 = FF(0); - const auto poseidon2_params_C_6_0 = - FF(uint256_t{ 8865134002163281525UL, 6813849753829831047UL, 9066778847678578696UL, 2801725307463304665UL }); - const auto poseidon2_params_C_6_1 = FF(0); - const auto poseidon2_params_C_6_2 = FF(0); - const auto poseidon2_params_C_6_3 = FF(0); - const auto poseidon2_params_C_7_0 = FF( - uint256_t{ 4931814869361681093UL, 13712769805002511750UL, 1776191062268299644UL, 2068661504023016414UL }); - const auto poseidon2_params_C_7_1 = FF(0); - const auto poseidon2_params_C_7_2 = FF(0); - const auto poseidon2_params_C_7_3 = FF(0); - const auto poseidon2_params_C_8_0 = - FF(uint256_t{ 8161631444256445904UL, 3049786034047984668UL, 1021328518293651309UL, 2147500022207188878UL }); - const auto poseidon2_params_C_8_1 = FF(0); - const auto poseidon2_params_C_8_2 = FF(0); - const auto poseidon2_params_C_8_3 = FF(0); - const auto poseidon2_params_C_9_0 = - FF(uint256_t{ 12766468767470212468UL, 926098071429114297UL, 17691598410912255471UL, 76565467953470566UL }); - const auto poseidon2_params_C_9_1 = FF(0); - const auto poseidon2_params_C_9_2 = FF(0); - const auto poseidon2_params_C_9_3 = FF(0); - const auto poseidon2_params_C_10_0 = FF( - uint256_t{ 15547843034426617484UL, 13465733818561903358UL, 11157089789589945854UL, 3107062195097242290UL }); - const auto poseidon2_params_C_10_1 = FF(0); - const auto poseidon2_params_C_10_2 = FF(0); - const auto poseidon2_params_C_10_3 = FF(0); - const auto poseidon2_params_C_11_0 = FF( - uint256_t{ 16908372174309343397UL, 17264932925429761530UL, 11508063480483774160UL, 2682419245684831641UL }); - const auto poseidon2_params_C_11_1 = FF(0); - const auto poseidon2_params_C_11_2 = FF(0); - const auto poseidon2_params_C_11_3 = FF(0); - const auto poseidon2_params_C_12_0 = - FF(uint256_t{ 4870692136216401181UL, 17645600130793395310UL, 2758876031472241166UL, 874943362207641089UL }); - const auto poseidon2_params_C_12_1 = FF(0); - const auto poseidon2_params_C_12_2 = FF(0); - const auto poseidon2_params_C_12_3 = FF(0); - const auto poseidon2_params_C_13_0 = FF( - uint256_t{ 4540479402638267003UL, 13477556963426049071UL, 6055112305493291757UL, 1810598527648098537UL }); - const auto poseidon2_params_C_13_1 = FF(0); - const auto poseidon2_params_C_13_2 = FF(0); - const auto poseidon2_params_C_13_3 = FF(0); - const auto poseidon2_params_C_14_0 = - FF(uint256_t{ 7894770769272900997UL, 9595210915998428021UL, 7642295683223718917UL, 2210716392790471408UL }); - const auto poseidon2_params_C_14_1 = FF(0); - const auto poseidon2_params_C_14_2 = FF(0); - const auto poseidon2_params_C_14_3 = FF(0); - const auto poseidon2_params_C_15_0 = FF( - uint256_t{ 10910178561156475899UL, 15811627963917441510UL, 16460518660187536520UL, 1698297851221778809UL }); - const auto poseidon2_params_C_15_1 = FF(0); - const auto poseidon2_params_C_15_2 = FF(0); - const auto poseidon2_params_C_15_3 = FF(0); - const auto poseidon2_params_C_16_0 = - FF(uint256_t{ 7831732902708890908UL, 1464390598836302271UL, 8568564606321342514UL, 3007171090439369509UL }); - const auto poseidon2_params_C_16_1 = FF(0); - const auto poseidon2_params_C_16_2 = FF(0); - const auto poseidon2_params_C_16_3 = FF(0); - const auto poseidon2_params_C_17_0 = FF( - uint256_t{ 12758232712903990792UL, 5937193763836963893UL, 4629415695575460109UL, 2476198378403296665UL }); - const auto poseidon2_params_C_17_1 = FF(0); - const auto poseidon2_params_C_17_2 = FF(0); - const auto poseidon2_params_C_17_3 = FF(0); - const auto poseidon2_params_C_18_0 = - FF(uint256_t{ 16185652584871361881UL, 3161867062328690813UL, 8447947510117581907UL, 452436262606194895UL }); - const auto poseidon2_params_C_18_1 = FF(0); - const auto poseidon2_params_C_18_2 = FF(0); - const auto poseidon2_params_C_18_3 = FF(0); - const auto poseidon2_params_C_19_0 = FF( - uint256_t{ 10531967515434376071UL, 5577695765815843856UL, 9164856352050088505UL, 1205339682110411496UL }); - const auto poseidon2_params_C_19_1 = FF(0); - const auto poseidon2_params_C_19_2 = FF(0); - const auto poseidon2_params_C_19_3 = FF(0); - const auto poseidon2_params_C_20_0 = FF( - uint256_t{ 3898841196333713180UL, 14650521577519770525UL, 5736581618852866049UL, 1010789789328495026UL }); - const auto poseidon2_params_C_20_1 = FF(0); - const auto poseidon2_params_C_20_2 = FF(0); - const auto poseidon2_params_C_20_3 = FF(0); - const auto poseidon2_params_C_21_0 = FF( - uint256_t{ 12103741763020280571UL, 14760208106156268938UL, 15246749619665902195UL, 1987439155030896717UL }); - const auto poseidon2_params_C_21_1 = FF(0); - const auto poseidon2_params_C_21_2 = FF(0); - const auto poseidon2_params_C_21_3 = FF(0); - const auto poseidon2_params_C_22_0 = FF( - uint256_t{ 326429241861474059UL, 11335157279655967493UL, 16233357323017397007UL, 2124770605461456708UL }); - const auto poseidon2_params_C_22_1 = FF(0); - const auto poseidon2_params_C_22_2 = FF(0); - const auto poseidon2_params_C_22_3 = FF(0); - const auto poseidon2_params_C_23_0 = FF( - uint256_t{ 13507610432344102875UL, 9765425316929074945UL, 10455054851855122687UL, 3371280263716451574UL }); - const auto poseidon2_params_C_23_1 = FF(0); - const auto poseidon2_params_C_23_2 = FF(0); - const auto poseidon2_params_C_23_3 = FF(0); - const auto poseidon2_params_C_24_0 = FF( - uint256_t{ 9433430149246843174UL, 16916651192445074064UL, 12002862125451454299UL, 3293088726774108791UL }); - const auto poseidon2_params_C_24_1 = FF(0); - const auto poseidon2_params_C_24_2 = FF(0); - const auto poseidon2_params_C_24_3 = FF(0); - const auto poseidon2_params_C_25_0 = FF( - uint256_t{ 15895963712096768440UL, 10975964170403460506UL, 7594578539046143282UL, 441635248990433378UL }); - const auto poseidon2_params_C_25_1 = FF(0); - const auto poseidon2_params_C_25_2 = FF(0); - const auto poseidon2_params_C_25_3 = FF(0); - const auto poseidon2_params_C_26_0 = - FF(uint256_t{ 55564641555031451UL, 2316046008873247993UL, 6273091099984972305UL, 531938487375579818UL }); - const auto poseidon2_params_C_26_1 = FF(0); - const auto poseidon2_params_C_26_2 = FF(0); - const auto poseidon2_params_C_26_3 = FF(0); - const auto poseidon2_params_C_27_0 = FF( - uint256_t{ 17845282940759944461UL, 6735239388814238924UL, 3181517889518583601UL, 2376846283559998361UL }); - const auto poseidon2_params_C_27_1 = FF(0); - const auto poseidon2_params_C_27_2 = FF(0); - const auto poseidon2_params_C_27_3 = FF(0); - const auto poseidon2_params_C_28_0 = FF( - uint256_t{ 14097127963645492314UL, 1165420652731038559UL, 12527303660854712762UL, 2717289076364278965UL }); - const auto poseidon2_params_C_28_1 = FF(0); - const auto poseidon2_params_C_28_2 = FF(0); - const auto poseidon2_params_C_28_3 = FF(0); - const auto poseidon2_params_C_29_0 = FF( - uint256_t{ 15600044695084040011UL, 255324662529267034UL, 11859356122961343981UL, 2571979992654075442UL }); - const auto poseidon2_params_C_29_1 = FF(0); - const auto poseidon2_params_C_29_2 = FF(0); - const auto poseidon2_params_C_29_3 = FF(0); - const auto poseidon2_params_C_30_0 = - FF(uint256_t{ 1589817027469470176UL, 1086723465680833706UL, 6948011514366564799UL, 2482410610948543635UL }); - const auto poseidon2_params_C_30_1 = FF(0); - const auto poseidon2_params_C_30_2 = FF(0); - const auto poseidon2_params_C_30_3 = FF(0); - const auto poseidon2_params_C_31_0 = FF( - uint256_t{ 6071201116374785253UL, 16554668458221199618UL, 16319484688832471879UL, 2792452762383364279UL }); - const auto poseidon2_params_C_31_1 = FF(0); - const auto poseidon2_params_C_31_2 = FF(0); - const auto poseidon2_params_C_31_3 = FF(0); - const auto poseidon2_params_C_32_0 = FF( - uint256_t{ 13535048470209809113UL, 1831807297936988201UL, 16757520396573457190UL, 508291910620511162UL }); - const auto poseidon2_params_C_32_1 = FF(0); - const auto poseidon2_params_C_32_2 = FF(0); - const auto poseidon2_params_C_32_3 = FF(0); - const auto poseidon2_params_C_33_0 = FF( - uint256_t{ 6946737468087619802UL, 14033399912488027565UL, 12701200401813783486UL, 1348363389498465135UL }); - const auto poseidon2_params_C_33_1 = FF(0); - const auto poseidon2_params_C_33_2 = FF(0); - const auto poseidon2_params_C_33_3 = FF(0); - const auto poseidon2_params_C_34_0 = FF( - uint256_t{ 6788008051328210729UL, 13866524545426155292UL, 4317879914214157329UL, 2633928310905799638UL }); - const auto poseidon2_params_C_34_1 = FF(0); - const auto poseidon2_params_C_34_2 = FF(0); - const auto poseidon2_params_C_34_3 = FF(0); - const auto poseidon2_params_C_35_0 = FF( - uint256_t{ 1183626302001490602UL, 10035686235057284266UL, 1656321729167440177UL, 1887128381037099784UL }); - const auto poseidon2_params_C_35_1 = FF(0); - const auto poseidon2_params_C_35_2 = FF(0); - const auto poseidon2_params_C_35_3 = FF(0); - const auto poseidon2_params_C_36_0 = FF( - uint256_t{ 964566190254741199UL, 17650087760652370459UL, 14904592615785317921UL, 2929864473487096026UL }); - const auto poseidon2_params_C_36_1 = FF(0); - const auto poseidon2_params_C_36_2 = FF(0); - const auto poseidon2_params_C_36_3 = FF(0); - const auto poseidon2_params_C_37_0 = - FF(uint256_t{ 13584300701347139198UL, 512534187550045064UL, 13489711551083721364UL, 41824696873363624UL }); - const auto poseidon2_params_C_37_1 = FF(0); - const auto poseidon2_params_C_37_2 = FF(0); - const auto poseidon2_params_C_37_3 = FF(0); - const auto poseidon2_params_C_38_0 = - FF(uint256_t{ 17586611824788147557UL, 6430987250922925699UL, 9294838151373947091UL, 348446557360066429UL }); - const auto poseidon2_params_C_38_1 = FF(0); - const auto poseidon2_params_C_38_2 = FF(0); - const auto poseidon2_params_C_38_3 = FF(0); - const auto poseidon2_params_C_39_0 = FF( - uint256_t{ 15025298913764434311UL, 14393211163878018166UL, 7154440178410267241UL, 3057088631006286899UL }); - const auto poseidon2_params_C_39_1 = FF(0); - const auto poseidon2_params_C_39_2 = FF(0); - const auto poseidon2_params_C_39_3 = FF(0); - const auto poseidon2_params_C_40_0 = FF( - uint256_t{ 13451769229280519155UL, 17839347496757587523UL, 10553299811918798519UL, 2523373819901075642UL }); - const auto poseidon2_params_C_40_1 = FF(0); - const auto poseidon2_params_C_40_2 = FF(0); - const auto poseidon2_params_C_40_3 = FF(0); - const auto poseidon2_params_C_41_0 = FF( - uint256_t{ 16267315463205810352UL, 13830706729545301172UL, 15413288900478726729UL, 287556136711008934UL }); - const auto poseidon2_params_C_41_1 = FF(0); - const auto poseidon2_params_C_41_2 = FF(0); - const auto poseidon2_params_C_41_3 = FF(0); - const auto poseidon2_params_C_42_0 = - FF(uint256_t{ 4573780169675443044UL, 8758089751960064775UL, 2470295096511057988UL, 51551212240288730UL }); - const auto poseidon2_params_C_42_1 = FF(0); - const auto poseidon2_params_C_42_2 = FF(0); - const auto poseidon2_params_C_42_3 = FF(0); - const auto poseidon2_params_C_43_0 = FF( - uint256_t{ 7093949836145798554UL, 12771428392262798771UL, 17021632567931004395UL, 1558106578814965657UL }); - const auto poseidon2_params_C_43_1 = FF(0); - const auto poseidon2_params_C_43_2 = FF(0); - const auto poseidon2_params_C_43_3 = FF(0); - const auto poseidon2_params_C_44_0 = FF( - uint256_t{ 8205915653008540447UL, 10376314495036230740UL, 5774593793305666491UL, 2231830927015656581UL }); - const auto poseidon2_params_C_44_1 = FF(0); - const auto poseidon2_params_C_44_2 = FF(0); - const auto poseidon2_params_C_44_3 = FF(0); - const auto poseidon2_params_C_45_0 = FF( - uint256_t{ 10783762484003267341UL, 10229708558604896492UL, 1831638669050696278UL, 2190429714552610800UL }); - const auto poseidon2_params_C_45_1 = FF(0); - const auto poseidon2_params_C_45_2 = FF(0); - const auto poseidon2_params_C_45_3 = FF(0); - const auto poseidon2_params_C_46_0 = FF( - uint256_t{ 7310961803978392383UL, 12793746113455595394UL, 17036245927795997300UL, 3106081169494120044UL }); - const auto poseidon2_params_C_46_1 = FF(0); - const auto poseidon2_params_C_46_2 = FF(0); - const auto poseidon2_params_C_46_3 = FF(0); - const auto poseidon2_params_C_47_0 = - FF(uint256_t{ 17421859032088162675UL, 7339791467855418851UL, 4622175020331968961UL, 590786792834928630UL }); - const auto poseidon2_params_C_47_1 = FF(0); - const auto poseidon2_params_C_47_2 = FF(0); - const auto poseidon2_params_C_47_3 = FF(0); - const auto poseidon2_params_C_48_0 = FF( - uint256_t{ 14242884250645212438UL, 12806057845811725595UL, 7743423753614082490UL, 213381026777379804UL }); - const auto poseidon2_params_C_48_1 = FF(0); - const auto poseidon2_params_C_48_2 = FF(0); - const auto poseidon2_params_C_48_3 = FF(0); - const auto poseidon2_params_C_49_0 = FF( - uint256_t{ 1110713325513004805UL, 8318407684973846516UL, 15952888485475298710UL, 1018983205230111328UL }); - const auto poseidon2_params_C_49_1 = FF(0); - const auto poseidon2_params_C_49_2 = FF(0); - const auto poseidon2_params_C_49_3 = FF(0); - const auto poseidon2_params_C_50_0 = - FF(uint256_t{ 533883137631233338UL, 333001117808183237UL, 16968583542443855481UL, 329716098711096173UL }); - const auto poseidon2_params_C_50_1 = FF(0); - const auto poseidon2_params_C_50_2 = FF(0); - const auto poseidon2_params_C_50_3 = FF(0); - const auto poseidon2_params_C_51_0 = - FF(uint256_t{ 4449676039486426793UL, 7760073051300251162UL, 5615103291054015906UL, 2516053143677338215UL }); - const auto poseidon2_params_C_51_1 = FF(0); - const auto poseidon2_params_C_51_2 = FF(0); - const auto poseidon2_params_C_51_3 = FF(0); - const auto poseidon2_params_C_52_0 = FF( - uint256_t{ 16503526645482286870UL, 6358830762575712333UL, 12313512559299087688UL, 2716767262544184013UL }); - const auto poseidon2_params_C_52_1 = FF(0); - const auto poseidon2_params_C_52_2 = FF(0); - const auto poseidon2_params_C_52_3 = FF(0); - const auto poseidon2_params_C_53_0 = FF( - uint256_t{ 5426798011730033104UL, 13085704829880126552UL, 6356732802364281819UL, 2175930396888807151UL }); - const auto poseidon2_params_C_53_1 = FF(0); - const auto poseidon2_params_C_53_2 = FF(0); - const auto poseidon2_params_C_53_3 = FF(0); - const auto poseidon2_params_C_54_0 = FF( - uint256_t{ 8262282602783970021UL, 2576069526442506486UL, 14199683559983367515UL, 3432491072538425468UL }); - const auto poseidon2_params_C_54_1 = FF(0); - const auto poseidon2_params_C_54_2 = FF(0); - const auto poseidon2_params_C_54_3 = FF(0); - const auto poseidon2_params_C_55_0 = FF( - uint256_t{ 14778817021916755205UL, 6110468871588391807UL, 2850248286812407967UL, 3411084787375678665UL }); - const auto poseidon2_params_C_55_1 = FF(0); - const auto poseidon2_params_C_55_2 = FF(0); - const auto poseidon2_params_C_55_3 = FF(0); - const auto poseidon2_params_C_56_0 = - FF(uint256_t{ 4906200604739023933UL, 12096549814065429793UL, 5988343102643160344UL, 309820751832846301UL }); - const auto poseidon2_params_C_56_1 = FF(0); - const auto poseidon2_params_C_56_2 = FF(0); - const auto poseidon2_params_C_56_3 = FF(0); - const auto poseidon2_params_C_57_0 = FF( - uint256_t{ 8709336210313678885UL, 10520000332606345601UL, 4756441214598660785UL, 2483744946546306397UL }); - const auto poseidon2_params_C_57_1 = FF(0); - const auto poseidon2_params_C_57_2 = FF(0); - const auto poseidon2_params_C_57_3 = FF(0); - const auto poseidon2_params_C_58_0 = - FF(uint256_t{ 9617950371599090517UL, 6702332727289490762UL, 7078214601245292934UL, 215269160536524476UL }); - const auto poseidon2_params_C_58_1 = FF(0); - const auto poseidon2_params_C_58_2 = FF(0); - const auto poseidon2_params_C_58_3 = FF(0); - const auto poseidon2_params_C_59_0 = FF( - uint256_t{ 14694170287735041964UL, 13462371741453101277UL, 7691247574208617782UL, 1078917709155142535UL }); - const auto poseidon2_params_C_59_1 = FF(0); - const auto poseidon2_params_C_59_2 = FF(0); - const auto poseidon2_params_C_59_3 = FF(0); - const auto poseidon2_params_C_60_0 = FF( - uint256_t{ 17559938410729200952UL, 12326273425107991305UL, 8641129484519639030UL, 1699848340767391255UL }); - const auto poseidon2_params_C_60_1 = - FF(uint256_t{ 3946956839294125797UL, 10123891284815211853UL, 3676846437799665248UL, 753827773683953838UL }); - const auto poseidon2_params_C_60_2 = FF( - uint256_t{ 10815195850656127580UL, 17940782720817522247UL, 11666428030894512886UL, 2305765957929457259UL }); - const auto poseidon2_params_C_60_3 = - FF(uint256_t{ 437280840171101279UL, 6885928680245806601UL, 6031863836827793624UL, 2698250255620259624UL }); - const auto poseidon2_params_C_61_0 = FF( - uint256_t{ 16961604592822056794UL, 12516844188945734293UL, 2404426354458718742UL, 901141949721836097UL }); - const auto poseidon2_params_C_61_1 = FF( - uint256_t{ 3152898413090790038UL, 16108523113696338432UL, 11492645026300260534UL, 1417477149741880787UL }); - const auto poseidon2_params_C_61_2 = FF( - uint256_t{ 10578217394647568846UL, 6637113826221079930UL, 1364449097464563400UL, 2379869735503406314UL }); - const auto poseidon2_params_C_61_3 = FF( - uint256_t{ 6332539588517624153UL, 17422837239624809585UL, 12296960536238467913UL, 2434905421004621494UL }); - const auto poseidon2_params_C_62_0 = - FF(uint256_t{ 10311634121439582299UL, 2959376558854333994UL, 6697398963915560134UL, 417944321386245900UL }); - const auto poseidon2_params_C_62_1 = FF( - uint256_t{ 16872849857899172004UL, 1640712307042701286UL, 16457516735210998920UL, 1084862449077757478UL }); - const auto poseidon2_params_C_62_2 = - FF(uint256_t{ 10329879351081882815UL, 5178010365334480003UL, 7014208314719145622UL, 385149140585498380UL }); - const auto poseidon2_params_C_62_3 = FF( - uint256_t{ 13199866221884806229UL, 10541991787372042848UL, 14909749656931548440UL, 708152185224876794UL }); - const auto poseidon2_params_C_63_0 = - FF(uint256_t{ 1717216310632203061UL, 17455832130858697862UL, 5278085098799702411UL, 227655898188482835UL }); - const auto poseidon2_params_C_63_1 = FF( - uint256_t{ 17164141620747686731UL, 16689913387728553544UL, 2568326884589391367UL, 3166155980659486882UL }); - const auto poseidon2_params_C_63_2 = FF( - uint256_t{ 1233442753680249567UL, 15490006495937952898UL, 7249042245074469654UL, 2138985910652398451UL }); - const auto poseidon2_params_C_63_3 = - FF(uint256_t{ 4115849303762846724UL, 2230284817967990783UL, 5095423606777193313UL, 1685862792723606183UL }); - const auto poseidon2_EXT_LAYER_0 = (new_term.poseidon2_a_0 + new_term.poseidon2_a_1); - const auto poseidon2_EXT_LAYER_1 = (new_term.poseidon2_a_2 + new_term.poseidon2_a_3); - const auto poseidon2_EXT_LAYER_2 = ((FF(2) * new_term.poseidon2_a_1) + poseidon2_EXT_LAYER_1); - const auto poseidon2_EXT_LAYER_3 = ((FF(2) * new_term.poseidon2_a_3) + poseidon2_EXT_LAYER_0); - const auto poseidon2_ARK_0_0 = (new_term.poseidon2_EXT_LAYER_6 + poseidon2_params_C_0_0); - const auto poseidon2_ARK_0_1 = (new_term.poseidon2_EXT_LAYER_5 + poseidon2_params_C_0_1); - const auto poseidon2_ARK_0_2 = (new_term.poseidon2_EXT_LAYER_7 + poseidon2_params_C_0_2); - const auto poseidon2_ARK_0_3 = (new_term.poseidon2_EXT_LAYER_4 + poseidon2_params_C_0_3); - const auto poseidon2_A_0_0 = - ((((poseidon2_ARK_0_0 * poseidon2_ARK_0_0) * poseidon2_ARK_0_0) * poseidon2_ARK_0_0) * poseidon2_ARK_0_0); - const auto poseidon2_A_0_1 = - ((((poseidon2_ARK_0_1 * poseidon2_ARK_0_1) * poseidon2_ARK_0_1) * poseidon2_ARK_0_1) * poseidon2_ARK_0_1); - const auto poseidon2_A_0_2 = - ((((poseidon2_ARK_0_2 * poseidon2_ARK_0_2) * poseidon2_ARK_0_2) * poseidon2_ARK_0_2) * poseidon2_ARK_0_2); - const auto poseidon2_A_0_3 = - ((((poseidon2_ARK_0_3 * poseidon2_ARK_0_3) * poseidon2_ARK_0_3) * poseidon2_ARK_0_3) * poseidon2_ARK_0_3); - const auto poseidon2_T_0_0 = (poseidon2_A_0_0 + poseidon2_A_0_1); - const auto poseidon2_T_0_1 = (poseidon2_A_0_2 + poseidon2_A_0_3); - const auto poseidon2_T_0_2 = ((FF(2) * poseidon2_A_0_1) + poseidon2_T_0_1); - const auto poseidon2_T_0_3 = ((FF(2) * poseidon2_A_0_3) + poseidon2_T_0_0); - const auto poseidon2_ARK_1_0 = (new_term.poseidon2_T_0_6 + poseidon2_params_C_1_0); - const auto poseidon2_ARK_1_1 = (new_term.poseidon2_T_0_5 + poseidon2_params_C_1_1); - const auto poseidon2_ARK_1_2 = (new_term.poseidon2_T_0_7 + poseidon2_params_C_1_2); - const auto poseidon2_ARK_1_3 = (new_term.poseidon2_T_0_4 + poseidon2_params_C_1_3); - const auto poseidon2_A_1_0 = - ((((poseidon2_ARK_1_0 * poseidon2_ARK_1_0) * poseidon2_ARK_1_0) * poseidon2_ARK_1_0) * poseidon2_ARK_1_0); - const auto poseidon2_A_1_1 = - ((((poseidon2_ARK_1_1 * poseidon2_ARK_1_1) * poseidon2_ARK_1_1) * poseidon2_ARK_1_1) * poseidon2_ARK_1_1); - const auto poseidon2_A_1_2 = - ((((poseidon2_ARK_1_2 * poseidon2_ARK_1_2) * poseidon2_ARK_1_2) * poseidon2_ARK_1_2) * poseidon2_ARK_1_2); - const auto poseidon2_A_1_3 = - ((((poseidon2_ARK_1_3 * poseidon2_ARK_1_3) * poseidon2_ARK_1_3) * poseidon2_ARK_1_3) * poseidon2_ARK_1_3); - const auto poseidon2_T_1_0 = (poseidon2_A_1_0 + poseidon2_A_1_1); - const auto poseidon2_T_1_1 = (poseidon2_A_1_2 + poseidon2_A_1_3); - const auto poseidon2_T_1_2 = ((FF(2) * poseidon2_A_1_1) + poseidon2_T_1_1); - const auto poseidon2_T_1_3 = ((FF(2) * poseidon2_A_1_3) + poseidon2_T_1_0); - const auto poseidon2_ARK_2_0 = (new_term.poseidon2_T_1_6 + poseidon2_params_C_2_0); - const auto poseidon2_ARK_2_1 = (new_term.poseidon2_T_1_5 + poseidon2_params_C_2_1); - const auto poseidon2_ARK_2_2 = (new_term.poseidon2_T_1_7 + poseidon2_params_C_2_2); - const auto poseidon2_ARK_2_3 = (new_term.poseidon2_T_1_4 + poseidon2_params_C_2_3); - const auto poseidon2_A_2_0 = - ((((poseidon2_ARK_2_0 * poseidon2_ARK_2_0) * poseidon2_ARK_2_0) * poseidon2_ARK_2_0) * poseidon2_ARK_2_0); - const auto poseidon2_A_2_1 = - ((((poseidon2_ARK_2_1 * poseidon2_ARK_2_1) * poseidon2_ARK_2_1) * poseidon2_ARK_2_1) * poseidon2_ARK_2_1); - const auto poseidon2_A_2_2 = - ((((poseidon2_ARK_2_2 * poseidon2_ARK_2_2) * poseidon2_ARK_2_2) * poseidon2_ARK_2_2) * poseidon2_ARK_2_2); - const auto poseidon2_A_2_3 = - ((((poseidon2_ARK_2_3 * poseidon2_ARK_2_3) * poseidon2_ARK_2_3) * poseidon2_ARK_2_3) * poseidon2_ARK_2_3); - const auto poseidon2_T_2_0 = (poseidon2_A_2_0 + poseidon2_A_2_1); - const auto poseidon2_T_2_1 = (poseidon2_A_2_2 + poseidon2_A_2_3); - const auto poseidon2_T_2_2 = ((FF(2) * poseidon2_A_2_1) + poseidon2_T_2_1); - const auto poseidon2_T_2_3 = ((FF(2) * poseidon2_A_2_3) + poseidon2_T_2_0); - const auto poseidon2_ARK_3_0 = (new_term.poseidon2_T_2_6 + poseidon2_params_C_3_0); - const auto poseidon2_ARK_3_1 = (new_term.poseidon2_T_2_5 + poseidon2_params_C_3_1); - const auto poseidon2_ARK_3_2 = (new_term.poseidon2_T_2_7 + poseidon2_params_C_3_2); - const auto poseidon2_ARK_3_3 = (new_term.poseidon2_T_2_4 + poseidon2_params_C_3_3); - const auto poseidon2_A_3_0 = - ((((poseidon2_ARK_3_0 * poseidon2_ARK_3_0) * poseidon2_ARK_3_0) * poseidon2_ARK_3_0) * poseidon2_ARK_3_0); - const auto poseidon2_A_3_1 = - ((((poseidon2_ARK_3_1 * poseidon2_ARK_3_1) * poseidon2_ARK_3_1) * poseidon2_ARK_3_1) * poseidon2_ARK_3_1); - const auto poseidon2_A_3_2 = - ((((poseidon2_ARK_3_2 * poseidon2_ARK_3_2) * poseidon2_ARK_3_2) * poseidon2_ARK_3_2) * poseidon2_ARK_3_2); - const auto poseidon2_A_3_3 = - ((((poseidon2_ARK_3_3 * poseidon2_ARK_3_3) * poseidon2_ARK_3_3) * poseidon2_ARK_3_3) * poseidon2_ARK_3_3); - const auto poseidon2_T_3_0 = (poseidon2_A_3_0 + poseidon2_A_3_1); - const auto poseidon2_T_3_1 = (poseidon2_A_3_2 + poseidon2_A_3_3); - const auto poseidon2_T_3_2 = ((FF(2) * poseidon2_A_3_1) + poseidon2_T_3_1); - const auto poseidon2_T_3_3 = ((FF(2) * poseidon2_A_3_3) + poseidon2_T_3_0); - const auto poseidon2_ARK_4_0 = (new_term.poseidon2_T_3_6 + poseidon2_params_C_4_0); - const auto poseidon2_ARK_4_1 = (new_term.poseidon2_T_3_5 + poseidon2_params_C_4_1); - const auto poseidon2_ARK_4_2 = (new_term.poseidon2_T_3_7 + poseidon2_params_C_4_2); - const auto poseidon2_ARK_4_3 = (new_term.poseidon2_T_3_4 + poseidon2_params_C_4_3); - const auto poseidon2_A_4_0 = - ((((poseidon2_ARK_4_0 * poseidon2_ARK_4_0) * poseidon2_ARK_4_0) * poseidon2_ARK_4_0) * poseidon2_ARK_4_0); - const auto poseidon2_A_4_1 = poseidon2_ARK_4_1; - const auto poseidon2_A_4_2 = poseidon2_ARK_4_2; - const auto poseidon2_A_4_3 = poseidon2_ARK_4_3; - const auto poseidon2_SUM_4 = (((poseidon2_A_4_0 + poseidon2_A_4_1) + poseidon2_A_4_2) + poseidon2_A_4_3); - const auto poseidon2_ARK_5_0 = (new_term.poseidon2_B_4_0 + poseidon2_params_C_5_0); - const auto poseidon2_ARK_5_1 = (new_term.poseidon2_B_4_1 + poseidon2_params_C_5_1); - const auto poseidon2_ARK_5_2 = (new_term.poseidon2_B_4_2 + poseidon2_params_C_5_2); - const auto poseidon2_ARK_5_3 = (new_term.poseidon2_B_4_3 + poseidon2_params_C_5_3); - const auto poseidon2_A_5_0 = - ((((poseidon2_ARK_5_0 * poseidon2_ARK_5_0) * poseidon2_ARK_5_0) * poseidon2_ARK_5_0) * poseidon2_ARK_5_0); - const auto poseidon2_A_5_1 = poseidon2_ARK_5_1; - const auto poseidon2_A_5_2 = poseidon2_ARK_5_2; - const auto poseidon2_A_5_3 = poseidon2_ARK_5_3; - const auto poseidon2_SUM_5 = (((poseidon2_A_5_0 + poseidon2_A_5_1) + poseidon2_A_5_2) + poseidon2_A_5_3); - const auto poseidon2_ARK_6_0 = (new_term.poseidon2_B_5_0 + poseidon2_params_C_6_0); - const auto poseidon2_ARK_6_1 = (new_term.poseidon2_B_5_1 + poseidon2_params_C_6_1); - const auto poseidon2_ARK_6_2 = (new_term.poseidon2_B_5_2 + poseidon2_params_C_6_2); - const auto poseidon2_ARK_6_3 = (new_term.poseidon2_B_5_3 + poseidon2_params_C_6_3); - const auto poseidon2_A_6_0 = - ((((poseidon2_ARK_6_0 * poseidon2_ARK_6_0) * poseidon2_ARK_6_0) * poseidon2_ARK_6_0) * poseidon2_ARK_6_0); - const auto poseidon2_A_6_1 = poseidon2_ARK_6_1; - const auto poseidon2_A_6_2 = poseidon2_ARK_6_2; - const auto poseidon2_A_6_3 = poseidon2_ARK_6_3; - const auto poseidon2_SUM_6 = (((poseidon2_A_6_0 + poseidon2_A_6_1) + poseidon2_A_6_2) + poseidon2_A_6_3); - const auto poseidon2_ARK_7_0 = (new_term.poseidon2_B_6_0 + poseidon2_params_C_7_0); - const auto poseidon2_ARK_7_1 = (new_term.poseidon2_B_6_1 + poseidon2_params_C_7_1); - const auto poseidon2_ARK_7_2 = (new_term.poseidon2_B_6_2 + poseidon2_params_C_7_2); - const auto poseidon2_ARK_7_3 = (new_term.poseidon2_B_6_3 + poseidon2_params_C_7_3); - const auto poseidon2_A_7_0 = - ((((poseidon2_ARK_7_0 * poseidon2_ARK_7_0) * poseidon2_ARK_7_0) * poseidon2_ARK_7_0) * poseidon2_ARK_7_0); - const auto poseidon2_A_7_1 = poseidon2_ARK_7_1; - const auto poseidon2_A_7_2 = poseidon2_ARK_7_2; - const auto poseidon2_A_7_3 = poseidon2_ARK_7_3; - const auto poseidon2_SUM_7 = (((poseidon2_A_7_0 + poseidon2_A_7_1) + poseidon2_A_7_2) + poseidon2_A_7_3); - const auto poseidon2_ARK_8_0 = (new_term.poseidon2_B_7_0 + poseidon2_params_C_8_0); - const auto poseidon2_ARK_8_1 = (new_term.poseidon2_B_7_1 + poseidon2_params_C_8_1); - const auto poseidon2_ARK_8_2 = (new_term.poseidon2_B_7_2 + poseidon2_params_C_8_2); - const auto poseidon2_ARK_8_3 = (new_term.poseidon2_B_7_3 + poseidon2_params_C_8_3); - const auto poseidon2_A_8_0 = - ((((poseidon2_ARK_8_0 * poseidon2_ARK_8_0) * poseidon2_ARK_8_0) * poseidon2_ARK_8_0) * poseidon2_ARK_8_0); - const auto poseidon2_A_8_1 = poseidon2_ARK_8_1; - const auto poseidon2_A_8_2 = poseidon2_ARK_8_2; - const auto poseidon2_A_8_3 = poseidon2_ARK_8_3; - const auto poseidon2_SUM_8 = (((poseidon2_A_8_0 + poseidon2_A_8_1) + poseidon2_A_8_2) + poseidon2_A_8_3); - const auto poseidon2_ARK_9_0 = (new_term.poseidon2_B_8_0 + poseidon2_params_C_9_0); - const auto poseidon2_ARK_9_1 = (new_term.poseidon2_B_8_1 + poseidon2_params_C_9_1); - const auto poseidon2_ARK_9_2 = (new_term.poseidon2_B_8_2 + poseidon2_params_C_9_2); - const auto poseidon2_ARK_9_3 = (new_term.poseidon2_B_8_3 + poseidon2_params_C_9_3); - const auto poseidon2_A_9_0 = - ((((poseidon2_ARK_9_0 * poseidon2_ARK_9_0) * poseidon2_ARK_9_0) * poseidon2_ARK_9_0) * poseidon2_ARK_9_0); - const auto poseidon2_A_9_1 = poseidon2_ARK_9_1; - const auto poseidon2_A_9_2 = poseidon2_ARK_9_2; - const auto poseidon2_A_9_3 = poseidon2_ARK_9_3; - const auto poseidon2_SUM_9 = (((poseidon2_A_9_0 + poseidon2_A_9_1) + poseidon2_A_9_2) + poseidon2_A_9_3); - const auto poseidon2_ARK_10_0 = (new_term.poseidon2_B_9_0 + poseidon2_params_C_10_0); - const auto poseidon2_ARK_10_1 = (new_term.poseidon2_B_9_1 + poseidon2_params_C_10_1); - const auto poseidon2_ARK_10_2 = (new_term.poseidon2_B_9_2 + poseidon2_params_C_10_2); - const auto poseidon2_ARK_10_3 = (new_term.poseidon2_B_9_3 + poseidon2_params_C_10_3); - const auto poseidon2_A_10_0 = - ((((poseidon2_ARK_10_0 * poseidon2_ARK_10_0) * poseidon2_ARK_10_0) * poseidon2_ARK_10_0) * - poseidon2_ARK_10_0); - const auto poseidon2_A_10_1 = poseidon2_ARK_10_1; - const auto poseidon2_A_10_2 = poseidon2_ARK_10_2; - const auto poseidon2_A_10_3 = poseidon2_ARK_10_3; - const auto poseidon2_SUM_10 = (((poseidon2_A_10_0 + poseidon2_A_10_1) + poseidon2_A_10_2) + poseidon2_A_10_3); - const auto poseidon2_ARK_11_0 = (new_term.poseidon2_B_10_0 + poseidon2_params_C_11_0); - const auto poseidon2_ARK_11_1 = (new_term.poseidon2_B_10_1 + poseidon2_params_C_11_1); - const auto poseidon2_ARK_11_2 = (new_term.poseidon2_B_10_2 + poseidon2_params_C_11_2); - const auto poseidon2_ARK_11_3 = (new_term.poseidon2_B_10_3 + poseidon2_params_C_11_3); - const auto poseidon2_A_11_0 = - ((((poseidon2_ARK_11_0 * poseidon2_ARK_11_0) * poseidon2_ARK_11_0) * poseidon2_ARK_11_0) * - poseidon2_ARK_11_0); - const auto poseidon2_A_11_1 = poseidon2_ARK_11_1; - const auto poseidon2_A_11_2 = poseidon2_ARK_11_2; - const auto poseidon2_A_11_3 = poseidon2_ARK_11_3; - const auto poseidon2_SUM_11 = (((poseidon2_A_11_0 + poseidon2_A_11_1) + poseidon2_A_11_2) + poseidon2_A_11_3); - const auto poseidon2_ARK_12_0 = (new_term.poseidon2_B_11_0 + poseidon2_params_C_12_0); - const auto poseidon2_ARK_12_1 = (new_term.poseidon2_B_11_1 + poseidon2_params_C_12_1); - const auto poseidon2_ARK_12_2 = (new_term.poseidon2_B_11_2 + poseidon2_params_C_12_2); - const auto poseidon2_ARK_12_3 = (new_term.poseidon2_B_11_3 + poseidon2_params_C_12_3); - const auto poseidon2_A_12_0 = - ((((poseidon2_ARK_12_0 * poseidon2_ARK_12_0) * poseidon2_ARK_12_0) * poseidon2_ARK_12_0) * - poseidon2_ARK_12_0); - const auto poseidon2_A_12_1 = poseidon2_ARK_12_1; - const auto poseidon2_A_12_2 = poseidon2_ARK_12_2; - const auto poseidon2_A_12_3 = poseidon2_ARK_12_3; - const auto poseidon2_SUM_12 = (((poseidon2_A_12_0 + poseidon2_A_12_1) + poseidon2_A_12_2) + poseidon2_A_12_3); - const auto poseidon2_ARK_13_0 = (new_term.poseidon2_B_12_0 + poseidon2_params_C_13_0); - const auto poseidon2_ARK_13_1 = (new_term.poseidon2_B_12_1 + poseidon2_params_C_13_1); - const auto poseidon2_ARK_13_2 = (new_term.poseidon2_B_12_2 + poseidon2_params_C_13_2); - const auto poseidon2_ARK_13_3 = (new_term.poseidon2_B_12_3 + poseidon2_params_C_13_3); - const auto poseidon2_A_13_0 = - ((((poseidon2_ARK_13_0 * poseidon2_ARK_13_0) * poseidon2_ARK_13_0) * poseidon2_ARK_13_0) * - poseidon2_ARK_13_0); - const auto poseidon2_A_13_1 = poseidon2_ARK_13_1; - const auto poseidon2_A_13_2 = poseidon2_ARK_13_2; - const auto poseidon2_A_13_3 = poseidon2_ARK_13_3; - const auto poseidon2_SUM_13 = (((poseidon2_A_13_0 + poseidon2_A_13_1) + poseidon2_A_13_2) + poseidon2_A_13_3); - const auto poseidon2_ARK_14_0 = (new_term.poseidon2_B_13_0 + poseidon2_params_C_14_0); - const auto poseidon2_ARK_14_1 = (new_term.poseidon2_B_13_1 + poseidon2_params_C_14_1); - const auto poseidon2_ARK_14_2 = (new_term.poseidon2_B_13_2 + poseidon2_params_C_14_2); - const auto poseidon2_ARK_14_3 = (new_term.poseidon2_B_13_3 + poseidon2_params_C_14_3); - const auto poseidon2_A_14_0 = - ((((poseidon2_ARK_14_0 * poseidon2_ARK_14_0) * poseidon2_ARK_14_0) * poseidon2_ARK_14_0) * - poseidon2_ARK_14_0); - const auto poseidon2_A_14_1 = poseidon2_ARK_14_1; - const auto poseidon2_A_14_2 = poseidon2_ARK_14_2; - const auto poseidon2_A_14_3 = poseidon2_ARK_14_3; - const auto poseidon2_SUM_14 = (((poseidon2_A_14_0 + poseidon2_A_14_1) + poseidon2_A_14_2) + poseidon2_A_14_3); - const auto poseidon2_ARK_15_0 = (new_term.poseidon2_B_14_0 + poseidon2_params_C_15_0); - const auto poseidon2_ARK_15_1 = (new_term.poseidon2_B_14_1 + poseidon2_params_C_15_1); - const auto poseidon2_ARK_15_2 = (new_term.poseidon2_B_14_2 + poseidon2_params_C_15_2); - const auto poseidon2_ARK_15_3 = (new_term.poseidon2_B_14_3 + poseidon2_params_C_15_3); - const auto poseidon2_A_15_0 = - ((((poseidon2_ARK_15_0 * poseidon2_ARK_15_0) * poseidon2_ARK_15_0) * poseidon2_ARK_15_0) * - poseidon2_ARK_15_0); - const auto poseidon2_A_15_1 = poseidon2_ARK_15_1; - const auto poseidon2_A_15_2 = poseidon2_ARK_15_2; - const auto poseidon2_A_15_3 = poseidon2_ARK_15_3; - const auto poseidon2_SUM_15 = (((poseidon2_A_15_0 + poseidon2_A_15_1) + poseidon2_A_15_2) + poseidon2_A_15_3); - const auto poseidon2_ARK_16_0 = (new_term.poseidon2_B_15_0 + poseidon2_params_C_16_0); - const auto poseidon2_ARK_16_1 = (new_term.poseidon2_B_15_1 + poseidon2_params_C_16_1); - const auto poseidon2_ARK_16_2 = (new_term.poseidon2_B_15_2 + poseidon2_params_C_16_2); - const auto poseidon2_ARK_16_3 = (new_term.poseidon2_B_15_3 + poseidon2_params_C_16_3); - const auto poseidon2_A_16_0 = - ((((poseidon2_ARK_16_0 * poseidon2_ARK_16_0) * poseidon2_ARK_16_0) * poseidon2_ARK_16_0) * - poseidon2_ARK_16_0); - const auto poseidon2_A_16_1 = poseidon2_ARK_16_1; - const auto poseidon2_A_16_2 = poseidon2_ARK_16_2; - const auto poseidon2_A_16_3 = poseidon2_ARK_16_3; - const auto poseidon2_SUM_16 = (((poseidon2_A_16_0 + poseidon2_A_16_1) + poseidon2_A_16_2) + poseidon2_A_16_3); - const auto poseidon2_ARK_17_0 = (new_term.poseidon2_B_16_0 + poseidon2_params_C_17_0); - const auto poseidon2_ARK_17_1 = (new_term.poseidon2_B_16_1 + poseidon2_params_C_17_1); - const auto poseidon2_ARK_17_2 = (new_term.poseidon2_B_16_2 + poseidon2_params_C_17_2); - const auto poseidon2_ARK_17_3 = (new_term.poseidon2_B_16_3 + poseidon2_params_C_17_3); - const auto poseidon2_A_17_0 = - ((((poseidon2_ARK_17_0 * poseidon2_ARK_17_0) * poseidon2_ARK_17_0) * poseidon2_ARK_17_0) * - poseidon2_ARK_17_0); - const auto poseidon2_A_17_1 = poseidon2_ARK_17_1; - const auto poseidon2_A_17_2 = poseidon2_ARK_17_2; - const auto poseidon2_A_17_3 = poseidon2_ARK_17_3; - const auto poseidon2_SUM_17 = (((poseidon2_A_17_0 + poseidon2_A_17_1) + poseidon2_A_17_2) + poseidon2_A_17_3); - const auto poseidon2_ARK_18_0 = (new_term.poseidon2_B_17_0 + poseidon2_params_C_18_0); - const auto poseidon2_ARK_18_1 = (new_term.poseidon2_B_17_1 + poseidon2_params_C_18_1); - const auto poseidon2_ARK_18_2 = (new_term.poseidon2_B_17_2 + poseidon2_params_C_18_2); - const auto poseidon2_ARK_18_3 = (new_term.poseidon2_B_17_3 + poseidon2_params_C_18_3); - const auto poseidon2_A_18_0 = - ((((poseidon2_ARK_18_0 * poseidon2_ARK_18_0) * poseidon2_ARK_18_0) * poseidon2_ARK_18_0) * - poseidon2_ARK_18_0); - const auto poseidon2_A_18_1 = poseidon2_ARK_18_1; - const auto poseidon2_A_18_2 = poseidon2_ARK_18_2; - const auto poseidon2_A_18_3 = poseidon2_ARK_18_3; - const auto poseidon2_SUM_18 = (((poseidon2_A_18_0 + poseidon2_A_18_1) + poseidon2_A_18_2) + poseidon2_A_18_3); - const auto poseidon2_ARK_19_0 = (new_term.poseidon2_B_18_0 + poseidon2_params_C_19_0); - const auto poseidon2_ARK_19_1 = (new_term.poseidon2_B_18_1 + poseidon2_params_C_19_1); - const auto poseidon2_ARK_19_2 = (new_term.poseidon2_B_18_2 + poseidon2_params_C_19_2); - const auto poseidon2_ARK_19_3 = (new_term.poseidon2_B_18_3 + poseidon2_params_C_19_3); - const auto poseidon2_A_19_0 = - ((((poseidon2_ARK_19_0 * poseidon2_ARK_19_0) * poseidon2_ARK_19_0) * poseidon2_ARK_19_0) * - poseidon2_ARK_19_0); - const auto poseidon2_A_19_1 = poseidon2_ARK_19_1; - const auto poseidon2_A_19_2 = poseidon2_ARK_19_2; - const auto poseidon2_A_19_3 = poseidon2_ARK_19_3; - const auto poseidon2_SUM_19 = (((poseidon2_A_19_0 + poseidon2_A_19_1) + poseidon2_A_19_2) + poseidon2_A_19_3); - const auto poseidon2_ARK_20_0 = (new_term.poseidon2_B_19_0 + poseidon2_params_C_20_0); - const auto poseidon2_ARK_20_1 = (new_term.poseidon2_B_19_1 + poseidon2_params_C_20_1); - const auto poseidon2_ARK_20_2 = (new_term.poseidon2_B_19_2 + poseidon2_params_C_20_2); - const auto poseidon2_ARK_20_3 = (new_term.poseidon2_B_19_3 + poseidon2_params_C_20_3); - const auto poseidon2_A_20_0 = - ((((poseidon2_ARK_20_0 * poseidon2_ARK_20_0) * poseidon2_ARK_20_0) * poseidon2_ARK_20_0) * - poseidon2_ARK_20_0); - const auto poseidon2_A_20_1 = poseidon2_ARK_20_1; - const auto poseidon2_A_20_2 = poseidon2_ARK_20_2; - const auto poseidon2_A_20_3 = poseidon2_ARK_20_3; - const auto poseidon2_SUM_20 = (((poseidon2_A_20_0 + poseidon2_A_20_1) + poseidon2_A_20_2) + poseidon2_A_20_3); - const auto poseidon2_ARK_21_0 = (new_term.poseidon2_B_20_0 + poseidon2_params_C_21_0); - const auto poseidon2_ARK_21_1 = (new_term.poseidon2_B_20_1 + poseidon2_params_C_21_1); - const auto poseidon2_ARK_21_2 = (new_term.poseidon2_B_20_2 + poseidon2_params_C_21_2); - const auto poseidon2_ARK_21_3 = (new_term.poseidon2_B_20_3 + poseidon2_params_C_21_3); - const auto poseidon2_A_21_0 = - ((((poseidon2_ARK_21_0 * poseidon2_ARK_21_0) * poseidon2_ARK_21_0) * poseidon2_ARK_21_0) * - poseidon2_ARK_21_0); - const auto poseidon2_A_21_1 = poseidon2_ARK_21_1; - const auto poseidon2_A_21_2 = poseidon2_ARK_21_2; - const auto poseidon2_A_21_3 = poseidon2_ARK_21_3; - const auto poseidon2_SUM_21 = (((poseidon2_A_21_0 + poseidon2_A_21_1) + poseidon2_A_21_2) + poseidon2_A_21_3); - const auto poseidon2_ARK_22_0 = (new_term.poseidon2_B_21_0 + poseidon2_params_C_22_0); - const auto poseidon2_ARK_22_1 = (new_term.poseidon2_B_21_1 + poseidon2_params_C_22_1); - const auto poseidon2_ARK_22_2 = (new_term.poseidon2_B_21_2 + poseidon2_params_C_22_2); - const auto poseidon2_ARK_22_3 = (new_term.poseidon2_B_21_3 + poseidon2_params_C_22_3); - const auto poseidon2_A_22_0 = - ((((poseidon2_ARK_22_0 * poseidon2_ARK_22_0) * poseidon2_ARK_22_0) * poseidon2_ARK_22_0) * - poseidon2_ARK_22_0); - const auto poseidon2_A_22_1 = poseidon2_ARK_22_1; - const auto poseidon2_A_22_2 = poseidon2_ARK_22_2; - const auto poseidon2_A_22_3 = poseidon2_ARK_22_3; - const auto poseidon2_SUM_22 = (((poseidon2_A_22_0 + poseidon2_A_22_1) + poseidon2_A_22_2) + poseidon2_A_22_3); - const auto poseidon2_ARK_23_0 = (new_term.poseidon2_B_22_0 + poseidon2_params_C_23_0); - const auto poseidon2_ARK_23_1 = (new_term.poseidon2_B_22_1 + poseidon2_params_C_23_1); - const auto poseidon2_ARK_23_2 = (new_term.poseidon2_B_22_2 + poseidon2_params_C_23_2); - const auto poseidon2_ARK_23_3 = (new_term.poseidon2_B_22_3 + poseidon2_params_C_23_3); - const auto poseidon2_A_23_0 = - ((((poseidon2_ARK_23_0 * poseidon2_ARK_23_0) * poseidon2_ARK_23_0) * poseidon2_ARK_23_0) * - poseidon2_ARK_23_0); - const auto poseidon2_A_23_1 = poseidon2_ARK_23_1; - const auto poseidon2_A_23_2 = poseidon2_ARK_23_2; - const auto poseidon2_A_23_3 = poseidon2_ARK_23_3; - const auto poseidon2_SUM_23 = (((poseidon2_A_23_0 + poseidon2_A_23_1) + poseidon2_A_23_2) + poseidon2_A_23_3); - const auto poseidon2_ARK_24_0 = (new_term.poseidon2_B_23_0 + poseidon2_params_C_24_0); - const auto poseidon2_ARK_24_1 = (new_term.poseidon2_B_23_1 + poseidon2_params_C_24_1); - const auto poseidon2_ARK_24_2 = (new_term.poseidon2_B_23_2 + poseidon2_params_C_24_2); - const auto poseidon2_ARK_24_3 = (new_term.poseidon2_B_23_3 + poseidon2_params_C_24_3); - const auto poseidon2_A_24_0 = - ((((poseidon2_ARK_24_0 * poseidon2_ARK_24_0) * poseidon2_ARK_24_0) * poseidon2_ARK_24_0) * - poseidon2_ARK_24_0); - const auto poseidon2_A_24_1 = poseidon2_ARK_24_1; - const auto poseidon2_A_24_2 = poseidon2_ARK_24_2; - const auto poseidon2_A_24_3 = poseidon2_ARK_24_3; - const auto poseidon2_SUM_24 = (((poseidon2_A_24_0 + poseidon2_A_24_1) + poseidon2_A_24_2) + poseidon2_A_24_3); - const auto poseidon2_ARK_25_0 = (new_term.poseidon2_B_24_0 + poseidon2_params_C_25_0); - const auto poseidon2_ARK_25_1 = (new_term.poseidon2_B_24_1 + poseidon2_params_C_25_1); - const auto poseidon2_ARK_25_2 = (new_term.poseidon2_B_24_2 + poseidon2_params_C_25_2); - const auto poseidon2_ARK_25_3 = (new_term.poseidon2_B_24_3 + poseidon2_params_C_25_3); - const auto poseidon2_A_25_0 = - ((((poseidon2_ARK_25_0 * poseidon2_ARK_25_0) * poseidon2_ARK_25_0) * poseidon2_ARK_25_0) * - poseidon2_ARK_25_0); - const auto poseidon2_A_25_1 = poseidon2_ARK_25_1; - const auto poseidon2_A_25_2 = poseidon2_ARK_25_2; - const auto poseidon2_A_25_3 = poseidon2_ARK_25_3; - const auto poseidon2_SUM_25 = (((poseidon2_A_25_0 + poseidon2_A_25_1) + poseidon2_A_25_2) + poseidon2_A_25_3); - const auto poseidon2_ARK_26_0 = (new_term.poseidon2_B_25_0 + poseidon2_params_C_26_0); - const auto poseidon2_ARK_26_1 = (new_term.poseidon2_B_25_1 + poseidon2_params_C_26_1); - const auto poseidon2_ARK_26_2 = (new_term.poseidon2_B_25_2 + poseidon2_params_C_26_2); - const auto poseidon2_ARK_26_3 = (new_term.poseidon2_B_25_3 + poseidon2_params_C_26_3); - const auto poseidon2_A_26_0 = - ((((poseidon2_ARK_26_0 * poseidon2_ARK_26_0) * poseidon2_ARK_26_0) * poseidon2_ARK_26_0) * - poseidon2_ARK_26_0); - const auto poseidon2_A_26_1 = poseidon2_ARK_26_1; - const auto poseidon2_A_26_2 = poseidon2_ARK_26_2; - const auto poseidon2_A_26_3 = poseidon2_ARK_26_3; - const auto poseidon2_SUM_26 = (((poseidon2_A_26_0 + poseidon2_A_26_1) + poseidon2_A_26_2) + poseidon2_A_26_3); - const auto poseidon2_ARK_27_0 = (new_term.poseidon2_B_26_0 + poseidon2_params_C_27_0); - const auto poseidon2_ARK_27_1 = (new_term.poseidon2_B_26_1 + poseidon2_params_C_27_1); - const auto poseidon2_ARK_27_2 = (new_term.poseidon2_B_26_2 + poseidon2_params_C_27_2); - const auto poseidon2_ARK_27_3 = (new_term.poseidon2_B_26_3 + poseidon2_params_C_27_3); - const auto poseidon2_A_27_0 = - ((((poseidon2_ARK_27_0 * poseidon2_ARK_27_0) * poseidon2_ARK_27_0) * poseidon2_ARK_27_0) * - poseidon2_ARK_27_0); - const auto poseidon2_A_27_1 = poseidon2_ARK_27_1; - const auto poseidon2_A_27_2 = poseidon2_ARK_27_2; - const auto poseidon2_A_27_3 = poseidon2_ARK_27_3; - const auto poseidon2_SUM_27 = (((poseidon2_A_27_0 + poseidon2_A_27_1) + poseidon2_A_27_2) + poseidon2_A_27_3); - const auto poseidon2_ARK_28_0 = (new_term.poseidon2_B_27_0 + poseidon2_params_C_28_0); - const auto poseidon2_ARK_28_1 = (new_term.poseidon2_B_27_1 + poseidon2_params_C_28_1); - const auto poseidon2_ARK_28_2 = (new_term.poseidon2_B_27_2 + poseidon2_params_C_28_2); - const auto poseidon2_ARK_28_3 = (new_term.poseidon2_B_27_3 + poseidon2_params_C_28_3); - const auto poseidon2_A_28_0 = - ((((poseidon2_ARK_28_0 * poseidon2_ARK_28_0) * poseidon2_ARK_28_0) * poseidon2_ARK_28_0) * - poseidon2_ARK_28_0); - const auto poseidon2_A_28_1 = poseidon2_ARK_28_1; - const auto poseidon2_A_28_2 = poseidon2_ARK_28_2; - const auto poseidon2_A_28_3 = poseidon2_ARK_28_3; - const auto poseidon2_SUM_28 = (((poseidon2_A_28_0 + poseidon2_A_28_1) + poseidon2_A_28_2) + poseidon2_A_28_3); - const auto poseidon2_ARK_29_0 = (new_term.poseidon2_B_28_0 + poseidon2_params_C_29_0); - const auto poseidon2_ARK_29_1 = (new_term.poseidon2_B_28_1 + poseidon2_params_C_29_1); - const auto poseidon2_ARK_29_2 = (new_term.poseidon2_B_28_2 + poseidon2_params_C_29_2); - const auto poseidon2_ARK_29_3 = (new_term.poseidon2_B_28_3 + poseidon2_params_C_29_3); - const auto poseidon2_A_29_0 = - ((((poseidon2_ARK_29_0 * poseidon2_ARK_29_0) * poseidon2_ARK_29_0) * poseidon2_ARK_29_0) * - poseidon2_ARK_29_0); - const auto poseidon2_A_29_1 = poseidon2_ARK_29_1; - const auto poseidon2_A_29_2 = poseidon2_ARK_29_2; - const auto poseidon2_A_29_3 = poseidon2_ARK_29_3; - const auto poseidon2_SUM_29 = (((poseidon2_A_29_0 + poseidon2_A_29_1) + poseidon2_A_29_2) + poseidon2_A_29_3); - const auto poseidon2_ARK_30_0 = (new_term.poseidon2_B_29_0 + poseidon2_params_C_30_0); - const auto poseidon2_ARK_30_1 = (new_term.poseidon2_B_29_1 + poseidon2_params_C_30_1); - const auto poseidon2_ARK_30_2 = (new_term.poseidon2_B_29_2 + poseidon2_params_C_30_2); - const auto poseidon2_ARK_30_3 = (new_term.poseidon2_B_29_3 + poseidon2_params_C_30_3); - const auto poseidon2_A_30_0 = - ((((poseidon2_ARK_30_0 * poseidon2_ARK_30_0) * poseidon2_ARK_30_0) * poseidon2_ARK_30_0) * - poseidon2_ARK_30_0); - const auto poseidon2_A_30_1 = poseidon2_ARK_30_1; - const auto poseidon2_A_30_2 = poseidon2_ARK_30_2; - const auto poseidon2_A_30_3 = poseidon2_ARK_30_3; - const auto poseidon2_SUM_30 = (((poseidon2_A_30_0 + poseidon2_A_30_1) + poseidon2_A_30_2) + poseidon2_A_30_3); - const auto poseidon2_ARK_31_0 = (new_term.poseidon2_B_30_0 + poseidon2_params_C_31_0); - const auto poseidon2_ARK_31_1 = (new_term.poseidon2_B_30_1 + poseidon2_params_C_31_1); - const auto poseidon2_ARK_31_2 = (new_term.poseidon2_B_30_2 + poseidon2_params_C_31_2); - const auto poseidon2_ARK_31_3 = (new_term.poseidon2_B_30_3 + poseidon2_params_C_31_3); - const auto poseidon2_A_31_0 = - ((((poseidon2_ARK_31_0 * poseidon2_ARK_31_0) * poseidon2_ARK_31_0) * poseidon2_ARK_31_0) * - poseidon2_ARK_31_0); - const auto poseidon2_A_31_1 = poseidon2_ARK_31_1; - const auto poseidon2_A_31_2 = poseidon2_ARK_31_2; - const auto poseidon2_A_31_3 = poseidon2_ARK_31_3; - const auto poseidon2_SUM_31 = (((poseidon2_A_31_0 + poseidon2_A_31_1) + poseidon2_A_31_2) + poseidon2_A_31_3); - const auto poseidon2_ARK_32_0 = (new_term.poseidon2_B_31_0 + poseidon2_params_C_32_0); - const auto poseidon2_ARK_32_1 = (new_term.poseidon2_B_31_1 + poseidon2_params_C_32_1); - const auto poseidon2_ARK_32_2 = (new_term.poseidon2_B_31_2 + poseidon2_params_C_32_2); - const auto poseidon2_ARK_32_3 = (new_term.poseidon2_B_31_3 + poseidon2_params_C_32_3); - const auto poseidon2_A_32_0 = - ((((poseidon2_ARK_32_0 * poseidon2_ARK_32_0) * poseidon2_ARK_32_0) * poseidon2_ARK_32_0) * - poseidon2_ARK_32_0); - const auto poseidon2_A_32_1 = poseidon2_ARK_32_1; - const auto poseidon2_A_32_2 = poseidon2_ARK_32_2; - const auto poseidon2_A_32_3 = poseidon2_ARK_32_3; - const auto poseidon2_SUM_32 = (((poseidon2_A_32_0 + poseidon2_A_32_1) + poseidon2_A_32_2) + poseidon2_A_32_3); - const auto poseidon2_ARK_33_0 = (new_term.poseidon2_B_32_0 + poseidon2_params_C_33_0); - const auto poseidon2_ARK_33_1 = (new_term.poseidon2_B_32_1 + poseidon2_params_C_33_1); - const auto poseidon2_ARK_33_2 = (new_term.poseidon2_B_32_2 + poseidon2_params_C_33_2); - const auto poseidon2_ARK_33_3 = (new_term.poseidon2_B_32_3 + poseidon2_params_C_33_3); - const auto poseidon2_A_33_0 = - ((((poseidon2_ARK_33_0 * poseidon2_ARK_33_0) * poseidon2_ARK_33_0) * poseidon2_ARK_33_0) * - poseidon2_ARK_33_0); - const auto poseidon2_A_33_1 = poseidon2_ARK_33_1; - const auto poseidon2_A_33_2 = poseidon2_ARK_33_2; - const auto poseidon2_A_33_3 = poseidon2_ARK_33_3; - const auto poseidon2_SUM_33 = (((poseidon2_A_33_0 + poseidon2_A_33_1) + poseidon2_A_33_2) + poseidon2_A_33_3); - const auto poseidon2_ARK_34_0 = (new_term.poseidon2_B_33_0 + poseidon2_params_C_34_0); - const auto poseidon2_ARK_34_1 = (new_term.poseidon2_B_33_1 + poseidon2_params_C_34_1); - const auto poseidon2_ARK_34_2 = (new_term.poseidon2_B_33_2 + poseidon2_params_C_34_2); - const auto poseidon2_ARK_34_3 = (new_term.poseidon2_B_33_3 + poseidon2_params_C_34_3); - const auto poseidon2_A_34_0 = - ((((poseidon2_ARK_34_0 * poseidon2_ARK_34_0) * poseidon2_ARK_34_0) * poseidon2_ARK_34_0) * - poseidon2_ARK_34_0); - const auto poseidon2_A_34_1 = poseidon2_ARK_34_1; - const auto poseidon2_A_34_2 = poseidon2_ARK_34_2; - const auto poseidon2_A_34_3 = poseidon2_ARK_34_3; - const auto poseidon2_SUM_34 = (((poseidon2_A_34_0 + poseidon2_A_34_1) + poseidon2_A_34_2) + poseidon2_A_34_3); - const auto poseidon2_ARK_35_0 = (new_term.poseidon2_B_34_0 + poseidon2_params_C_35_0); - const auto poseidon2_ARK_35_1 = (new_term.poseidon2_B_34_1 + poseidon2_params_C_35_1); - const auto poseidon2_ARK_35_2 = (new_term.poseidon2_B_34_2 + poseidon2_params_C_35_2); - const auto poseidon2_ARK_35_3 = (new_term.poseidon2_B_34_3 + poseidon2_params_C_35_3); - const auto poseidon2_A_35_0 = - ((((poseidon2_ARK_35_0 * poseidon2_ARK_35_0) * poseidon2_ARK_35_0) * poseidon2_ARK_35_0) * - poseidon2_ARK_35_0); - const auto poseidon2_A_35_1 = poseidon2_ARK_35_1; - const auto poseidon2_A_35_2 = poseidon2_ARK_35_2; - const auto poseidon2_A_35_3 = poseidon2_ARK_35_3; - const auto poseidon2_SUM_35 = (((poseidon2_A_35_0 + poseidon2_A_35_1) + poseidon2_A_35_2) + poseidon2_A_35_3); - const auto poseidon2_ARK_36_0 = (new_term.poseidon2_B_35_0 + poseidon2_params_C_36_0); - const auto poseidon2_ARK_36_1 = (new_term.poseidon2_B_35_1 + poseidon2_params_C_36_1); - const auto poseidon2_ARK_36_2 = (new_term.poseidon2_B_35_2 + poseidon2_params_C_36_2); - const auto poseidon2_ARK_36_3 = (new_term.poseidon2_B_35_3 + poseidon2_params_C_36_3); - const auto poseidon2_A_36_0 = - ((((poseidon2_ARK_36_0 * poseidon2_ARK_36_0) * poseidon2_ARK_36_0) * poseidon2_ARK_36_0) * - poseidon2_ARK_36_0); - const auto poseidon2_A_36_1 = poseidon2_ARK_36_1; - const auto poseidon2_A_36_2 = poseidon2_ARK_36_2; - const auto poseidon2_A_36_3 = poseidon2_ARK_36_3; - const auto poseidon2_SUM_36 = (((poseidon2_A_36_0 + poseidon2_A_36_1) + poseidon2_A_36_2) + poseidon2_A_36_3); - const auto poseidon2_ARK_37_0 = (new_term.poseidon2_B_36_0 + poseidon2_params_C_37_0); - const auto poseidon2_ARK_37_1 = (new_term.poseidon2_B_36_1 + poseidon2_params_C_37_1); - const auto poseidon2_ARK_37_2 = (new_term.poseidon2_B_36_2 + poseidon2_params_C_37_2); - const auto poseidon2_ARK_37_3 = (new_term.poseidon2_B_36_3 + poseidon2_params_C_37_3); - const auto poseidon2_A_37_0 = - ((((poseidon2_ARK_37_0 * poseidon2_ARK_37_0) * poseidon2_ARK_37_0) * poseidon2_ARK_37_0) * - poseidon2_ARK_37_0); - const auto poseidon2_A_37_1 = poseidon2_ARK_37_1; - const auto poseidon2_A_37_2 = poseidon2_ARK_37_2; - const auto poseidon2_A_37_3 = poseidon2_ARK_37_3; - const auto poseidon2_SUM_37 = (((poseidon2_A_37_0 + poseidon2_A_37_1) + poseidon2_A_37_2) + poseidon2_A_37_3); - const auto poseidon2_ARK_38_0 = (new_term.poseidon2_B_37_0 + poseidon2_params_C_38_0); - const auto poseidon2_ARK_38_1 = (new_term.poseidon2_B_37_1 + poseidon2_params_C_38_1); - const auto poseidon2_ARK_38_2 = (new_term.poseidon2_B_37_2 + poseidon2_params_C_38_2); - const auto poseidon2_ARK_38_3 = (new_term.poseidon2_B_37_3 + poseidon2_params_C_38_3); - const auto poseidon2_A_38_0 = - ((((poseidon2_ARK_38_0 * poseidon2_ARK_38_0) * poseidon2_ARK_38_0) * poseidon2_ARK_38_0) * - poseidon2_ARK_38_0); - const auto poseidon2_A_38_1 = poseidon2_ARK_38_1; - const auto poseidon2_A_38_2 = poseidon2_ARK_38_2; - const auto poseidon2_A_38_3 = poseidon2_ARK_38_3; - const auto poseidon2_SUM_38 = (((poseidon2_A_38_0 + poseidon2_A_38_1) + poseidon2_A_38_2) + poseidon2_A_38_3); - const auto poseidon2_ARK_39_0 = (new_term.poseidon2_B_38_0 + poseidon2_params_C_39_0); - const auto poseidon2_ARK_39_1 = (new_term.poseidon2_B_38_1 + poseidon2_params_C_39_1); - const auto poseidon2_ARK_39_2 = (new_term.poseidon2_B_38_2 + poseidon2_params_C_39_2); - const auto poseidon2_ARK_39_3 = (new_term.poseidon2_B_38_3 + poseidon2_params_C_39_3); - const auto poseidon2_A_39_0 = - ((((poseidon2_ARK_39_0 * poseidon2_ARK_39_0) * poseidon2_ARK_39_0) * poseidon2_ARK_39_0) * - poseidon2_ARK_39_0); - const auto poseidon2_A_39_1 = poseidon2_ARK_39_1; - const auto poseidon2_A_39_2 = poseidon2_ARK_39_2; - const auto poseidon2_A_39_3 = poseidon2_ARK_39_3; - const auto poseidon2_SUM_39 = (((poseidon2_A_39_0 + poseidon2_A_39_1) + poseidon2_A_39_2) + poseidon2_A_39_3); - const auto poseidon2_ARK_40_0 = (new_term.poseidon2_B_39_0 + poseidon2_params_C_40_0); - const auto poseidon2_ARK_40_1 = (new_term.poseidon2_B_39_1 + poseidon2_params_C_40_1); - const auto poseidon2_ARK_40_2 = (new_term.poseidon2_B_39_2 + poseidon2_params_C_40_2); - const auto poseidon2_ARK_40_3 = (new_term.poseidon2_B_39_3 + poseidon2_params_C_40_3); - const auto poseidon2_A_40_0 = - ((((poseidon2_ARK_40_0 * poseidon2_ARK_40_0) * poseidon2_ARK_40_0) * poseidon2_ARK_40_0) * - poseidon2_ARK_40_0); - const auto poseidon2_A_40_1 = poseidon2_ARK_40_1; - const auto poseidon2_A_40_2 = poseidon2_ARK_40_2; - const auto poseidon2_A_40_3 = poseidon2_ARK_40_3; - const auto poseidon2_SUM_40 = (((poseidon2_A_40_0 + poseidon2_A_40_1) + poseidon2_A_40_2) + poseidon2_A_40_3); - const auto poseidon2_ARK_41_0 = (new_term.poseidon2_B_40_0 + poseidon2_params_C_41_0); - const auto poseidon2_ARK_41_1 = (new_term.poseidon2_B_40_1 + poseidon2_params_C_41_1); - const auto poseidon2_ARK_41_2 = (new_term.poseidon2_B_40_2 + poseidon2_params_C_41_2); - const auto poseidon2_ARK_41_3 = (new_term.poseidon2_B_40_3 + poseidon2_params_C_41_3); - const auto poseidon2_A_41_0 = - ((((poseidon2_ARK_41_0 * poseidon2_ARK_41_0) * poseidon2_ARK_41_0) * poseidon2_ARK_41_0) * - poseidon2_ARK_41_0); - const auto poseidon2_A_41_1 = poseidon2_ARK_41_1; - const auto poseidon2_A_41_2 = poseidon2_ARK_41_2; - const auto poseidon2_A_41_3 = poseidon2_ARK_41_3; - const auto poseidon2_SUM_41 = (((poseidon2_A_41_0 + poseidon2_A_41_1) + poseidon2_A_41_2) + poseidon2_A_41_3); - const auto poseidon2_ARK_42_0 = (new_term.poseidon2_B_41_0 + poseidon2_params_C_42_0); - const auto poseidon2_ARK_42_1 = (new_term.poseidon2_B_41_1 + poseidon2_params_C_42_1); - const auto poseidon2_ARK_42_2 = (new_term.poseidon2_B_41_2 + poseidon2_params_C_42_2); - const auto poseidon2_ARK_42_3 = (new_term.poseidon2_B_41_3 + poseidon2_params_C_42_3); - const auto poseidon2_A_42_0 = - ((((poseidon2_ARK_42_0 * poseidon2_ARK_42_0) * poseidon2_ARK_42_0) * poseidon2_ARK_42_0) * - poseidon2_ARK_42_0); - const auto poseidon2_A_42_1 = poseidon2_ARK_42_1; - const auto poseidon2_A_42_2 = poseidon2_ARK_42_2; - const auto poseidon2_A_42_3 = poseidon2_ARK_42_3; - const auto poseidon2_SUM_42 = (((poseidon2_A_42_0 + poseidon2_A_42_1) + poseidon2_A_42_2) + poseidon2_A_42_3); - const auto poseidon2_ARK_43_0 = (new_term.poseidon2_B_42_0 + poseidon2_params_C_43_0); - const auto poseidon2_ARK_43_1 = (new_term.poseidon2_B_42_1 + poseidon2_params_C_43_1); - const auto poseidon2_ARK_43_2 = (new_term.poseidon2_B_42_2 + poseidon2_params_C_43_2); - const auto poseidon2_ARK_43_3 = (new_term.poseidon2_B_42_3 + poseidon2_params_C_43_3); - const auto poseidon2_A_43_0 = - ((((poseidon2_ARK_43_0 * poseidon2_ARK_43_0) * poseidon2_ARK_43_0) * poseidon2_ARK_43_0) * - poseidon2_ARK_43_0); - const auto poseidon2_A_43_1 = poseidon2_ARK_43_1; - const auto poseidon2_A_43_2 = poseidon2_ARK_43_2; - const auto poseidon2_A_43_3 = poseidon2_ARK_43_3; - const auto poseidon2_SUM_43 = (((poseidon2_A_43_0 + poseidon2_A_43_1) + poseidon2_A_43_2) + poseidon2_A_43_3); - const auto poseidon2_ARK_44_0 = (new_term.poseidon2_B_43_0 + poseidon2_params_C_44_0); - const auto poseidon2_ARK_44_1 = (new_term.poseidon2_B_43_1 + poseidon2_params_C_44_1); - const auto poseidon2_ARK_44_2 = (new_term.poseidon2_B_43_2 + poseidon2_params_C_44_2); - const auto poseidon2_ARK_44_3 = (new_term.poseidon2_B_43_3 + poseidon2_params_C_44_3); - const auto poseidon2_A_44_0 = - ((((poseidon2_ARK_44_0 * poseidon2_ARK_44_0) * poseidon2_ARK_44_0) * poseidon2_ARK_44_0) * - poseidon2_ARK_44_0); - const auto poseidon2_A_44_1 = poseidon2_ARK_44_1; - const auto poseidon2_A_44_2 = poseidon2_ARK_44_2; - const auto poseidon2_A_44_3 = poseidon2_ARK_44_3; - const auto poseidon2_SUM_44 = (((poseidon2_A_44_0 + poseidon2_A_44_1) + poseidon2_A_44_2) + poseidon2_A_44_3); - const auto poseidon2_ARK_45_0 = (new_term.poseidon2_B_44_0 + poseidon2_params_C_45_0); - const auto poseidon2_ARK_45_1 = (new_term.poseidon2_B_44_1 + poseidon2_params_C_45_1); - const auto poseidon2_ARK_45_2 = (new_term.poseidon2_B_44_2 + poseidon2_params_C_45_2); - const auto poseidon2_ARK_45_3 = (new_term.poseidon2_B_44_3 + poseidon2_params_C_45_3); - const auto poseidon2_A_45_0 = - ((((poseidon2_ARK_45_0 * poseidon2_ARK_45_0) * poseidon2_ARK_45_0) * poseidon2_ARK_45_0) * - poseidon2_ARK_45_0); - const auto poseidon2_A_45_1 = poseidon2_ARK_45_1; - const auto poseidon2_A_45_2 = poseidon2_ARK_45_2; - const auto poseidon2_A_45_3 = poseidon2_ARK_45_3; - const auto poseidon2_SUM_45 = (((poseidon2_A_45_0 + poseidon2_A_45_1) + poseidon2_A_45_2) + poseidon2_A_45_3); - const auto poseidon2_ARK_46_0 = (new_term.poseidon2_B_45_0 + poseidon2_params_C_46_0); - const auto poseidon2_ARK_46_1 = (new_term.poseidon2_B_45_1 + poseidon2_params_C_46_1); - const auto poseidon2_ARK_46_2 = (new_term.poseidon2_B_45_2 + poseidon2_params_C_46_2); - const auto poseidon2_ARK_46_3 = (new_term.poseidon2_B_45_3 + poseidon2_params_C_46_3); - const auto poseidon2_A_46_0 = - ((((poseidon2_ARK_46_0 * poseidon2_ARK_46_0) * poseidon2_ARK_46_0) * poseidon2_ARK_46_0) * - poseidon2_ARK_46_0); - const auto poseidon2_A_46_1 = poseidon2_ARK_46_1; - const auto poseidon2_A_46_2 = poseidon2_ARK_46_2; - const auto poseidon2_A_46_3 = poseidon2_ARK_46_3; - const auto poseidon2_SUM_46 = (((poseidon2_A_46_0 + poseidon2_A_46_1) + poseidon2_A_46_2) + poseidon2_A_46_3); - const auto poseidon2_ARK_47_0 = (new_term.poseidon2_B_46_0 + poseidon2_params_C_47_0); - const auto poseidon2_ARK_47_1 = (new_term.poseidon2_B_46_1 + poseidon2_params_C_47_1); - const auto poseidon2_ARK_47_2 = (new_term.poseidon2_B_46_2 + poseidon2_params_C_47_2); - const auto poseidon2_ARK_47_3 = (new_term.poseidon2_B_46_3 + poseidon2_params_C_47_3); - const auto poseidon2_A_47_0 = - ((((poseidon2_ARK_47_0 * poseidon2_ARK_47_0) * poseidon2_ARK_47_0) * poseidon2_ARK_47_0) * - poseidon2_ARK_47_0); - const auto poseidon2_A_47_1 = poseidon2_ARK_47_1; - const auto poseidon2_A_47_2 = poseidon2_ARK_47_2; - const auto poseidon2_A_47_3 = poseidon2_ARK_47_3; - const auto poseidon2_SUM_47 = (((poseidon2_A_47_0 + poseidon2_A_47_1) + poseidon2_A_47_2) + poseidon2_A_47_3); - const auto poseidon2_ARK_48_0 = (new_term.poseidon2_B_47_0 + poseidon2_params_C_48_0); - const auto poseidon2_ARK_48_1 = (new_term.poseidon2_B_47_1 + poseidon2_params_C_48_1); - const auto poseidon2_ARK_48_2 = (new_term.poseidon2_B_47_2 + poseidon2_params_C_48_2); - const auto poseidon2_ARK_48_3 = (new_term.poseidon2_B_47_3 + poseidon2_params_C_48_3); - const auto poseidon2_A_48_0 = - ((((poseidon2_ARK_48_0 * poseidon2_ARK_48_0) * poseidon2_ARK_48_0) * poseidon2_ARK_48_0) * - poseidon2_ARK_48_0); - const auto poseidon2_A_48_1 = poseidon2_ARK_48_1; - const auto poseidon2_A_48_2 = poseidon2_ARK_48_2; - const auto poseidon2_A_48_3 = poseidon2_ARK_48_3; - const auto poseidon2_SUM_48 = (((poseidon2_A_48_0 + poseidon2_A_48_1) + poseidon2_A_48_2) + poseidon2_A_48_3); - const auto poseidon2_ARK_49_0 = (new_term.poseidon2_B_48_0 + poseidon2_params_C_49_0); - const auto poseidon2_ARK_49_1 = (new_term.poseidon2_B_48_1 + poseidon2_params_C_49_1); - const auto poseidon2_ARK_49_2 = (new_term.poseidon2_B_48_2 + poseidon2_params_C_49_2); - const auto poseidon2_ARK_49_3 = (new_term.poseidon2_B_48_3 + poseidon2_params_C_49_3); - const auto poseidon2_A_49_0 = - ((((poseidon2_ARK_49_0 * poseidon2_ARK_49_0) * poseidon2_ARK_49_0) * poseidon2_ARK_49_0) * - poseidon2_ARK_49_0); - const auto poseidon2_A_49_1 = poseidon2_ARK_49_1; - const auto poseidon2_A_49_2 = poseidon2_ARK_49_2; - const auto poseidon2_A_49_3 = poseidon2_ARK_49_3; - const auto poseidon2_SUM_49 = (((poseidon2_A_49_0 + poseidon2_A_49_1) + poseidon2_A_49_2) + poseidon2_A_49_3); - const auto poseidon2_ARK_50_0 = (new_term.poseidon2_B_49_0 + poseidon2_params_C_50_0); - const auto poseidon2_ARK_50_1 = (new_term.poseidon2_B_49_1 + poseidon2_params_C_50_1); - const auto poseidon2_ARK_50_2 = (new_term.poseidon2_B_49_2 + poseidon2_params_C_50_2); - const auto poseidon2_ARK_50_3 = (new_term.poseidon2_B_49_3 + poseidon2_params_C_50_3); - const auto poseidon2_A_50_0 = - ((((poseidon2_ARK_50_0 * poseidon2_ARK_50_0) * poseidon2_ARK_50_0) * poseidon2_ARK_50_0) * - poseidon2_ARK_50_0); - const auto poseidon2_A_50_1 = poseidon2_ARK_50_1; - const auto poseidon2_A_50_2 = poseidon2_ARK_50_2; - const auto poseidon2_A_50_3 = poseidon2_ARK_50_3; - const auto poseidon2_SUM_50 = (((poseidon2_A_50_0 + poseidon2_A_50_1) + poseidon2_A_50_2) + poseidon2_A_50_3); - const auto poseidon2_ARK_51_0 = (new_term.poseidon2_B_50_0 + poseidon2_params_C_51_0); - const auto poseidon2_ARK_51_1 = (new_term.poseidon2_B_50_1 + poseidon2_params_C_51_1); - const auto poseidon2_ARK_51_2 = (new_term.poseidon2_B_50_2 + poseidon2_params_C_51_2); - const auto poseidon2_ARK_51_3 = (new_term.poseidon2_B_50_3 + poseidon2_params_C_51_3); - const auto poseidon2_A_51_0 = - ((((poseidon2_ARK_51_0 * poseidon2_ARK_51_0) * poseidon2_ARK_51_0) * poseidon2_ARK_51_0) * - poseidon2_ARK_51_0); - const auto poseidon2_A_51_1 = poseidon2_ARK_51_1; - const auto poseidon2_A_51_2 = poseidon2_ARK_51_2; - const auto poseidon2_A_51_3 = poseidon2_ARK_51_3; - const auto poseidon2_SUM_51 = (((poseidon2_A_51_0 + poseidon2_A_51_1) + poseidon2_A_51_2) + poseidon2_A_51_3); - const auto poseidon2_ARK_52_0 = (new_term.poseidon2_B_51_0 + poseidon2_params_C_52_0); - const auto poseidon2_ARK_52_1 = (new_term.poseidon2_B_51_1 + poseidon2_params_C_52_1); - const auto poseidon2_ARK_52_2 = (new_term.poseidon2_B_51_2 + poseidon2_params_C_52_2); - const auto poseidon2_ARK_52_3 = (new_term.poseidon2_B_51_3 + poseidon2_params_C_52_3); - const auto poseidon2_A_52_0 = - ((((poseidon2_ARK_52_0 * poseidon2_ARK_52_0) * poseidon2_ARK_52_0) * poseidon2_ARK_52_0) * - poseidon2_ARK_52_0); - const auto poseidon2_A_52_1 = poseidon2_ARK_52_1; - const auto poseidon2_A_52_2 = poseidon2_ARK_52_2; - const auto poseidon2_A_52_3 = poseidon2_ARK_52_3; - const auto poseidon2_SUM_52 = (((poseidon2_A_52_0 + poseidon2_A_52_1) + poseidon2_A_52_2) + poseidon2_A_52_3); - const auto poseidon2_ARK_53_0 = (new_term.poseidon2_B_52_0 + poseidon2_params_C_53_0); - const auto poseidon2_ARK_53_1 = (new_term.poseidon2_B_52_1 + poseidon2_params_C_53_1); - const auto poseidon2_ARK_53_2 = (new_term.poseidon2_B_52_2 + poseidon2_params_C_53_2); - const auto poseidon2_ARK_53_3 = (new_term.poseidon2_B_52_3 + poseidon2_params_C_53_3); - const auto poseidon2_A_53_0 = - ((((poseidon2_ARK_53_0 * poseidon2_ARK_53_0) * poseidon2_ARK_53_0) * poseidon2_ARK_53_0) * - poseidon2_ARK_53_0); - const auto poseidon2_A_53_1 = poseidon2_ARK_53_1; - const auto poseidon2_A_53_2 = poseidon2_ARK_53_2; - const auto poseidon2_A_53_3 = poseidon2_ARK_53_3; - const auto poseidon2_SUM_53 = (((poseidon2_A_53_0 + poseidon2_A_53_1) + poseidon2_A_53_2) + poseidon2_A_53_3); - const auto poseidon2_ARK_54_0 = (new_term.poseidon2_B_53_0 + poseidon2_params_C_54_0); - const auto poseidon2_ARK_54_1 = (new_term.poseidon2_B_53_1 + poseidon2_params_C_54_1); - const auto poseidon2_ARK_54_2 = (new_term.poseidon2_B_53_2 + poseidon2_params_C_54_2); - const auto poseidon2_ARK_54_3 = (new_term.poseidon2_B_53_3 + poseidon2_params_C_54_3); - const auto poseidon2_A_54_0 = - ((((poseidon2_ARK_54_0 * poseidon2_ARK_54_0) * poseidon2_ARK_54_0) * poseidon2_ARK_54_0) * - poseidon2_ARK_54_0); - const auto poseidon2_A_54_1 = poseidon2_ARK_54_1; - const auto poseidon2_A_54_2 = poseidon2_ARK_54_2; - const auto poseidon2_A_54_3 = poseidon2_ARK_54_3; - const auto poseidon2_SUM_54 = (((poseidon2_A_54_0 + poseidon2_A_54_1) + poseidon2_A_54_2) + poseidon2_A_54_3); - const auto poseidon2_ARK_55_0 = (new_term.poseidon2_B_54_0 + poseidon2_params_C_55_0); - const auto poseidon2_ARK_55_1 = (new_term.poseidon2_B_54_1 + poseidon2_params_C_55_1); - const auto poseidon2_ARK_55_2 = (new_term.poseidon2_B_54_2 + poseidon2_params_C_55_2); - const auto poseidon2_ARK_55_3 = (new_term.poseidon2_B_54_3 + poseidon2_params_C_55_3); - const auto poseidon2_A_55_0 = - ((((poseidon2_ARK_55_0 * poseidon2_ARK_55_0) * poseidon2_ARK_55_0) * poseidon2_ARK_55_0) * - poseidon2_ARK_55_0); - const auto poseidon2_A_55_1 = poseidon2_ARK_55_1; - const auto poseidon2_A_55_2 = poseidon2_ARK_55_2; - const auto poseidon2_A_55_3 = poseidon2_ARK_55_3; - const auto poseidon2_SUM_55 = (((poseidon2_A_55_0 + poseidon2_A_55_1) + poseidon2_A_55_2) + poseidon2_A_55_3); - const auto poseidon2_ARK_56_0 = (new_term.poseidon2_B_55_0 + poseidon2_params_C_56_0); - const auto poseidon2_ARK_56_1 = (new_term.poseidon2_B_55_1 + poseidon2_params_C_56_1); - const auto poseidon2_ARK_56_2 = (new_term.poseidon2_B_55_2 + poseidon2_params_C_56_2); - const auto poseidon2_ARK_56_3 = (new_term.poseidon2_B_55_3 + poseidon2_params_C_56_3); - const auto poseidon2_A_56_0 = - ((((poseidon2_ARK_56_0 * poseidon2_ARK_56_0) * poseidon2_ARK_56_0) * poseidon2_ARK_56_0) * - poseidon2_ARK_56_0); - const auto poseidon2_A_56_1 = poseidon2_ARK_56_1; - const auto poseidon2_A_56_2 = poseidon2_ARK_56_2; - const auto poseidon2_A_56_3 = poseidon2_ARK_56_3; - const auto poseidon2_SUM_56 = (((poseidon2_A_56_0 + poseidon2_A_56_1) + poseidon2_A_56_2) + poseidon2_A_56_3); - const auto poseidon2_ARK_57_0 = (new_term.poseidon2_B_56_0 + poseidon2_params_C_57_0); - const auto poseidon2_ARK_57_1 = (new_term.poseidon2_B_56_1 + poseidon2_params_C_57_1); - const auto poseidon2_ARK_57_2 = (new_term.poseidon2_B_56_2 + poseidon2_params_C_57_2); - const auto poseidon2_ARK_57_3 = (new_term.poseidon2_B_56_3 + poseidon2_params_C_57_3); - const auto poseidon2_A_57_0 = - ((((poseidon2_ARK_57_0 * poseidon2_ARK_57_0) * poseidon2_ARK_57_0) * poseidon2_ARK_57_0) * - poseidon2_ARK_57_0); - const auto poseidon2_A_57_1 = poseidon2_ARK_57_1; - const auto poseidon2_A_57_2 = poseidon2_ARK_57_2; - const auto poseidon2_A_57_3 = poseidon2_ARK_57_3; - const auto poseidon2_SUM_57 = (((poseidon2_A_57_0 + poseidon2_A_57_1) + poseidon2_A_57_2) + poseidon2_A_57_3); - const auto poseidon2_ARK_58_0 = (new_term.poseidon2_B_57_0 + poseidon2_params_C_58_0); - const auto poseidon2_ARK_58_1 = (new_term.poseidon2_B_57_1 + poseidon2_params_C_58_1); - const auto poseidon2_ARK_58_2 = (new_term.poseidon2_B_57_2 + poseidon2_params_C_58_2); - const auto poseidon2_ARK_58_3 = (new_term.poseidon2_B_57_3 + poseidon2_params_C_58_3); - const auto poseidon2_A_58_0 = - ((((poseidon2_ARK_58_0 * poseidon2_ARK_58_0) * poseidon2_ARK_58_0) * poseidon2_ARK_58_0) * - poseidon2_ARK_58_0); - const auto poseidon2_A_58_1 = poseidon2_ARK_58_1; - const auto poseidon2_A_58_2 = poseidon2_ARK_58_2; - const auto poseidon2_A_58_3 = poseidon2_ARK_58_3; - const auto poseidon2_SUM_58 = (((poseidon2_A_58_0 + poseidon2_A_58_1) + poseidon2_A_58_2) + poseidon2_A_58_3); - const auto poseidon2_ARK_59_0 = (new_term.poseidon2_B_58_0 + poseidon2_params_C_59_0); - const auto poseidon2_ARK_59_1 = (new_term.poseidon2_B_58_1 + poseidon2_params_C_59_1); - const auto poseidon2_ARK_59_2 = (new_term.poseidon2_B_58_2 + poseidon2_params_C_59_2); - const auto poseidon2_ARK_59_3 = (new_term.poseidon2_B_58_3 + poseidon2_params_C_59_3); - const auto poseidon2_A_59_0 = - ((((poseidon2_ARK_59_0 * poseidon2_ARK_59_0) * poseidon2_ARK_59_0) * poseidon2_ARK_59_0) * - poseidon2_ARK_59_0); - const auto poseidon2_A_59_1 = poseidon2_ARK_59_1; - const auto poseidon2_A_59_2 = poseidon2_ARK_59_2; - const auto poseidon2_A_59_3 = poseidon2_ARK_59_3; - const auto poseidon2_SUM_59 = (((poseidon2_A_59_0 + poseidon2_A_59_1) + poseidon2_A_59_2) + poseidon2_A_59_3); - const auto poseidon2_ARK_60_0 = (new_term.poseidon2_B_59_0 + poseidon2_params_C_60_0); - const auto poseidon2_ARK_60_1 = (new_term.poseidon2_B_59_1 + poseidon2_params_C_60_1); - const auto poseidon2_ARK_60_2 = (new_term.poseidon2_B_59_2 + poseidon2_params_C_60_2); - const auto poseidon2_ARK_60_3 = (new_term.poseidon2_B_59_3 + poseidon2_params_C_60_3); - const auto poseidon2_A_60_0 = - ((((poseidon2_ARK_60_0 * poseidon2_ARK_60_0) * poseidon2_ARK_60_0) * poseidon2_ARK_60_0) * - poseidon2_ARK_60_0); - const auto poseidon2_A_60_1 = - ((((poseidon2_ARK_60_1 * poseidon2_ARK_60_1) * poseidon2_ARK_60_1) * poseidon2_ARK_60_1) * - poseidon2_ARK_60_1); - const auto poseidon2_A_60_2 = - ((((poseidon2_ARK_60_2 * poseidon2_ARK_60_2) * poseidon2_ARK_60_2) * poseidon2_ARK_60_2) * - poseidon2_ARK_60_2); - const auto poseidon2_A_60_3 = - ((((poseidon2_ARK_60_3 * poseidon2_ARK_60_3) * poseidon2_ARK_60_3) * poseidon2_ARK_60_3) * - poseidon2_ARK_60_3); - const auto poseidon2_T_60_0 = (poseidon2_A_60_0 + poseidon2_A_60_1); - const auto poseidon2_T_60_1 = (poseidon2_A_60_2 + poseidon2_A_60_3); - const auto poseidon2_T_60_2 = ((FF(2) * poseidon2_A_60_1) + poseidon2_T_60_1); - const auto poseidon2_T_60_3 = ((FF(2) * poseidon2_A_60_3) + poseidon2_T_60_0); - const auto poseidon2_ARK_61_0 = (new_term.poseidon2_T_60_6 + poseidon2_params_C_61_0); - const auto poseidon2_ARK_61_1 = (new_term.poseidon2_T_60_5 + poseidon2_params_C_61_1); - const auto poseidon2_ARK_61_2 = (new_term.poseidon2_T_60_7 + poseidon2_params_C_61_2); - const auto poseidon2_ARK_61_3 = (new_term.poseidon2_T_60_4 + poseidon2_params_C_61_3); - const auto poseidon2_A_61_0 = - ((((poseidon2_ARK_61_0 * poseidon2_ARK_61_0) * poseidon2_ARK_61_0) * poseidon2_ARK_61_0) * - poseidon2_ARK_61_0); - const auto poseidon2_A_61_1 = - ((((poseidon2_ARK_61_1 * poseidon2_ARK_61_1) * poseidon2_ARK_61_1) * poseidon2_ARK_61_1) * - poseidon2_ARK_61_1); - const auto poseidon2_A_61_2 = - ((((poseidon2_ARK_61_2 * poseidon2_ARK_61_2) * poseidon2_ARK_61_2) * poseidon2_ARK_61_2) * - poseidon2_ARK_61_2); - const auto poseidon2_A_61_3 = - ((((poseidon2_ARK_61_3 * poseidon2_ARK_61_3) * poseidon2_ARK_61_3) * poseidon2_ARK_61_3) * - poseidon2_ARK_61_3); - const auto poseidon2_T_61_0 = (poseidon2_A_61_0 + poseidon2_A_61_1); - const auto poseidon2_T_61_1 = (poseidon2_A_61_2 + poseidon2_A_61_3); - const auto poseidon2_T_61_2 = ((FF(2) * poseidon2_A_61_1) + poseidon2_T_61_1); - const auto poseidon2_T_61_3 = ((FF(2) * poseidon2_A_61_3) + poseidon2_T_61_0); - const auto poseidon2_ARK_62_0 = (new_term.poseidon2_T_61_6 + poseidon2_params_C_62_0); - const auto poseidon2_ARK_62_1 = (new_term.poseidon2_T_61_5 + poseidon2_params_C_62_1); - const auto poseidon2_ARK_62_2 = (new_term.poseidon2_T_61_7 + poseidon2_params_C_62_2); - const auto poseidon2_ARK_62_3 = (new_term.poseidon2_T_61_4 + poseidon2_params_C_62_3); - const auto poseidon2_A_62_0 = - ((((poseidon2_ARK_62_0 * poseidon2_ARK_62_0) * poseidon2_ARK_62_0) * poseidon2_ARK_62_0) * - poseidon2_ARK_62_0); - const auto poseidon2_A_62_1 = - ((((poseidon2_ARK_62_1 * poseidon2_ARK_62_1) * poseidon2_ARK_62_1) * poseidon2_ARK_62_1) * - poseidon2_ARK_62_1); - const auto poseidon2_A_62_2 = - ((((poseidon2_ARK_62_2 * poseidon2_ARK_62_2) * poseidon2_ARK_62_2) * poseidon2_ARK_62_2) * - poseidon2_ARK_62_2); - const auto poseidon2_A_62_3 = - ((((poseidon2_ARK_62_3 * poseidon2_ARK_62_3) * poseidon2_ARK_62_3) * poseidon2_ARK_62_3) * - poseidon2_ARK_62_3); - const auto poseidon2_T_62_0 = (poseidon2_A_62_0 + poseidon2_A_62_1); - const auto poseidon2_T_62_1 = (poseidon2_A_62_2 + poseidon2_A_62_3); - const auto poseidon2_T_62_2 = ((FF(2) * poseidon2_A_62_1) + poseidon2_T_62_1); - const auto poseidon2_T_62_3 = ((FF(2) * poseidon2_A_62_3) + poseidon2_T_62_0); - const auto poseidon2_ARK_63_0 = (new_term.poseidon2_T_62_6 + poseidon2_params_C_63_0); - const auto poseidon2_ARK_63_1 = (new_term.poseidon2_T_62_5 + poseidon2_params_C_63_1); - const auto poseidon2_ARK_63_2 = (new_term.poseidon2_T_62_7 + poseidon2_params_C_63_2); - const auto poseidon2_ARK_63_3 = (new_term.poseidon2_T_62_4 + poseidon2_params_C_63_3); - const auto poseidon2_A_63_0 = - ((((poseidon2_ARK_63_0 * poseidon2_ARK_63_0) * poseidon2_ARK_63_0) * poseidon2_ARK_63_0) * - poseidon2_ARK_63_0); - const auto poseidon2_A_63_1 = - ((((poseidon2_ARK_63_1 * poseidon2_ARK_63_1) * poseidon2_ARK_63_1) * poseidon2_ARK_63_1) * - poseidon2_ARK_63_1); - const auto poseidon2_A_63_2 = - ((((poseidon2_ARK_63_2 * poseidon2_ARK_63_2) * poseidon2_ARK_63_2) * poseidon2_ARK_63_2) * - poseidon2_ARK_63_2); - const auto poseidon2_A_63_3 = - ((((poseidon2_ARK_63_3 * poseidon2_ARK_63_3) * poseidon2_ARK_63_3) * poseidon2_ARK_63_3) * - poseidon2_ARK_63_3); - const auto poseidon2_T_63_0 = (poseidon2_A_63_0 + poseidon2_A_63_1); - const auto poseidon2_T_63_1 = (poseidon2_A_63_2 + poseidon2_A_63_3); - const auto poseidon2_T_63_2 = ((FF(2) * poseidon2_A_63_1) + poseidon2_T_63_1); - const auto poseidon2_T_63_3 = ((FF(2) * poseidon2_A_63_3) + poseidon2_T_63_0); - - { - using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * (FF(1) - new_term.poseidon2_sel_poseidon_perm)); - tmp *= scaling_factor; - std::get<0>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<1, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_mem_addr_read_a - new_term.poseidon2_input_addr)); - tmp *= scaling_factor; - std::get<1>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<2, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_mem_addr_read_b - (new_term.poseidon2_input_addr + FF(1)))); - tmp *= scaling_factor; - std::get<2>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<3, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_mem_addr_read_c - (new_term.poseidon2_input_addr + FF(2)))); - tmp *= scaling_factor; - std::get<3>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<4, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_mem_addr_read_d - (new_term.poseidon2_input_addr + FF(3)))); - tmp *= scaling_factor; - std::get<4>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<5, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_mem_addr_write_a - new_term.poseidon2_output_addr)); - tmp *= scaling_factor; - std::get<5>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<6, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_mem_addr_write_b - (new_term.poseidon2_output_addr + FF(1)))); - tmp *= scaling_factor; - std::get<6>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<7, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_mem_addr_write_c - (new_term.poseidon2_output_addr + FF(2)))); - tmp *= scaling_factor; - std::get<7>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<8, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_mem_addr_write_d - (new_term.poseidon2_output_addr + FF(3)))); - tmp *= scaling_factor; - std::get<8>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<9, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_EXT_LAYER_4 - ((FF(4) * poseidon2_EXT_LAYER_1) + poseidon2_EXT_LAYER_3))); - tmp *= scaling_factor; - std::get<9>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<10, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_EXT_LAYER_5 - ((FF(4) * poseidon2_EXT_LAYER_0) + poseidon2_EXT_LAYER_2))); - tmp *= scaling_factor; - std::get<10>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<11, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_EXT_LAYER_6 - (poseidon2_EXT_LAYER_3 + new_term.poseidon2_EXT_LAYER_5))); - tmp *= scaling_factor; - std::get<11>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<12, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_EXT_LAYER_7 - (poseidon2_EXT_LAYER_2 + new_term.poseidon2_EXT_LAYER_4))); - tmp *= scaling_factor; - std::get<12>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<13, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_T_0_4 - ((FF(4) * poseidon2_T_0_1) + poseidon2_T_0_3))); - tmp *= scaling_factor; - std::get<13>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<14, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_T_0_5 - ((FF(4) * poseidon2_T_0_0) + poseidon2_T_0_2))); - tmp *= scaling_factor; - std::get<14>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<15, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_T_0_6 - (poseidon2_T_0_3 + new_term.poseidon2_T_0_5))); - tmp *= scaling_factor; - std::get<15>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<16, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_T_0_7 - (poseidon2_T_0_2 + new_term.poseidon2_T_0_4))); - tmp *= scaling_factor; - std::get<16>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<17, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_T_1_4 - ((FF(4) * poseidon2_T_1_1) + poseidon2_T_1_3))); - tmp *= scaling_factor; - std::get<17>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<18, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_T_1_5 - ((FF(4) * poseidon2_T_1_0) + poseidon2_T_1_2))); - tmp *= scaling_factor; - std::get<18>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<19, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_T_1_6 - (poseidon2_T_1_3 + new_term.poseidon2_T_1_5))); - tmp *= scaling_factor; - std::get<19>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<20, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_T_1_7 - (poseidon2_T_1_2 + new_term.poseidon2_T_1_4))); - tmp *= scaling_factor; - std::get<20>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<21, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_T_2_4 - ((FF(4) * poseidon2_T_2_1) + poseidon2_T_2_3))); - tmp *= scaling_factor; - std::get<21>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<22, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_T_2_5 - ((FF(4) * poseidon2_T_2_0) + poseidon2_T_2_2))); - tmp *= scaling_factor; - std::get<22>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<23, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_T_2_6 - (poseidon2_T_2_3 + new_term.poseidon2_T_2_5))); - tmp *= scaling_factor; - std::get<23>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<24, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_T_2_7 - (poseidon2_T_2_2 + new_term.poseidon2_T_2_4))); - tmp *= scaling_factor; - std::get<24>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<25, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_T_3_4 - ((FF(4) * poseidon2_T_3_1) + poseidon2_T_3_3))); - tmp *= scaling_factor; - std::get<25>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<26, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_T_3_5 - ((FF(4) * poseidon2_T_3_0) + poseidon2_T_3_2))); - tmp *= scaling_factor; - std::get<26>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<27, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_T_3_6 - (poseidon2_T_3_3 + new_term.poseidon2_T_3_5))); - tmp *= scaling_factor; - std::get<27>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<28, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_T_3_7 - (poseidon2_T_3_2 + new_term.poseidon2_T_3_4))); - tmp *= scaling_factor; - std::get<28>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<29, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_4_0 - ((poseidon2_params_MU_0 * poseidon2_A_4_0) + poseidon2_SUM_4))); - tmp *= scaling_factor; - std::get<29>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<30, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_4_1 - ((poseidon2_params_MU_1 * poseidon2_A_4_1) + poseidon2_SUM_4))); - tmp *= scaling_factor; - std::get<30>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<31, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_4_2 - ((poseidon2_params_MU_2 * poseidon2_A_4_2) + poseidon2_SUM_4))); - tmp *= scaling_factor; - std::get<31>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<32, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_4_3 - ((poseidon2_params_MU_3 * poseidon2_A_4_3) + poseidon2_SUM_4))); - tmp *= scaling_factor; - std::get<32>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<33, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_5_0 - ((poseidon2_params_MU_0 * poseidon2_A_5_0) + poseidon2_SUM_5))); - tmp *= scaling_factor; - std::get<33>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<34, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_5_1 - ((poseidon2_params_MU_1 * poseidon2_A_5_1) + poseidon2_SUM_5))); - tmp *= scaling_factor; - std::get<34>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<35, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_5_2 - ((poseidon2_params_MU_2 * poseidon2_A_5_2) + poseidon2_SUM_5))); - tmp *= scaling_factor; - std::get<35>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<36, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_5_3 - ((poseidon2_params_MU_3 * poseidon2_A_5_3) + poseidon2_SUM_5))); - tmp *= scaling_factor; - std::get<36>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<37, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_6_0 - ((poseidon2_params_MU_0 * poseidon2_A_6_0) + poseidon2_SUM_6))); - tmp *= scaling_factor; - std::get<37>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<38, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_6_1 - ((poseidon2_params_MU_1 * poseidon2_A_6_1) + poseidon2_SUM_6))); - tmp *= scaling_factor; - std::get<38>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<39, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_6_2 - ((poseidon2_params_MU_2 * poseidon2_A_6_2) + poseidon2_SUM_6))); - tmp *= scaling_factor; - std::get<39>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<40, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_6_3 - ((poseidon2_params_MU_3 * poseidon2_A_6_3) + poseidon2_SUM_6))); - tmp *= scaling_factor; - std::get<40>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<41, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_7_0 - ((poseidon2_params_MU_0 * poseidon2_A_7_0) + poseidon2_SUM_7))); - tmp *= scaling_factor; - std::get<41>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<42, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_7_1 - ((poseidon2_params_MU_1 * poseidon2_A_7_1) + poseidon2_SUM_7))); - tmp *= scaling_factor; - std::get<42>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<43, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_7_2 - ((poseidon2_params_MU_2 * poseidon2_A_7_2) + poseidon2_SUM_7))); - tmp *= scaling_factor; - std::get<43>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<44, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_7_3 - ((poseidon2_params_MU_3 * poseidon2_A_7_3) + poseidon2_SUM_7))); - tmp *= scaling_factor; - std::get<44>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<45, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_8_0 - ((poseidon2_params_MU_0 * poseidon2_A_8_0) + poseidon2_SUM_8))); - tmp *= scaling_factor; - std::get<45>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<46, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_8_1 - ((poseidon2_params_MU_1 * poseidon2_A_8_1) + poseidon2_SUM_8))); - tmp *= scaling_factor; - std::get<46>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<47, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_8_2 - ((poseidon2_params_MU_2 * poseidon2_A_8_2) + poseidon2_SUM_8))); - tmp *= scaling_factor; - std::get<47>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<48, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_8_3 - ((poseidon2_params_MU_3 * poseidon2_A_8_3) + poseidon2_SUM_8))); - tmp *= scaling_factor; - std::get<48>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<49, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_9_0 - ((poseidon2_params_MU_0 * poseidon2_A_9_0) + poseidon2_SUM_9))); - tmp *= scaling_factor; - std::get<49>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<50, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_9_1 - ((poseidon2_params_MU_1 * poseidon2_A_9_1) + poseidon2_SUM_9))); - tmp *= scaling_factor; - std::get<50>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<51, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_9_2 - ((poseidon2_params_MU_2 * poseidon2_A_9_2) + poseidon2_SUM_9))); - tmp *= scaling_factor; - std::get<51>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<52, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_9_3 - ((poseidon2_params_MU_3 * poseidon2_A_9_3) + poseidon2_SUM_9))); - tmp *= scaling_factor; - std::get<52>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<53, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_10_0 - ((poseidon2_params_MU_0 * poseidon2_A_10_0) + poseidon2_SUM_10))); - tmp *= scaling_factor; - std::get<53>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<54, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_10_1 - ((poseidon2_params_MU_1 * poseidon2_A_10_1) + poseidon2_SUM_10))); - tmp *= scaling_factor; - std::get<54>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<55, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_10_2 - ((poseidon2_params_MU_2 * poseidon2_A_10_2) + poseidon2_SUM_10))); - tmp *= scaling_factor; - std::get<55>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<56, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_10_3 - ((poseidon2_params_MU_3 * poseidon2_A_10_3) + poseidon2_SUM_10))); - tmp *= scaling_factor; - std::get<56>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<57, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_11_0 - ((poseidon2_params_MU_0 * poseidon2_A_11_0) + poseidon2_SUM_11))); - tmp *= scaling_factor; - std::get<57>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<58, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_11_1 - ((poseidon2_params_MU_1 * poseidon2_A_11_1) + poseidon2_SUM_11))); - tmp *= scaling_factor; - std::get<58>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<59, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_11_2 - ((poseidon2_params_MU_2 * poseidon2_A_11_2) + poseidon2_SUM_11))); - tmp *= scaling_factor; - std::get<59>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<60, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_11_3 - ((poseidon2_params_MU_3 * poseidon2_A_11_3) + poseidon2_SUM_11))); - tmp *= scaling_factor; - std::get<60>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<61, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_12_0 - ((poseidon2_params_MU_0 * poseidon2_A_12_0) + poseidon2_SUM_12))); - tmp *= scaling_factor; - std::get<61>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<62, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_12_1 - ((poseidon2_params_MU_1 * poseidon2_A_12_1) + poseidon2_SUM_12))); - tmp *= scaling_factor; - std::get<62>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<63, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_12_2 - ((poseidon2_params_MU_2 * poseidon2_A_12_2) + poseidon2_SUM_12))); - tmp *= scaling_factor; - std::get<63>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<64, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_12_3 - ((poseidon2_params_MU_3 * poseidon2_A_12_3) + poseidon2_SUM_12))); - tmp *= scaling_factor; - std::get<64>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<65, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_13_0 - ((poseidon2_params_MU_0 * poseidon2_A_13_0) + poseidon2_SUM_13))); - tmp *= scaling_factor; - std::get<65>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<66, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_13_1 - ((poseidon2_params_MU_1 * poseidon2_A_13_1) + poseidon2_SUM_13))); - tmp *= scaling_factor; - std::get<66>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<67, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_13_2 - ((poseidon2_params_MU_2 * poseidon2_A_13_2) + poseidon2_SUM_13))); - tmp *= scaling_factor; - std::get<67>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<68, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_13_3 - ((poseidon2_params_MU_3 * poseidon2_A_13_3) + poseidon2_SUM_13))); - tmp *= scaling_factor; - std::get<68>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<69, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_14_0 - ((poseidon2_params_MU_0 * poseidon2_A_14_0) + poseidon2_SUM_14))); - tmp *= scaling_factor; - std::get<69>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<70, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_14_1 - ((poseidon2_params_MU_1 * poseidon2_A_14_1) + poseidon2_SUM_14))); - tmp *= scaling_factor; - std::get<70>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<71, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_14_2 - ((poseidon2_params_MU_2 * poseidon2_A_14_2) + poseidon2_SUM_14))); - tmp *= scaling_factor; - std::get<71>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<72, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_14_3 - ((poseidon2_params_MU_3 * poseidon2_A_14_3) + poseidon2_SUM_14))); - tmp *= scaling_factor; - std::get<72>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<73, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_15_0 - ((poseidon2_params_MU_0 * poseidon2_A_15_0) + poseidon2_SUM_15))); - tmp *= scaling_factor; - std::get<73>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<74, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_15_1 - ((poseidon2_params_MU_1 * poseidon2_A_15_1) + poseidon2_SUM_15))); - tmp *= scaling_factor; - std::get<74>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<75, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_15_2 - ((poseidon2_params_MU_2 * poseidon2_A_15_2) + poseidon2_SUM_15))); - tmp *= scaling_factor; - std::get<75>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<76, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_15_3 - ((poseidon2_params_MU_3 * poseidon2_A_15_3) + poseidon2_SUM_15))); - tmp *= scaling_factor; - std::get<76>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<77, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_16_0 - ((poseidon2_params_MU_0 * poseidon2_A_16_0) + poseidon2_SUM_16))); - tmp *= scaling_factor; - std::get<77>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<78, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_16_1 - ((poseidon2_params_MU_1 * poseidon2_A_16_1) + poseidon2_SUM_16))); - tmp *= scaling_factor; - std::get<78>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<79, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_16_2 - ((poseidon2_params_MU_2 * poseidon2_A_16_2) + poseidon2_SUM_16))); - tmp *= scaling_factor; - std::get<79>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<80, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_16_3 - ((poseidon2_params_MU_3 * poseidon2_A_16_3) + poseidon2_SUM_16))); - tmp *= scaling_factor; - std::get<80>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<81, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_17_0 - ((poseidon2_params_MU_0 * poseidon2_A_17_0) + poseidon2_SUM_17))); - tmp *= scaling_factor; - std::get<81>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<82, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_17_1 - ((poseidon2_params_MU_1 * poseidon2_A_17_1) + poseidon2_SUM_17))); - tmp *= scaling_factor; - std::get<82>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<83, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_17_2 - ((poseidon2_params_MU_2 * poseidon2_A_17_2) + poseidon2_SUM_17))); - tmp *= scaling_factor; - std::get<83>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<84, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_17_3 - ((poseidon2_params_MU_3 * poseidon2_A_17_3) + poseidon2_SUM_17))); - tmp *= scaling_factor; - std::get<84>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<85, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_18_0 - ((poseidon2_params_MU_0 * poseidon2_A_18_0) + poseidon2_SUM_18))); - tmp *= scaling_factor; - std::get<85>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<86, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_18_1 - ((poseidon2_params_MU_1 * poseidon2_A_18_1) + poseidon2_SUM_18))); - tmp *= scaling_factor; - std::get<86>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<87, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_18_2 - ((poseidon2_params_MU_2 * poseidon2_A_18_2) + poseidon2_SUM_18))); - tmp *= scaling_factor; - std::get<87>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<88, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_18_3 - ((poseidon2_params_MU_3 * poseidon2_A_18_3) + poseidon2_SUM_18))); - tmp *= scaling_factor; - std::get<88>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<89, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_19_0 - ((poseidon2_params_MU_0 * poseidon2_A_19_0) + poseidon2_SUM_19))); - tmp *= scaling_factor; - std::get<89>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<90, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_19_1 - ((poseidon2_params_MU_1 * poseidon2_A_19_1) + poseidon2_SUM_19))); - tmp *= scaling_factor; - std::get<90>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<91, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_19_2 - ((poseidon2_params_MU_2 * poseidon2_A_19_2) + poseidon2_SUM_19))); - tmp *= scaling_factor; - std::get<91>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<92, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_19_3 - ((poseidon2_params_MU_3 * poseidon2_A_19_3) + poseidon2_SUM_19))); - tmp *= scaling_factor; - std::get<92>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<93, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_20_0 - ((poseidon2_params_MU_0 * poseidon2_A_20_0) + poseidon2_SUM_20))); - tmp *= scaling_factor; - std::get<93>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<94, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_20_1 - ((poseidon2_params_MU_1 * poseidon2_A_20_1) + poseidon2_SUM_20))); - tmp *= scaling_factor; - std::get<94>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<95, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_20_2 - ((poseidon2_params_MU_2 * poseidon2_A_20_2) + poseidon2_SUM_20))); - tmp *= scaling_factor; - std::get<95>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<96, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_20_3 - ((poseidon2_params_MU_3 * poseidon2_A_20_3) + poseidon2_SUM_20))); - tmp *= scaling_factor; - std::get<96>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<97, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_21_0 - ((poseidon2_params_MU_0 * poseidon2_A_21_0) + poseidon2_SUM_21))); - tmp *= scaling_factor; - std::get<97>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<98, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_21_1 - ((poseidon2_params_MU_1 * poseidon2_A_21_1) + poseidon2_SUM_21))); - tmp *= scaling_factor; - std::get<98>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<99, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_21_2 - ((poseidon2_params_MU_2 * poseidon2_A_21_2) + poseidon2_SUM_21))); - tmp *= scaling_factor; - std::get<99>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<100, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_21_3 - ((poseidon2_params_MU_3 * poseidon2_A_21_3) + poseidon2_SUM_21))); - tmp *= scaling_factor; - std::get<100>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<101, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_22_0 - ((poseidon2_params_MU_0 * poseidon2_A_22_0) + poseidon2_SUM_22))); - tmp *= scaling_factor; - std::get<101>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<102, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_22_1 - ((poseidon2_params_MU_1 * poseidon2_A_22_1) + poseidon2_SUM_22))); - tmp *= scaling_factor; - std::get<102>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<103, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_22_2 - ((poseidon2_params_MU_2 * poseidon2_A_22_2) + poseidon2_SUM_22))); - tmp *= scaling_factor; - std::get<103>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<104, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_22_3 - ((poseidon2_params_MU_3 * poseidon2_A_22_3) + poseidon2_SUM_22))); - tmp *= scaling_factor; - std::get<104>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<105, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_23_0 - ((poseidon2_params_MU_0 * poseidon2_A_23_0) + poseidon2_SUM_23))); - tmp *= scaling_factor; - std::get<105>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<106, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_23_1 - ((poseidon2_params_MU_1 * poseidon2_A_23_1) + poseidon2_SUM_23))); - tmp *= scaling_factor; - std::get<106>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<107, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_23_2 - ((poseidon2_params_MU_2 * poseidon2_A_23_2) + poseidon2_SUM_23))); - tmp *= scaling_factor; - std::get<107>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<108, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_23_3 - ((poseidon2_params_MU_3 * poseidon2_A_23_3) + poseidon2_SUM_23))); - tmp *= scaling_factor; - std::get<108>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<109, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_24_0 - ((poseidon2_params_MU_0 * poseidon2_A_24_0) + poseidon2_SUM_24))); - tmp *= scaling_factor; - std::get<109>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<110, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_24_1 - ((poseidon2_params_MU_1 * poseidon2_A_24_1) + poseidon2_SUM_24))); - tmp *= scaling_factor; - std::get<110>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<111, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_24_2 - ((poseidon2_params_MU_2 * poseidon2_A_24_2) + poseidon2_SUM_24))); - tmp *= scaling_factor; - std::get<111>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<112, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_24_3 - ((poseidon2_params_MU_3 * poseidon2_A_24_3) + poseidon2_SUM_24))); - tmp *= scaling_factor; - std::get<112>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<113, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_25_0 - ((poseidon2_params_MU_0 * poseidon2_A_25_0) + poseidon2_SUM_25))); - tmp *= scaling_factor; - std::get<113>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<114, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_25_1 - ((poseidon2_params_MU_1 * poseidon2_A_25_1) + poseidon2_SUM_25))); - tmp *= scaling_factor; - std::get<114>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<115, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_25_2 - ((poseidon2_params_MU_2 * poseidon2_A_25_2) + poseidon2_SUM_25))); - tmp *= scaling_factor; - std::get<115>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<116, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_25_3 - ((poseidon2_params_MU_3 * poseidon2_A_25_3) + poseidon2_SUM_25))); - tmp *= scaling_factor; - std::get<116>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<117, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_26_0 - ((poseidon2_params_MU_0 * poseidon2_A_26_0) + poseidon2_SUM_26))); - tmp *= scaling_factor; - std::get<117>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<118, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_26_1 - ((poseidon2_params_MU_1 * poseidon2_A_26_1) + poseidon2_SUM_26))); - tmp *= scaling_factor; - std::get<118>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<119, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_26_2 - ((poseidon2_params_MU_2 * poseidon2_A_26_2) + poseidon2_SUM_26))); - tmp *= scaling_factor; - std::get<119>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<120, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_26_3 - ((poseidon2_params_MU_3 * poseidon2_A_26_3) + poseidon2_SUM_26))); - tmp *= scaling_factor; - std::get<120>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<121, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_27_0 - ((poseidon2_params_MU_0 * poseidon2_A_27_0) + poseidon2_SUM_27))); - tmp *= scaling_factor; - std::get<121>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<122, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_27_1 - ((poseidon2_params_MU_1 * poseidon2_A_27_1) + poseidon2_SUM_27))); - tmp *= scaling_factor; - std::get<122>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<123, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_27_2 - ((poseidon2_params_MU_2 * poseidon2_A_27_2) + poseidon2_SUM_27))); - tmp *= scaling_factor; - std::get<123>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<124, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_27_3 - ((poseidon2_params_MU_3 * poseidon2_A_27_3) + poseidon2_SUM_27))); - tmp *= scaling_factor; - std::get<124>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<125, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_28_0 - ((poseidon2_params_MU_0 * poseidon2_A_28_0) + poseidon2_SUM_28))); - tmp *= scaling_factor; - std::get<125>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<126, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_28_1 - ((poseidon2_params_MU_1 * poseidon2_A_28_1) + poseidon2_SUM_28))); - tmp *= scaling_factor; - std::get<126>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<127, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_28_2 - ((poseidon2_params_MU_2 * poseidon2_A_28_2) + poseidon2_SUM_28))); - tmp *= scaling_factor; - std::get<127>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<128, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_28_3 - ((poseidon2_params_MU_3 * poseidon2_A_28_3) + poseidon2_SUM_28))); - tmp *= scaling_factor; - std::get<128>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<129, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_29_0 - ((poseidon2_params_MU_0 * poseidon2_A_29_0) + poseidon2_SUM_29))); - tmp *= scaling_factor; - std::get<129>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<130, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_29_1 - ((poseidon2_params_MU_1 * poseidon2_A_29_1) + poseidon2_SUM_29))); - tmp *= scaling_factor; - std::get<130>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<131, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_29_2 - ((poseidon2_params_MU_2 * poseidon2_A_29_2) + poseidon2_SUM_29))); - tmp *= scaling_factor; - std::get<131>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<132, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_29_3 - ((poseidon2_params_MU_3 * poseidon2_A_29_3) + poseidon2_SUM_29))); - tmp *= scaling_factor; - std::get<132>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<133, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_30_0 - ((poseidon2_params_MU_0 * poseidon2_A_30_0) + poseidon2_SUM_30))); - tmp *= scaling_factor; - std::get<133>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<134, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_30_1 - ((poseidon2_params_MU_1 * poseidon2_A_30_1) + poseidon2_SUM_30))); - tmp *= scaling_factor; - std::get<134>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<135, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_30_2 - ((poseidon2_params_MU_2 * poseidon2_A_30_2) + poseidon2_SUM_30))); - tmp *= scaling_factor; - std::get<135>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<136, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_30_3 - ((poseidon2_params_MU_3 * poseidon2_A_30_3) + poseidon2_SUM_30))); - tmp *= scaling_factor; - std::get<136>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<137, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_31_0 - ((poseidon2_params_MU_0 * poseidon2_A_31_0) + poseidon2_SUM_31))); - tmp *= scaling_factor; - std::get<137>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<138, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_31_1 - ((poseidon2_params_MU_1 * poseidon2_A_31_1) + poseidon2_SUM_31))); - tmp *= scaling_factor; - std::get<138>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<139, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_31_2 - ((poseidon2_params_MU_2 * poseidon2_A_31_2) + poseidon2_SUM_31))); - tmp *= scaling_factor; - std::get<139>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<140, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_31_3 - ((poseidon2_params_MU_3 * poseidon2_A_31_3) + poseidon2_SUM_31))); - tmp *= scaling_factor; - std::get<140>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<141, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_32_0 - ((poseidon2_params_MU_0 * poseidon2_A_32_0) + poseidon2_SUM_32))); - tmp *= scaling_factor; - std::get<141>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<142, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_32_1 - ((poseidon2_params_MU_1 * poseidon2_A_32_1) + poseidon2_SUM_32))); - tmp *= scaling_factor; - std::get<142>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<143, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_32_2 - ((poseidon2_params_MU_2 * poseidon2_A_32_2) + poseidon2_SUM_32))); - tmp *= scaling_factor; - std::get<143>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<144, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_32_3 - ((poseidon2_params_MU_3 * poseidon2_A_32_3) + poseidon2_SUM_32))); - tmp *= scaling_factor; - std::get<144>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<145, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_33_0 - ((poseidon2_params_MU_0 * poseidon2_A_33_0) + poseidon2_SUM_33))); - tmp *= scaling_factor; - std::get<145>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<146, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_33_1 - ((poseidon2_params_MU_1 * poseidon2_A_33_1) + poseidon2_SUM_33))); - tmp *= scaling_factor; - std::get<146>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<147, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_33_2 - ((poseidon2_params_MU_2 * poseidon2_A_33_2) + poseidon2_SUM_33))); - tmp *= scaling_factor; - std::get<147>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<148, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_33_3 - ((poseidon2_params_MU_3 * poseidon2_A_33_3) + poseidon2_SUM_33))); - tmp *= scaling_factor; - std::get<148>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<149, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_34_0 - ((poseidon2_params_MU_0 * poseidon2_A_34_0) + poseidon2_SUM_34))); - tmp *= scaling_factor; - std::get<149>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<150, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_34_1 - ((poseidon2_params_MU_1 * poseidon2_A_34_1) + poseidon2_SUM_34))); - tmp *= scaling_factor; - std::get<150>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<151, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_34_2 - ((poseidon2_params_MU_2 * poseidon2_A_34_2) + poseidon2_SUM_34))); - tmp *= scaling_factor; - std::get<151>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<152, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_34_3 - ((poseidon2_params_MU_3 * poseidon2_A_34_3) + poseidon2_SUM_34))); - tmp *= scaling_factor; - std::get<152>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<153, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_35_0 - ((poseidon2_params_MU_0 * poseidon2_A_35_0) + poseidon2_SUM_35))); - tmp *= scaling_factor; - std::get<153>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<154, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_35_1 - ((poseidon2_params_MU_1 * poseidon2_A_35_1) + poseidon2_SUM_35))); - tmp *= scaling_factor; - std::get<154>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<155, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_35_2 - ((poseidon2_params_MU_2 * poseidon2_A_35_2) + poseidon2_SUM_35))); - tmp *= scaling_factor; - std::get<155>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<156, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_35_3 - ((poseidon2_params_MU_3 * poseidon2_A_35_3) + poseidon2_SUM_35))); - tmp *= scaling_factor; - std::get<156>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<157, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_36_0 - ((poseidon2_params_MU_0 * poseidon2_A_36_0) + poseidon2_SUM_36))); - tmp *= scaling_factor; - std::get<157>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<158, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_36_1 - ((poseidon2_params_MU_1 * poseidon2_A_36_1) + poseidon2_SUM_36))); - tmp *= scaling_factor; - std::get<158>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<159, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_36_2 - ((poseidon2_params_MU_2 * poseidon2_A_36_2) + poseidon2_SUM_36))); - tmp *= scaling_factor; - std::get<159>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<160, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_36_3 - ((poseidon2_params_MU_3 * poseidon2_A_36_3) + poseidon2_SUM_36))); - tmp *= scaling_factor; - std::get<160>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<161, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_37_0 - ((poseidon2_params_MU_0 * poseidon2_A_37_0) + poseidon2_SUM_37))); - tmp *= scaling_factor; - std::get<161>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<162, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_37_1 - ((poseidon2_params_MU_1 * poseidon2_A_37_1) + poseidon2_SUM_37))); - tmp *= scaling_factor; - std::get<162>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<163, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_37_2 - ((poseidon2_params_MU_2 * poseidon2_A_37_2) + poseidon2_SUM_37))); - tmp *= scaling_factor; - std::get<163>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<164, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_37_3 - ((poseidon2_params_MU_3 * poseidon2_A_37_3) + poseidon2_SUM_37))); - tmp *= scaling_factor; - std::get<164>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<165, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_38_0 - ((poseidon2_params_MU_0 * poseidon2_A_38_0) + poseidon2_SUM_38))); - tmp *= scaling_factor; - std::get<165>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<166, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_38_1 - ((poseidon2_params_MU_1 * poseidon2_A_38_1) + poseidon2_SUM_38))); - tmp *= scaling_factor; - std::get<166>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<167, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_38_2 - ((poseidon2_params_MU_2 * poseidon2_A_38_2) + poseidon2_SUM_38))); - tmp *= scaling_factor; - std::get<167>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<168, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_38_3 - ((poseidon2_params_MU_3 * poseidon2_A_38_3) + poseidon2_SUM_38))); - tmp *= scaling_factor; - std::get<168>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<169, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_39_0 - ((poseidon2_params_MU_0 * poseidon2_A_39_0) + poseidon2_SUM_39))); - tmp *= scaling_factor; - std::get<169>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<170, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_39_1 - ((poseidon2_params_MU_1 * poseidon2_A_39_1) + poseidon2_SUM_39))); - tmp *= scaling_factor; - std::get<170>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<171, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_39_2 - ((poseidon2_params_MU_2 * poseidon2_A_39_2) + poseidon2_SUM_39))); - tmp *= scaling_factor; - std::get<171>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<172, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_39_3 - ((poseidon2_params_MU_3 * poseidon2_A_39_3) + poseidon2_SUM_39))); - tmp *= scaling_factor; - std::get<172>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<173, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_40_0 - ((poseidon2_params_MU_0 * poseidon2_A_40_0) + poseidon2_SUM_40))); - tmp *= scaling_factor; - std::get<173>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<174, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_40_1 - ((poseidon2_params_MU_1 * poseidon2_A_40_1) + poseidon2_SUM_40))); - tmp *= scaling_factor; - std::get<174>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<175, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_40_2 - ((poseidon2_params_MU_2 * poseidon2_A_40_2) + poseidon2_SUM_40))); - tmp *= scaling_factor; - std::get<175>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<176, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_40_3 - ((poseidon2_params_MU_3 * poseidon2_A_40_3) + poseidon2_SUM_40))); - tmp *= scaling_factor; - std::get<176>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<177, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_41_0 - ((poseidon2_params_MU_0 * poseidon2_A_41_0) + poseidon2_SUM_41))); - tmp *= scaling_factor; - std::get<177>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<178, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_41_1 - ((poseidon2_params_MU_1 * poseidon2_A_41_1) + poseidon2_SUM_41))); - tmp *= scaling_factor; - std::get<178>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<179, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_41_2 - ((poseidon2_params_MU_2 * poseidon2_A_41_2) + poseidon2_SUM_41))); - tmp *= scaling_factor; - std::get<179>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<180, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_41_3 - ((poseidon2_params_MU_3 * poseidon2_A_41_3) + poseidon2_SUM_41))); - tmp *= scaling_factor; - std::get<180>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<181, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_42_0 - ((poseidon2_params_MU_0 * poseidon2_A_42_0) + poseidon2_SUM_42))); - tmp *= scaling_factor; - std::get<181>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<182, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_42_1 - ((poseidon2_params_MU_1 * poseidon2_A_42_1) + poseidon2_SUM_42))); - tmp *= scaling_factor; - std::get<182>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<183, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_42_2 - ((poseidon2_params_MU_2 * poseidon2_A_42_2) + poseidon2_SUM_42))); - tmp *= scaling_factor; - std::get<183>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<184, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_42_3 - ((poseidon2_params_MU_3 * poseidon2_A_42_3) + poseidon2_SUM_42))); - tmp *= scaling_factor; - std::get<184>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<185, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_43_0 - ((poseidon2_params_MU_0 * poseidon2_A_43_0) + poseidon2_SUM_43))); - tmp *= scaling_factor; - std::get<185>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<186, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_43_1 - ((poseidon2_params_MU_1 * poseidon2_A_43_1) + poseidon2_SUM_43))); - tmp *= scaling_factor; - std::get<186>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<187, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_43_2 - ((poseidon2_params_MU_2 * poseidon2_A_43_2) + poseidon2_SUM_43))); - tmp *= scaling_factor; - std::get<187>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<188, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_43_3 - ((poseidon2_params_MU_3 * poseidon2_A_43_3) + poseidon2_SUM_43))); - tmp *= scaling_factor; - std::get<188>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<189, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_44_0 - ((poseidon2_params_MU_0 * poseidon2_A_44_0) + poseidon2_SUM_44))); - tmp *= scaling_factor; - std::get<189>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<190, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_44_1 - ((poseidon2_params_MU_1 * poseidon2_A_44_1) + poseidon2_SUM_44))); - tmp *= scaling_factor; - std::get<190>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<191, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_44_2 - ((poseidon2_params_MU_2 * poseidon2_A_44_2) + poseidon2_SUM_44))); - tmp *= scaling_factor; - std::get<191>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<192, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_44_3 - ((poseidon2_params_MU_3 * poseidon2_A_44_3) + poseidon2_SUM_44))); - tmp *= scaling_factor; - std::get<192>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<193, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_45_0 - ((poseidon2_params_MU_0 * poseidon2_A_45_0) + poseidon2_SUM_45))); - tmp *= scaling_factor; - std::get<193>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<194, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_45_1 - ((poseidon2_params_MU_1 * poseidon2_A_45_1) + poseidon2_SUM_45))); - tmp *= scaling_factor; - std::get<194>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<195, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_45_2 - ((poseidon2_params_MU_2 * poseidon2_A_45_2) + poseidon2_SUM_45))); - tmp *= scaling_factor; - std::get<195>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<196, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_45_3 - ((poseidon2_params_MU_3 * poseidon2_A_45_3) + poseidon2_SUM_45))); - tmp *= scaling_factor; - std::get<196>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<197, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_46_0 - ((poseidon2_params_MU_0 * poseidon2_A_46_0) + poseidon2_SUM_46))); - tmp *= scaling_factor; - std::get<197>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<198, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_46_1 - ((poseidon2_params_MU_1 * poseidon2_A_46_1) + poseidon2_SUM_46))); - tmp *= scaling_factor; - std::get<198>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<199, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_46_2 - ((poseidon2_params_MU_2 * poseidon2_A_46_2) + poseidon2_SUM_46))); - tmp *= scaling_factor; - std::get<199>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<200, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_46_3 - ((poseidon2_params_MU_3 * poseidon2_A_46_3) + poseidon2_SUM_46))); - tmp *= scaling_factor; - std::get<200>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<201, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_47_0 - ((poseidon2_params_MU_0 * poseidon2_A_47_0) + poseidon2_SUM_47))); - tmp *= scaling_factor; - std::get<201>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<202, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_47_1 - ((poseidon2_params_MU_1 * poseidon2_A_47_1) + poseidon2_SUM_47))); - tmp *= scaling_factor; - std::get<202>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<203, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_47_2 - ((poseidon2_params_MU_2 * poseidon2_A_47_2) + poseidon2_SUM_47))); - tmp *= scaling_factor; - std::get<203>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<204, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_47_3 - ((poseidon2_params_MU_3 * poseidon2_A_47_3) + poseidon2_SUM_47))); - tmp *= scaling_factor; - std::get<204>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<205, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_48_0 - ((poseidon2_params_MU_0 * poseidon2_A_48_0) + poseidon2_SUM_48))); - tmp *= scaling_factor; - std::get<205>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<206, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_48_1 - ((poseidon2_params_MU_1 * poseidon2_A_48_1) + poseidon2_SUM_48))); - tmp *= scaling_factor; - std::get<206>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<207, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_48_2 - ((poseidon2_params_MU_2 * poseidon2_A_48_2) + poseidon2_SUM_48))); - tmp *= scaling_factor; - std::get<207>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<208, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_48_3 - ((poseidon2_params_MU_3 * poseidon2_A_48_3) + poseidon2_SUM_48))); - tmp *= scaling_factor; - std::get<208>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<209, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_49_0 - ((poseidon2_params_MU_0 * poseidon2_A_49_0) + poseidon2_SUM_49))); - tmp *= scaling_factor; - std::get<209>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<210, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_49_1 - ((poseidon2_params_MU_1 * poseidon2_A_49_1) + poseidon2_SUM_49))); - tmp *= scaling_factor; - std::get<210>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<211, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_49_2 - ((poseidon2_params_MU_2 * poseidon2_A_49_2) + poseidon2_SUM_49))); - tmp *= scaling_factor; - std::get<211>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<212, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_49_3 - ((poseidon2_params_MU_3 * poseidon2_A_49_3) + poseidon2_SUM_49))); - tmp *= scaling_factor; - std::get<212>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<213, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_50_0 - ((poseidon2_params_MU_0 * poseidon2_A_50_0) + poseidon2_SUM_50))); - tmp *= scaling_factor; - std::get<213>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<214, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_50_1 - ((poseidon2_params_MU_1 * poseidon2_A_50_1) + poseidon2_SUM_50))); - tmp *= scaling_factor; - std::get<214>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<215, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_50_2 - ((poseidon2_params_MU_2 * poseidon2_A_50_2) + poseidon2_SUM_50))); - tmp *= scaling_factor; - std::get<215>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<216, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_50_3 - ((poseidon2_params_MU_3 * poseidon2_A_50_3) + poseidon2_SUM_50))); - tmp *= scaling_factor; - std::get<216>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<217, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_51_0 - ((poseidon2_params_MU_0 * poseidon2_A_51_0) + poseidon2_SUM_51))); - tmp *= scaling_factor; - std::get<217>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<218, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_51_1 - ((poseidon2_params_MU_1 * poseidon2_A_51_1) + poseidon2_SUM_51))); - tmp *= scaling_factor; - std::get<218>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<219, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_51_2 - ((poseidon2_params_MU_2 * poseidon2_A_51_2) + poseidon2_SUM_51))); - tmp *= scaling_factor; - std::get<219>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<220, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_51_3 - ((poseidon2_params_MU_3 * poseidon2_A_51_3) + poseidon2_SUM_51))); - tmp *= scaling_factor; - std::get<220>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<221, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_52_0 - ((poseidon2_params_MU_0 * poseidon2_A_52_0) + poseidon2_SUM_52))); - tmp *= scaling_factor; - std::get<221>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<222, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_52_1 - ((poseidon2_params_MU_1 * poseidon2_A_52_1) + poseidon2_SUM_52))); - tmp *= scaling_factor; - std::get<222>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<223, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_52_2 - ((poseidon2_params_MU_2 * poseidon2_A_52_2) + poseidon2_SUM_52))); - tmp *= scaling_factor; - std::get<223>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<224, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_52_3 - ((poseidon2_params_MU_3 * poseidon2_A_52_3) + poseidon2_SUM_52))); - tmp *= scaling_factor; - std::get<224>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<225, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_53_0 - ((poseidon2_params_MU_0 * poseidon2_A_53_0) + poseidon2_SUM_53))); - tmp *= scaling_factor; - std::get<225>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<226, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_53_1 - ((poseidon2_params_MU_1 * poseidon2_A_53_1) + poseidon2_SUM_53))); - tmp *= scaling_factor; - std::get<226>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<227, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_53_2 - ((poseidon2_params_MU_2 * poseidon2_A_53_2) + poseidon2_SUM_53))); - tmp *= scaling_factor; - std::get<227>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<228, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_53_3 - ((poseidon2_params_MU_3 * poseidon2_A_53_3) + poseidon2_SUM_53))); - tmp *= scaling_factor; - std::get<228>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<229, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_54_0 - ((poseidon2_params_MU_0 * poseidon2_A_54_0) + poseidon2_SUM_54))); - tmp *= scaling_factor; - std::get<229>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<230, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_54_1 - ((poseidon2_params_MU_1 * poseidon2_A_54_1) + poseidon2_SUM_54))); - tmp *= scaling_factor; - std::get<230>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<231, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_54_2 - ((poseidon2_params_MU_2 * poseidon2_A_54_2) + poseidon2_SUM_54))); - tmp *= scaling_factor; - std::get<231>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<232, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_54_3 - ((poseidon2_params_MU_3 * poseidon2_A_54_3) + poseidon2_SUM_54))); - tmp *= scaling_factor; - std::get<232>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<233, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_55_0 - ((poseidon2_params_MU_0 * poseidon2_A_55_0) + poseidon2_SUM_55))); - tmp *= scaling_factor; - std::get<233>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<234, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_55_1 - ((poseidon2_params_MU_1 * poseidon2_A_55_1) + poseidon2_SUM_55))); - tmp *= scaling_factor; - std::get<234>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<235, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_55_2 - ((poseidon2_params_MU_2 * poseidon2_A_55_2) + poseidon2_SUM_55))); - tmp *= scaling_factor; - std::get<235>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<236, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_55_3 - ((poseidon2_params_MU_3 * poseidon2_A_55_3) + poseidon2_SUM_55))); - tmp *= scaling_factor; - std::get<236>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<237, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_56_0 - ((poseidon2_params_MU_0 * poseidon2_A_56_0) + poseidon2_SUM_56))); - tmp *= scaling_factor; - std::get<237>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<238, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_56_1 - ((poseidon2_params_MU_1 * poseidon2_A_56_1) + poseidon2_SUM_56))); - tmp *= scaling_factor; - std::get<238>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<239, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_56_2 - ((poseidon2_params_MU_2 * poseidon2_A_56_2) + poseidon2_SUM_56))); - tmp *= scaling_factor; - std::get<239>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<240, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_56_3 - ((poseidon2_params_MU_3 * poseidon2_A_56_3) + poseidon2_SUM_56))); - tmp *= scaling_factor; - std::get<240>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<241, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_57_0 - ((poseidon2_params_MU_0 * poseidon2_A_57_0) + poseidon2_SUM_57))); - tmp *= scaling_factor; - std::get<241>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<242, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_57_1 - ((poseidon2_params_MU_1 * poseidon2_A_57_1) + poseidon2_SUM_57))); - tmp *= scaling_factor; - std::get<242>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<243, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_57_2 - ((poseidon2_params_MU_2 * poseidon2_A_57_2) + poseidon2_SUM_57))); - tmp *= scaling_factor; - std::get<243>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<244, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_57_3 - ((poseidon2_params_MU_3 * poseidon2_A_57_3) + poseidon2_SUM_57))); - tmp *= scaling_factor; - std::get<244>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<245, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_58_0 - ((poseidon2_params_MU_0 * poseidon2_A_58_0) + poseidon2_SUM_58))); - tmp *= scaling_factor; - std::get<245>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<246, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_58_1 - ((poseidon2_params_MU_1 * poseidon2_A_58_1) + poseidon2_SUM_58))); - tmp *= scaling_factor; - std::get<246>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<247, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_58_2 - ((poseidon2_params_MU_2 * poseidon2_A_58_2) + poseidon2_SUM_58))); - tmp *= scaling_factor; - std::get<247>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<248, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_58_3 - ((poseidon2_params_MU_3 * poseidon2_A_58_3) + poseidon2_SUM_58))); - tmp *= scaling_factor; - std::get<248>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<249, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_59_0 - ((poseidon2_params_MU_0 * poseidon2_A_59_0) + poseidon2_SUM_59))); - tmp *= scaling_factor; - std::get<249>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<250, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_59_1 - ((poseidon2_params_MU_1 * poseidon2_A_59_1) + poseidon2_SUM_59))); - tmp *= scaling_factor; - std::get<250>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<251, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_59_2 - ((poseidon2_params_MU_2 * poseidon2_A_59_2) + poseidon2_SUM_59))); - tmp *= scaling_factor; - std::get<251>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<252, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_B_59_3 - ((poseidon2_params_MU_3 * poseidon2_A_59_3) + poseidon2_SUM_59))); - tmp *= scaling_factor; - std::get<252>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<253, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_T_60_4 - ((FF(4) * poseidon2_T_60_1) + poseidon2_T_60_3))); - tmp *= scaling_factor; - std::get<253>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<254, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_T_60_5 - ((FF(4) * poseidon2_T_60_0) + poseidon2_T_60_2))); - tmp *= scaling_factor; - std::get<254>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<255, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_T_60_6 - (poseidon2_T_60_3 + new_term.poseidon2_T_60_5))); - tmp *= scaling_factor; - std::get<255>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<256, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_T_60_7 - (poseidon2_T_60_2 + new_term.poseidon2_T_60_4))); - tmp *= scaling_factor; - std::get<256>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<257, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_T_61_4 - ((FF(4) * poseidon2_T_61_1) + poseidon2_T_61_3))); - tmp *= scaling_factor; - std::get<257>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<258, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_T_61_5 - ((FF(4) * poseidon2_T_61_0) + poseidon2_T_61_2))); - tmp *= scaling_factor; - std::get<258>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<259, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_T_61_6 - (poseidon2_T_61_3 + new_term.poseidon2_T_61_5))); - tmp *= scaling_factor; - std::get<259>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<260, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_T_61_7 - (poseidon2_T_61_2 + new_term.poseidon2_T_61_4))); - tmp *= scaling_factor; - std::get<260>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<261, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_T_62_4 - ((FF(4) * poseidon2_T_62_1) + poseidon2_T_62_3))); - tmp *= scaling_factor; - std::get<261>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<262, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_T_62_5 - ((FF(4) * poseidon2_T_62_0) + poseidon2_T_62_2))); - tmp *= scaling_factor; - std::get<262>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<263, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_T_62_6 - (poseidon2_T_62_3 + new_term.poseidon2_T_62_5))); - tmp *= scaling_factor; - std::get<263>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<264, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_T_62_7 - (poseidon2_T_62_2 + new_term.poseidon2_T_62_4))); - tmp *= scaling_factor; - std::get<264>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<265, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_T_63_4 - ((FF(4) * poseidon2_T_63_1) + poseidon2_T_63_3))); - tmp *= scaling_factor; - std::get<265>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<266, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_T_63_5 - ((FF(4) * poseidon2_T_63_0) + poseidon2_T_63_2))); - tmp *= scaling_factor; - std::get<266>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<267, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_T_63_6 - (poseidon2_T_63_3 + new_term.poseidon2_T_63_5))); - tmp *= scaling_factor; - std::get<267>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<268, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * - (new_term.poseidon2_T_63_7 - (poseidon2_T_63_2 + new_term.poseidon2_T_63_4))); - tmp *= scaling_factor; - std::get<268>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<269, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_b_0 - new_term.poseidon2_T_63_6)); - tmp *= scaling_factor; - std::get<269>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<270, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_b_1 - new_term.poseidon2_T_63_5)); - tmp *= scaling_factor; - std::get<270>(evals) += typename Accumulator::View(tmp); - } + +template class poseidon2Impl { + public: + using FF = FF_; + + static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { + 3,3,3,3,3,3,3,3,3,3,3,3,3,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,3,3,3,3 + }; + + template inline static bool skip(const AllEntities& in) { - using Accumulator = typename std::tuple_element_t<271, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_b_2 - new_term.poseidon2_T_63_7)); - tmp *= scaling_factor; - std::get<271>(evals) += typename Accumulator::View(tmp); + const auto& new_term = in; + return (new_term.poseidon2_sel_poseidon_perm).is_zero(); } - { - using Accumulator = typename std::tuple_element_t<272, ContainerOverSubrelations>; - auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_b_3 - new_term.poseidon2_T_63_4)); - tmp *= scaling_factor; - std::get<272>(evals) += typename Accumulator::View(tmp); + + template + void static accumulate( + ContainerOverSubrelations& evals, + const AllEntities& new_term, + [[maybe_unused]] const RelationParameters&, + [[maybe_unused]] const FF& scaling_factor + ){ + const auto poseidon2_params_MU_0 = FF(uint256_t{13071735289386612455UL, 937867514930142591UL, 338297992309721356UL, 1214967615784395659UL}); + const auto poseidon2_params_MU_1 = FF(uint256_t{12135856085615145995UL, 11087747206803725188UL, 92802976007797685UL, 875972510381039422UL}); + const auto poseidon2_params_MU_2 = FF(uint256_t{8072276821399088149UL, 12835106910674049377UL, 12882375598172350360UL, 23726925003953432UL}); + const auto poseidon2_params_MU_3 = FF(uint256_t{1422103134736368267UL, 5972060781611222310UL, 3327741120806881763UL, 2462344296021899375UL}); + const auto poseidon2_params_C_0_0 = FF(uint256_t{10018390284920759269UL, 196898842818127395UL, 5249540449481148995UL, 1853312570062057576UL}); + const auto poseidon2_params_C_0_1 = FF(uint256_t{12486221224710452438UL, 2372038863109147677UL, 8230667498854222355UL, 2764611904404804029UL}); + const auto poseidon2_params_C_0_2 = FF(uint256_t{4466505105966356650UL, 4686185096558265002UL, 16210260819355521378UL, 1844031548168280073UL}); + const auto poseidon2_params_C_0_3 = FF(uint256_t{15002325471271702008UL, 5581154705073500415UL, 1229208533183169201UL, 1549225070791782920UL}); + const auto poseidon2_params_C_1_0 = FF(uint256_t{18309653156114024706UL, 798761732958817262UL, 6904962453156279281UL, 3335412762186210716UL}); + const auto poseidon2_params_C_1_1 = FF(uint256_t{2824096028161810206UL, 14640933461146357672UL, 957840840567621315UL, 1024001058677493842UL}); + const auto poseidon2_params_C_1_2 = FF(uint256_t{14339023814126516630UL, 12239068001133297662UL, 428134084092645147UL, 2673682960814460689UL}); + const auto poseidon2_params_C_1_3 = FF(uint256_t{6214865908119297870UL, 17923963059035301363UL, 10985380589240272449UL, 1430464474809378870UL}); + const auto poseidon2_params_C_2_0 = FF(uint256_t{5109255232332580664UL, 11913027714091798733UL, 4449570166290740355UL, 864862123557185234UL}); + const auto poseidon2_params_C_2_1 = FF(uint256_t{2323272968957708806UL, 354488099726909104UL, 115174089281514891UL, 80808271106704719UL}); + const auto poseidon2_params_C_2_2 = FF(uint256_t{9646436663147525449UL, 3404572679246369876UL, 2350204275212843361UL, 1069216089054537871UL}); + const auto poseidon2_params_C_2_3 = FF(uint256_t{5059356740217174171UL, 4245857056683447103UL, 2426504795124362174UL, 350059533408463330UL}); + const auto poseidon2_params_C_3_0 = FF(uint256_t{14876286709841668328UL, 6932857857384975351UL, 7976037835777844091UL, 738350885205242785UL}); + const auto poseidon2_params_C_3_1 = FF(uint256_t{16522097747524989503UL, 4157368317794149558UL, 10343110624935622906UL, 2709590753056582169UL}); + const auto poseidon2_params_C_3_2 = FF(uint256_t{8805379462752425633UL, 8594508728147436821UL, 15629690186821248127UL, 2936193411053712582UL}); + const auto poseidon2_params_C_3_3 = FF(uint256_t{17046614324338172999UL, 14086280776151114414UL, 2804088968006330580UL, 728643340397380469UL}); + const auto poseidon2_params_C_4_0 = FF(uint256_t{12986735346000814543UL, 6140074342411686364UL, 6041575944194691717UL, 896092723329689904UL}); + const auto poseidon2_params_C_4_1 = FF(0); + const auto poseidon2_params_C_4_2 = FF(0); + const auto poseidon2_params_C_4_3 = FF(0); + const auto poseidon2_params_C_5_0 = FF(uint256_t{9573905030842087441UL, 12243211539080976096UL, 15287161151491266826UL, 1310836290481124728UL}); + const auto poseidon2_params_C_5_1 = FF(0); + const auto poseidon2_params_C_5_2 = FF(0); + const auto poseidon2_params_C_5_3 = FF(0); + const auto poseidon2_params_C_6_0 = FF(uint256_t{8865134002163281525UL, 6813849753829831047UL, 9066778847678578696UL, 2801725307463304665UL}); + const auto poseidon2_params_C_6_1 = FF(0); + const auto poseidon2_params_C_6_2 = FF(0); + const auto poseidon2_params_C_6_3 = FF(0); + const auto poseidon2_params_C_7_0 = FF(uint256_t{4931814869361681093UL, 13712769805002511750UL, 1776191062268299644UL, 2068661504023016414UL}); + const auto poseidon2_params_C_7_1 = FF(0); + const auto poseidon2_params_C_7_2 = FF(0); + const auto poseidon2_params_C_7_3 = FF(0); + const auto poseidon2_params_C_8_0 = FF(uint256_t{8161631444256445904UL, 3049786034047984668UL, 1021328518293651309UL, 2147500022207188878UL}); + const auto poseidon2_params_C_8_1 = FF(0); + const auto poseidon2_params_C_8_2 = FF(0); + const auto poseidon2_params_C_8_3 = FF(0); + const auto poseidon2_params_C_9_0 = FF(uint256_t{12766468767470212468UL, 926098071429114297UL, 17691598410912255471UL, 76565467953470566UL}); + const auto poseidon2_params_C_9_1 = FF(0); + const auto poseidon2_params_C_9_2 = FF(0); + const auto poseidon2_params_C_9_3 = FF(0); + const auto poseidon2_params_C_10_0 = FF(uint256_t{15547843034426617484UL, 13465733818561903358UL, 11157089789589945854UL, 3107062195097242290UL}); + const auto poseidon2_params_C_10_1 = FF(0); + const auto poseidon2_params_C_10_2 = FF(0); + const auto poseidon2_params_C_10_3 = FF(0); + const auto poseidon2_params_C_11_0 = FF(uint256_t{16908372174309343397UL, 17264932925429761530UL, 11508063480483774160UL, 2682419245684831641UL}); + const auto poseidon2_params_C_11_1 = FF(0); + const auto poseidon2_params_C_11_2 = FF(0); + const auto poseidon2_params_C_11_3 = FF(0); + const auto poseidon2_params_C_12_0 = FF(uint256_t{4870692136216401181UL, 17645600130793395310UL, 2758876031472241166UL, 874943362207641089UL}); + const auto poseidon2_params_C_12_1 = FF(0); + const auto poseidon2_params_C_12_2 = FF(0); + const auto poseidon2_params_C_12_3 = FF(0); + const auto poseidon2_params_C_13_0 = FF(uint256_t{4540479402638267003UL, 13477556963426049071UL, 6055112305493291757UL, 1810598527648098537UL}); + const auto poseidon2_params_C_13_1 = FF(0); + const auto poseidon2_params_C_13_2 = FF(0); + const auto poseidon2_params_C_13_3 = FF(0); + const auto poseidon2_params_C_14_0 = FF(uint256_t{7894770769272900997UL, 9595210915998428021UL, 7642295683223718917UL, 2210716392790471408UL}); + const auto poseidon2_params_C_14_1 = FF(0); + const auto poseidon2_params_C_14_2 = FF(0); + const auto poseidon2_params_C_14_3 = FF(0); + const auto poseidon2_params_C_15_0 = FF(uint256_t{10910178561156475899UL, 15811627963917441510UL, 16460518660187536520UL, 1698297851221778809UL}); + const auto poseidon2_params_C_15_1 = FF(0); + const auto poseidon2_params_C_15_2 = FF(0); + const auto poseidon2_params_C_15_3 = FF(0); + const auto poseidon2_params_C_16_0 = FF(uint256_t{7831732902708890908UL, 1464390598836302271UL, 8568564606321342514UL, 3007171090439369509UL}); + const auto poseidon2_params_C_16_1 = FF(0); + const auto poseidon2_params_C_16_2 = FF(0); + const auto poseidon2_params_C_16_3 = FF(0); + const auto poseidon2_params_C_17_0 = FF(uint256_t{12758232712903990792UL, 5937193763836963893UL, 4629415695575460109UL, 2476198378403296665UL}); + const auto poseidon2_params_C_17_1 = FF(0); + const auto poseidon2_params_C_17_2 = FF(0); + const auto poseidon2_params_C_17_3 = FF(0); + const auto poseidon2_params_C_18_0 = FF(uint256_t{16185652584871361881UL, 3161867062328690813UL, 8447947510117581907UL, 452436262606194895UL}); + const auto poseidon2_params_C_18_1 = FF(0); + const auto poseidon2_params_C_18_2 = FF(0); + const auto poseidon2_params_C_18_3 = FF(0); + const auto poseidon2_params_C_19_0 = FF(uint256_t{10531967515434376071UL, 5577695765815843856UL, 9164856352050088505UL, 1205339682110411496UL}); + const auto poseidon2_params_C_19_1 = FF(0); + const auto poseidon2_params_C_19_2 = FF(0); + const auto poseidon2_params_C_19_3 = FF(0); + const auto poseidon2_params_C_20_0 = FF(uint256_t{3898841196333713180UL, 14650521577519770525UL, 5736581618852866049UL, 1010789789328495026UL}); + const auto poseidon2_params_C_20_1 = FF(0); + const auto poseidon2_params_C_20_2 = FF(0); + const auto poseidon2_params_C_20_3 = FF(0); + const auto poseidon2_params_C_21_0 = FF(uint256_t{12103741763020280571UL, 14760208106156268938UL, 15246749619665902195UL, 1987439155030896717UL}); + const auto poseidon2_params_C_21_1 = FF(0); + const auto poseidon2_params_C_21_2 = FF(0); + const auto poseidon2_params_C_21_3 = FF(0); + const auto poseidon2_params_C_22_0 = FF(uint256_t{326429241861474059UL, 11335157279655967493UL, 16233357323017397007UL, 2124770605461456708UL}); + const auto poseidon2_params_C_22_1 = FF(0); + const auto poseidon2_params_C_22_2 = FF(0); + const auto poseidon2_params_C_22_3 = FF(0); + const auto poseidon2_params_C_23_0 = FF(uint256_t{13507610432344102875UL, 9765425316929074945UL, 10455054851855122687UL, 3371280263716451574UL}); + const auto poseidon2_params_C_23_1 = FF(0); + const auto poseidon2_params_C_23_2 = FF(0); + const auto poseidon2_params_C_23_3 = FF(0); + const auto poseidon2_params_C_24_0 = FF(uint256_t{9433430149246843174UL, 16916651192445074064UL, 12002862125451454299UL, 3293088726774108791UL}); + const auto poseidon2_params_C_24_1 = FF(0); + const auto poseidon2_params_C_24_2 = FF(0); + const auto poseidon2_params_C_24_3 = FF(0); + const auto poseidon2_params_C_25_0 = FF(uint256_t{15895963712096768440UL, 10975964170403460506UL, 7594578539046143282UL, 441635248990433378UL}); + const auto poseidon2_params_C_25_1 = FF(0); + const auto poseidon2_params_C_25_2 = FF(0); + const auto poseidon2_params_C_25_3 = FF(0); + const auto poseidon2_params_C_26_0 = FF(uint256_t{55564641555031451UL, 2316046008873247993UL, 6273091099984972305UL, 531938487375579818UL}); + const auto poseidon2_params_C_26_1 = FF(0); + const auto poseidon2_params_C_26_2 = FF(0); + const auto poseidon2_params_C_26_3 = FF(0); + const auto poseidon2_params_C_27_0 = FF(uint256_t{17845282940759944461UL, 6735239388814238924UL, 3181517889518583601UL, 2376846283559998361UL}); + const auto poseidon2_params_C_27_1 = FF(0); + const auto poseidon2_params_C_27_2 = FF(0); + const auto poseidon2_params_C_27_3 = FF(0); + const auto poseidon2_params_C_28_0 = FF(uint256_t{14097127963645492314UL, 1165420652731038559UL, 12527303660854712762UL, 2717289076364278965UL}); + const auto poseidon2_params_C_28_1 = FF(0); + const auto poseidon2_params_C_28_2 = FF(0); + const auto poseidon2_params_C_28_3 = FF(0); + const auto poseidon2_params_C_29_0 = FF(uint256_t{15600044695084040011UL, 255324662529267034UL, 11859356122961343981UL, 2571979992654075442UL}); + const auto poseidon2_params_C_29_1 = FF(0); + const auto poseidon2_params_C_29_2 = FF(0); + const auto poseidon2_params_C_29_3 = FF(0); + const auto poseidon2_params_C_30_0 = FF(uint256_t{1589817027469470176UL, 1086723465680833706UL, 6948011514366564799UL, 2482410610948543635UL}); + const auto poseidon2_params_C_30_1 = FF(0); + const auto poseidon2_params_C_30_2 = FF(0); + const auto poseidon2_params_C_30_3 = FF(0); + const auto poseidon2_params_C_31_0 = FF(uint256_t{6071201116374785253UL, 16554668458221199618UL, 16319484688832471879UL, 2792452762383364279UL}); + const auto poseidon2_params_C_31_1 = FF(0); + const auto poseidon2_params_C_31_2 = FF(0); + const auto poseidon2_params_C_31_3 = FF(0); + const auto poseidon2_params_C_32_0 = FF(uint256_t{13535048470209809113UL, 1831807297936988201UL, 16757520396573457190UL, 508291910620511162UL}); + const auto poseidon2_params_C_32_1 = FF(0); + const auto poseidon2_params_C_32_2 = FF(0); + const auto poseidon2_params_C_32_3 = FF(0); + const auto poseidon2_params_C_33_0 = FF(uint256_t{6946737468087619802UL, 14033399912488027565UL, 12701200401813783486UL, 1348363389498465135UL}); + const auto poseidon2_params_C_33_1 = FF(0); + const auto poseidon2_params_C_33_2 = FF(0); + const auto poseidon2_params_C_33_3 = FF(0); + const auto poseidon2_params_C_34_0 = FF(uint256_t{6788008051328210729UL, 13866524545426155292UL, 4317879914214157329UL, 2633928310905799638UL}); + const auto poseidon2_params_C_34_1 = FF(0); + const auto poseidon2_params_C_34_2 = FF(0); + const auto poseidon2_params_C_34_3 = FF(0); + const auto poseidon2_params_C_35_0 = FF(uint256_t{1183626302001490602UL, 10035686235057284266UL, 1656321729167440177UL, 1887128381037099784UL}); + const auto poseidon2_params_C_35_1 = FF(0); + const auto poseidon2_params_C_35_2 = FF(0); + const auto poseidon2_params_C_35_3 = FF(0); + const auto poseidon2_params_C_36_0 = FF(uint256_t{964566190254741199UL, 17650087760652370459UL, 14904592615785317921UL, 2929864473487096026UL}); + const auto poseidon2_params_C_36_1 = FF(0); + const auto poseidon2_params_C_36_2 = FF(0); + const auto poseidon2_params_C_36_3 = FF(0); + const auto poseidon2_params_C_37_0 = FF(uint256_t{13584300701347139198UL, 512534187550045064UL, 13489711551083721364UL, 41824696873363624UL}); + const auto poseidon2_params_C_37_1 = FF(0); + const auto poseidon2_params_C_37_2 = FF(0); + const auto poseidon2_params_C_37_3 = FF(0); + const auto poseidon2_params_C_38_0 = FF(uint256_t{17586611824788147557UL, 6430987250922925699UL, 9294838151373947091UL, 348446557360066429UL}); + const auto poseidon2_params_C_38_1 = FF(0); + const auto poseidon2_params_C_38_2 = FF(0); + const auto poseidon2_params_C_38_3 = FF(0); + const auto poseidon2_params_C_39_0 = FF(uint256_t{15025298913764434311UL, 14393211163878018166UL, 7154440178410267241UL, 3057088631006286899UL}); + const auto poseidon2_params_C_39_1 = FF(0); + const auto poseidon2_params_C_39_2 = FF(0); + const auto poseidon2_params_C_39_3 = FF(0); + const auto poseidon2_params_C_40_0 = FF(uint256_t{13451769229280519155UL, 17839347496757587523UL, 10553299811918798519UL, 2523373819901075642UL}); + const auto poseidon2_params_C_40_1 = FF(0); + const auto poseidon2_params_C_40_2 = FF(0); + const auto poseidon2_params_C_40_3 = FF(0); + const auto poseidon2_params_C_41_0 = FF(uint256_t{16267315463205810352UL, 13830706729545301172UL, 15413288900478726729UL, 287556136711008934UL}); + const auto poseidon2_params_C_41_1 = FF(0); + const auto poseidon2_params_C_41_2 = FF(0); + const auto poseidon2_params_C_41_3 = FF(0); + const auto poseidon2_params_C_42_0 = FF(uint256_t{4573780169675443044UL, 8758089751960064775UL, 2470295096511057988UL, 51551212240288730UL}); + const auto poseidon2_params_C_42_1 = FF(0); + const auto poseidon2_params_C_42_2 = FF(0); + const auto poseidon2_params_C_42_3 = FF(0); + const auto poseidon2_params_C_43_0 = FF(uint256_t{7093949836145798554UL, 12771428392262798771UL, 17021632567931004395UL, 1558106578814965657UL}); + const auto poseidon2_params_C_43_1 = FF(0); + const auto poseidon2_params_C_43_2 = FF(0); + const auto poseidon2_params_C_43_3 = FF(0); + const auto poseidon2_params_C_44_0 = FF(uint256_t{8205915653008540447UL, 10376314495036230740UL, 5774593793305666491UL, 2231830927015656581UL}); + const auto poseidon2_params_C_44_1 = FF(0); + const auto poseidon2_params_C_44_2 = FF(0); + const auto poseidon2_params_C_44_3 = FF(0); + const auto poseidon2_params_C_45_0 = FF(uint256_t{10783762484003267341UL, 10229708558604896492UL, 1831638669050696278UL, 2190429714552610800UL}); + const auto poseidon2_params_C_45_1 = FF(0); + const auto poseidon2_params_C_45_2 = FF(0); + const auto poseidon2_params_C_45_3 = FF(0); + const auto poseidon2_params_C_46_0 = FF(uint256_t{7310961803978392383UL, 12793746113455595394UL, 17036245927795997300UL, 3106081169494120044UL}); + const auto poseidon2_params_C_46_1 = FF(0); + const auto poseidon2_params_C_46_2 = FF(0); + const auto poseidon2_params_C_46_3 = FF(0); + const auto poseidon2_params_C_47_0 = FF(uint256_t{17421859032088162675UL, 7339791467855418851UL, 4622175020331968961UL, 590786792834928630UL}); + const auto poseidon2_params_C_47_1 = FF(0); + const auto poseidon2_params_C_47_2 = FF(0); + const auto poseidon2_params_C_47_3 = FF(0); + const auto poseidon2_params_C_48_0 = FF(uint256_t{14242884250645212438UL, 12806057845811725595UL, 7743423753614082490UL, 213381026777379804UL}); + const auto poseidon2_params_C_48_1 = FF(0); + const auto poseidon2_params_C_48_2 = FF(0); + const auto poseidon2_params_C_48_3 = FF(0); + const auto poseidon2_params_C_49_0 = FF(uint256_t{1110713325513004805UL, 8318407684973846516UL, 15952888485475298710UL, 1018983205230111328UL}); + const auto poseidon2_params_C_49_1 = FF(0); + const auto poseidon2_params_C_49_2 = FF(0); + const auto poseidon2_params_C_49_3 = FF(0); + const auto poseidon2_params_C_50_0 = FF(uint256_t{533883137631233338UL, 333001117808183237UL, 16968583542443855481UL, 329716098711096173UL}); + const auto poseidon2_params_C_50_1 = FF(0); + const auto poseidon2_params_C_50_2 = FF(0); + const auto poseidon2_params_C_50_3 = FF(0); + const auto poseidon2_params_C_51_0 = FF(uint256_t{4449676039486426793UL, 7760073051300251162UL, 5615103291054015906UL, 2516053143677338215UL}); + const auto poseidon2_params_C_51_1 = FF(0); + const auto poseidon2_params_C_51_2 = FF(0); + const auto poseidon2_params_C_51_3 = FF(0); + const auto poseidon2_params_C_52_0 = FF(uint256_t{16503526645482286870UL, 6358830762575712333UL, 12313512559299087688UL, 2716767262544184013UL}); + const auto poseidon2_params_C_52_1 = FF(0); + const auto poseidon2_params_C_52_2 = FF(0); + const auto poseidon2_params_C_52_3 = FF(0); + const auto poseidon2_params_C_53_0 = FF(uint256_t{5426798011730033104UL, 13085704829880126552UL, 6356732802364281819UL, 2175930396888807151UL}); + const auto poseidon2_params_C_53_1 = FF(0); + const auto poseidon2_params_C_53_2 = FF(0); + const auto poseidon2_params_C_53_3 = FF(0); + const auto poseidon2_params_C_54_0 = FF(uint256_t{8262282602783970021UL, 2576069526442506486UL, 14199683559983367515UL, 3432491072538425468UL}); + const auto poseidon2_params_C_54_1 = FF(0); + const auto poseidon2_params_C_54_2 = FF(0); + const auto poseidon2_params_C_54_3 = FF(0); + const auto poseidon2_params_C_55_0 = FF(uint256_t{14778817021916755205UL, 6110468871588391807UL, 2850248286812407967UL, 3411084787375678665UL}); + const auto poseidon2_params_C_55_1 = FF(0); + const auto poseidon2_params_C_55_2 = FF(0); + const auto poseidon2_params_C_55_3 = FF(0); + const auto poseidon2_params_C_56_0 = FF(uint256_t{4906200604739023933UL, 12096549814065429793UL, 5988343102643160344UL, 309820751832846301UL}); + const auto poseidon2_params_C_56_1 = FF(0); + const auto poseidon2_params_C_56_2 = FF(0); + const auto poseidon2_params_C_56_3 = FF(0); + const auto poseidon2_params_C_57_0 = FF(uint256_t{8709336210313678885UL, 10520000332606345601UL, 4756441214598660785UL, 2483744946546306397UL}); + const auto poseidon2_params_C_57_1 = FF(0); + const auto poseidon2_params_C_57_2 = FF(0); + const auto poseidon2_params_C_57_3 = FF(0); + const auto poseidon2_params_C_58_0 = FF(uint256_t{9617950371599090517UL, 6702332727289490762UL, 7078214601245292934UL, 215269160536524476UL}); + const auto poseidon2_params_C_58_1 = FF(0); + const auto poseidon2_params_C_58_2 = FF(0); + const auto poseidon2_params_C_58_3 = FF(0); + const auto poseidon2_params_C_59_0 = FF(uint256_t{14694170287735041964UL, 13462371741453101277UL, 7691247574208617782UL, 1078917709155142535UL}); + const auto poseidon2_params_C_59_1 = FF(0); + const auto poseidon2_params_C_59_2 = FF(0); + const auto poseidon2_params_C_59_3 = FF(0); + const auto poseidon2_params_C_60_0 = FF(uint256_t{17559938410729200952UL, 12326273425107991305UL, 8641129484519639030UL, 1699848340767391255UL}); + const auto poseidon2_params_C_60_1 = FF(uint256_t{3946956839294125797UL, 10123891284815211853UL, 3676846437799665248UL, 753827773683953838UL}); + const auto poseidon2_params_C_60_2 = FF(uint256_t{10815195850656127580UL, 17940782720817522247UL, 11666428030894512886UL, 2305765957929457259UL}); + const auto poseidon2_params_C_60_3 = FF(uint256_t{437280840171101279UL, 6885928680245806601UL, 6031863836827793624UL, 2698250255620259624UL}); + const auto poseidon2_params_C_61_0 = FF(uint256_t{16961604592822056794UL, 12516844188945734293UL, 2404426354458718742UL, 901141949721836097UL}); + const auto poseidon2_params_C_61_1 = FF(uint256_t{3152898413090790038UL, 16108523113696338432UL, 11492645026300260534UL, 1417477149741880787UL}); + const auto poseidon2_params_C_61_2 = FF(uint256_t{10578217394647568846UL, 6637113826221079930UL, 1364449097464563400UL, 2379869735503406314UL}); + const auto poseidon2_params_C_61_3 = FF(uint256_t{6332539588517624153UL, 17422837239624809585UL, 12296960536238467913UL, 2434905421004621494UL}); + const auto poseidon2_params_C_62_0 = FF(uint256_t{10311634121439582299UL, 2959376558854333994UL, 6697398963915560134UL, 417944321386245900UL}); + const auto poseidon2_params_C_62_1 = FF(uint256_t{16872849857899172004UL, 1640712307042701286UL, 16457516735210998920UL, 1084862449077757478UL}); + const auto poseidon2_params_C_62_2 = FF(uint256_t{10329879351081882815UL, 5178010365334480003UL, 7014208314719145622UL, 385149140585498380UL}); + const auto poseidon2_params_C_62_3 = FF(uint256_t{13199866221884806229UL, 10541991787372042848UL, 14909749656931548440UL, 708152185224876794UL}); + const auto poseidon2_params_C_63_0 = FF(uint256_t{1717216310632203061UL, 17455832130858697862UL, 5278085098799702411UL, 227655898188482835UL}); + const auto poseidon2_params_C_63_1 = FF(uint256_t{17164141620747686731UL, 16689913387728553544UL, 2568326884589391367UL, 3166155980659486882UL}); + const auto poseidon2_params_C_63_2 = FF(uint256_t{1233442753680249567UL, 15490006495937952898UL, 7249042245074469654UL, 2138985910652398451UL}); + const auto poseidon2_params_C_63_3 = FF(uint256_t{4115849303762846724UL, 2230284817967990783UL, 5095423606777193313UL, 1685862792723606183UL}); + const auto poseidon2_EXT_LAYER_0 = (new_term.poseidon2_a_0 + new_term.poseidon2_a_1); + const auto poseidon2_EXT_LAYER_1 = (new_term.poseidon2_a_2 + new_term.poseidon2_a_3); + const auto poseidon2_EXT_LAYER_2 = ((FF(2) * new_term.poseidon2_a_1) + poseidon2_EXT_LAYER_1); + const auto poseidon2_EXT_LAYER_3 = ((FF(2) * new_term.poseidon2_a_3) + poseidon2_EXT_LAYER_0); + const auto poseidon2_ARK_0_0 = (new_term.poseidon2_EXT_LAYER_6 + poseidon2_params_C_0_0); + const auto poseidon2_ARK_0_1 = (new_term.poseidon2_EXT_LAYER_5 + poseidon2_params_C_0_1); + const auto poseidon2_ARK_0_2 = (new_term.poseidon2_EXT_LAYER_7 + poseidon2_params_C_0_2); + const auto poseidon2_ARK_0_3 = (new_term.poseidon2_EXT_LAYER_4 + poseidon2_params_C_0_3); + const auto poseidon2_A_0_0 = ((((poseidon2_ARK_0_0 * poseidon2_ARK_0_0) * poseidon2_ARK_0_0) * poseidon2_ARK_0_0) * poseidon2_ARK_0_0); + const auto poseidon2_A_0_1 = ((((poseidon2_ARK_0_1 * poseidon2_ARK_0_1) * poseidon2_ARK_0_1) * poseidon2_ARK_0_1) * poseidon2_ARK_0_1); + const auto poseidon2_A_0_2 = ((((poseidon2_ARK_0_2 * poseidon2_ARK_0_2) * poseidon2_ARK_0_2) * poseidon2_ARK_0_2) * poseidon2_ARK_0_2); + const auto poseidon2_A_0_3 = ((((poseidon2_ARK_0_3 * poseidon2_ARK_0_3) * poseidon2_ARK_0_3) * poseidon2_ARK_0_3) * poseidon2_ARK_0_3); + const auto poseidon2_T_0_0 = (poseidon2_A_0_0 + poseidon2_A_0_1); + const auto poseidon2_T_0_1 = (poseidon2_A_0_2 + poseidon2_A_0_3); + const auto poseidon2_T_0_2 = ((FF(2) * poseidon2_A_0_1) + poseidon2_T_0_1); + const auto poseidon2_T_0_3 = ((FF(2) * poseidon2_A_0_3) + poseidon2_T_0_0); + const auto poseidon2_ARK_1_0 = (new_term.poseidon2_T_0_6 + poseidon2_params_C_1_0); + const auto poseidon2_ARK_1_1 = (new_term.poseidon2_T_0_5 + poseidon2_params_C_1_1); + const auto poseidon2_ARK_1_2 = (new_term.poseidon2_T_0_7 + poseidon2_params_C_1_2); + const auto poseidon2_ARK_1_3 = (new_term.poseidon2_T_0_4 + poseidon2_params_C_1_3); + const auto poseidon2_A_1_0 = ((((poseidon2_ARK_1_0 * poseidon2_ARK_1_0) * poseidon2_ARK_1_0) * poseidon2_ARK_1_0) * poseidon2_ARK_1_0); + const auto poseidon2_A_1_1 = ((((poseidon2_ARK_1_1 * poseidon2_ARK_1_1) * poseidon2_ARK_1_1) * poseidon2_ARK_1_1) * poseidon2_ARK_1_1); + const auto poseidon2_A_1_2 = ((((poseidon2_ARK_1_2 * poseidon2_ARK_1_2) * poseidon2_ARK_1_2) * poseidon2_ARK_1_2) * poseidon2_ARK_1_2); + const auto poseidon2_A_1_3 = ((((poseidon2_ARK_1_3 * poseidon2_ARK_1_3) * poseidon2_ARK_1_3) * poseidon2_ARK_1_3) * poseidon2_ARK_1_3); + const auto poseidon2_T_1_0 = (poseidon2_A_1_0 + poseidon2_A_1_1); + const auto poseidon2_T_1_1 = (poseidon2_A_1_2 + poseidon2_A_1_3); + const auto poseidon2_T_1_2 = ((FF(2) * poseidon2_A_1_1) + poseidon2_T_1_1); + const auto poseidon2_T_1_3 = ((FF(2) * poseidon2_A_1_3) + poseidon2_T_1_0); + const auto poseidon2_ARK_2_0 = (new_term.poseidon2_T_1_6 + poseidon2_params_C_2_0); + const auto poseidon2_ARK_2_1 = (new_term.poseidon2_T_1_5 + poseidon2_params_C_2_1); + const auto poseidon2_ARK_2_2 = (new_term.poseidon2_T_1_7 + poseidon2_params_C_2_2); + const auto poseidon2_ARK_2_3 = (new_term.poseidon2_T_1_4 + poseidon2_params_C_2_3); + const auto poseidon2_A_2_0 = ((((poseidon2_ARK_2_0 * poseidon2_ARK_2_0) * poseidon2_ARK_2_0) * poseidon2_ARK_2_0) * poseidon2_ARK_2_0); + const auto poseidon2_A_2_1 = ((((poseidon2_ARK_2_1 * poseidon2_ARK_2_1) * poseidon2_ARK_2_1) * poseidon2_ARK_2_1) * poseidon2_ARK_2_1); + const auto poseidon2_A_2_2 = ((((poseidon2_ARK_2_2 * poseidon2_ARK_2_2) * poseidon2_ARK_2_2) * poseidon2_ARK_2_2) * poseidon2_ARK_2_2); + const auto poseidon2_A_2_3 = ((((poseidon2_ARK_2_3 * poseidon2_ARK_2_3) * poseidon2_ARK_2_3) * poseidon2_ARK_2_3) * poseidon2_ARK_2_3); + const auto poseidon2_T_2_0 = (poseidon2_A_2_0 + poseidon2_A_2_1); + const auto poseidon2_T_2_1 = (poseidon2_A_2_2 + poseidon2_A_2_3); + const auto poseidon2_T_2_2 = ((FF(2) * poseidon2_A_2_1) + poseidon2_T_2_1); + const auto poseidon2_T_2_3 = ((FF(2) * poseidon2_A_2_3) + poseidon2_T_2_0); + const auto poseidon2_ARK_3_0 = (new_term.poseidon2_T_2_6 + poseidon2_params_C_3_0); + const auto poseidon2_ARK_3_1 = (new_term.poseidon2_T_2_5 + poseidon2_params_C_3_1); + const auto poseidon2_ARK_3_2 = (new_term.poseidon2_T_2_7 + poseidon2_params_C_3_2); + const auto poseidon2_ARK_3_3 = (new_term.poseidon2_T_2_4 + poseidon2_params_C_3_3); + const auto poseidon2_A_3_0 = ((((poseidon2_ARK_3_0 * poseidon2_ARK_3_0) * poseidon2_ARK_3_0) * poseidon2_ARK_3_0) * poseidon2_ARK_3_0); + const auto poseidon2_A_3_1 = ((((poseidon2_ARK_3_1 * poseidon2_ARK_3_1) * poseidon2_ARK_3_1) * poseidon2_ARK_3_1) * poseidon2_ARK_3_1); + const auto poseidon2_A_3_2 = ((((poseidon2_ARK_3_2 * poseidon2_ARK_3_2) * poseidon2_ARK_3_2) * poseidon2_ARK_3_2) * poseidon2_ARK_3_2); + const auto poseidon2_A_3_3 = ((((poseidon2_ARK_3_3 * poseidon2_ARK_3_3) * poseidon2_ARK_3_3) * poseidon2_ARK_3_3) * poseidon2_ARK_3_3); + const auto poseidon2_T_3_0 = (poseidon2_A_3_0 + poseidon2_A_3_1); + const auto poseidon2_T_3_1 = (poseidon2_A_3_2 + poseidon2_A_3_3); + const auto poseidon2_T_3_2 = ((FF(2) * poseidon2_A_3_1) + poseidon2_T_3_1); + const auto poseidon2_T_3_3 = ((FF(2) * poseidon2_A_3_3) + poseidon2_T_3_0); + const auto poseidon2_ARK_4_0 = (new_term.poseidon2_T_3_6 + poseidon2_params_C_4_0); + const auto poseidon2_ARK_4_1 = (new_term.poseidon2_T_3_5 + poseidon2_params_C_4_1); + const auto poseidon2_ARK_4_2 = (new_term.poseidon2_T_3_7 + poseidon2_params_C_4_2); + const auto poseidon2_ARK_4_3 = (new_term.poseidon2_T_3_4 + poseidon2_params_C_4_3); + const auto poseidon2_A_4_0 = ((((poseidon2_ARK_4_0 * poseidon2_ARK_4_0) * poseidon2_ARK_4_0) * poseidon2_ARK_4_0) * poseidon2_ARK_4_0); + const auto poseidon2_A_4_1 = poseidon2_ARK_4_1; + const auto poseidon2_A_4_2 = poseidon2_ARK_4_2; + const auto poseidon2_A_4_3 = poseidon2_ARK_4_3; + const auto poseidon2_SUM_4 = (((poseidon2_A_4_0 + poseidon2_A_4_1) + poseidon2_A_4_2) + poseidon2_A_4_3); + const auto poseidon2_ARK_5_0 = (new_term.poseidon2_B_4_0 + poseidon2_params_C_5_0); + const auto poseidon2_ARK_5_1 = (new_term.poseidon2_B_4_1 + poseidon2_params_C_5_1); + const auto poseidon2_ARK_5_2 = (new_term.poseidon2_B_4_2 + poseidon2_params_C_5_2); + const auto poseidon2_ARK_5_3 = (new_term.poseidon2_B_4_3 + poseidon2_params_C_5_3); + const auto poseidon2_A_5_0 = ((((poseidon2_ARK_5_0 * poseidon2_ARK_5_0) * poseidon2_ARK_5_0) * poseidon2_ARK_5_0) * poseidon2_ARK_5_0); + const auto poseidon2_A_5_1 = poseidon2_ARK_5_1; + const auto poseidon2_A_5_2 = poseidon2_ARK_5_2; + const auto poseidon2_A_5_3 = poseidon2_ARK_5_3; + const auto poseidon2_SUM_5 = (((poseidon2_A_5_0 + poseidon2_A_5_1) + poseidon2_A_5_2) + poseidon2_A_5_3); + const auto poseidon2_ARK_6_0 = (new_term.poseidon2_B_5_0 + poseidon2_params_C_6_0); + const auto poseidon2_ARK_6_1 = (new_term.poseidon2_B_5_1 + poseidon2_params_C_6_1); + const auto poseidon2_ARK_6_2 = (new_term.poseidon2_B_5_2 + poseidon2_params_C_6_2); + const auto poseidon2_ARK_6_3 = (new_term.poseidon2_B_5_3 + poseidon2_params_C_6_3); + const auto poseidon2_A_6_0 = ((((poseidon2_ARK_6_0 * poseidon2_ARK_6_0) * poseidon2_ARK_6_0) * poseidon2_ARK_6_0) * poseidon2_ARK_6_0); + const auto poseidon2_A_6_1 = poseidon2_ARK_6_1; + const auto poseidon2_A_6_2 = poseidon2_ARK_6_2; + const auto poseidon2_A_6_3 = poseidon2_ARK_6_3; + const auto poseidon2_SUM_6 = (((poseidon2_A_6_0 + poseidon2_A_6_1) + poseidon2_A_6_2) + poseidon2_A_6_3); + const auto poseidon2_ARK_7_0 = (new_term.poseidon2_B_6_0 + poseidon2_params_C_7_0); + const auto poseidon2_ARK_7_1 = (new_term.poseidon2_B_6_1 + poseidon2_params_C_7_1); + const auto poseidon2_ARK_7_2 = (new_term.poseidon2_B_6_2 + poseidon2_params_C_7_2); + const auto poseidon2_ARK_7_3 = (new_term.poseidon2_B_6_3 + poseidon2_params_C_7_3); + const auto poseidon2_A_7_0 = ((((poseidon2_ARK_7_0 * poseidon2_ARK_7_0) * poseidon2_ARK_7_0) * poseidon2_ARK_7_0) * poseidon2_ARK_7_0); + const auto poseidon2_A_7_1 = poseidon2_ARK_7_1; + const auto poseidon2_A_7_2 = poseidon2_ARK_7_2; + const auto poseidon2_A_7_3 = poseidon2_ARK_7_3; + const auto poseidon2_SUM_7 = (((poseidon2_A_7_0 + poseidon2_A_7_1) + poseidon2_A_7_2) + poseidon2_A_7_3); + const auto poseidon2_ARK_8_0 = (new_term.poseidon2_B_7_0 + poseidon2_params_C_8_0); + const auto poseidon2_ARK_8_1 = (new_term.poseidon2_B_7_1 + poseidon2_params_C_8_1); + const auto poseidon2_ARK_8_2 = (new_term.poseidon2_B_7_2 + poseidon2_params_C_8_2); + const auto poseidon2_ARK_8_3 = (new_term.poseidon2_B_7_3 + poseidon2_params_C_8_3); + const auto poseidon2_A_8_0 = ((((poseidon2_ARK_8_0 * poseidon2_ARK_8_0) * poseidon2_ARK_8_0) * poseidon2_ARK_8_0) * poseidon2_ARK_8_0); + const auto poseidon2_A_8_1 = poseidon2_ARK_8_1; + const auto poseidon2_A_8_2 = poseidon2_ARK_8_2; + const auto poseidon2_A_8_3 = poseidon2_ARK_8_3; + const auto poseidon2_SUM_8 = (((poseidon2_A_8_0 + poseidon2_A_8_1) + poseidon2_A_8_2) + poseidon2_A_8_3); + const auto poseidon2_ARK_9_0 = (new_term.poseidon2_B_8_0 + poseidon2_params_C_9_0); + const auto poseidon2_ARK_9_1 = (new_term.poseidon2_B_8_1 + poseidon2_params_C_9_1); + const auto poseidon2_ARK_9_2 = (new_term.poseidon2_B_8_2 + poseidon2_params_C_9_2); + const auto poseidon2_ARK_9_3 = (new_term.poseidon2_B_8_3 + poseidon2_params_C_9_3); + const auto poseidon2_A_9_0 = ((((poseidon2_ARK_9_0 * poseidon2_ARK_9_0) * poseidon2_ARK_9_0) * poseidon2_ARK_9_0) * poseidon2_ARK_9_0); + const auto poseidon2_A_9_1 = poseidon2_ARK_9_1; + const auto poseidon2_A_9_2 = poseidon2_ARK_9_2; + const auto poseidon2_A_9_3 = poseidon2_ARK_9_3; + const auto poseidon2_SUM_9 = (((poseidon2_A_9_0 + poseidon2_A_9_1) + poseidon2_A_9_2) + poseidon2_A_9_3); + const auto poseidon2_ARK_10_0 = (new_term.poseidon2_B_9_0 + poseidon2_params_C_10_0); + const auto poseidon2_ARK_10_1 = (new_term.poseidon2_B_9_1 + poseidon2_params_C_10_1); + const auto poseidon2_ARK_10_2 = (new_term.poseidon2_B_9_2 + poseidon2_params_C_10_2); + const auto poseidon2_ARK_10_3 = (new_term.poseidon2_B_9_3 + poseidon2_params_C_10_3); + const auto poseidon2_A_10_0 = ((((poseidon2_ARK_10_0 * poseidon2_ARK_10_0) * poseidon2_ARK_10_0) * poseidon2_ARK_10_0) * poseidon2_ARK_10_0); + const auto poseidon2_A_10_1 = poseidon2_ARK_10_1; + const auto poseidon2_A_10_2 = poseidon2_ARK_10_2; + const auto poseidon2_A_10_3 = poseidon2_ARK_10_3; + const auto poseidon2_SUM_10 = (((poseidon2_A_10_0 + poseidon2_A_10_1) + poseidon2_A_10_2) + poseidon2_A_10_3); + const auto poseidon2_ARK_11_0 = (new_term.poseidon2_B_10_0 + poseidon2_params_C_11_0); + const auto poseidon2_ARK_11_1 = (new_term.poseidon2_B_10_1 + poseidon2_params_C_11_1); + const auto poseidon2_ARK_11_2 = (new_term.poseidon2_B_10_2 + poseidon2_params_C_11_2); + const auto poseidon2_ARK_11_3 = (new_term.poseidon2_B_10_3 + poseidon2_params_C_11_3); + const auto poseidon2_A_11_0 = ((((poseidon2_ARK_11_0 * poseidon2_ARK_11_0) * poseidon2_ARK_11_0) * poseidon2_ARK_11_0) * poseidon2_ARK_11_0); + const auto poseidon2_A_11_1 = poseidon2_ARK_11_1; + const auto poseidon2_A_11_2 = poseidon2_ARK_11_2; + const auto poseidon2_A_11_3 = poseidon2_ARK_11_3; + const auto poseidon2_SUM_11 = (((poseidon2_A_11_0 + poseidon2_A_11_1) + poseidon2_A_11_2) + poseidon2_A_11_3); + const auto poseidon2_ARK_12_0 = (new_term.poseidon2_B_11_0 + poseidon2_params_C_12_0); + const auto poseidon2_ARK_12_1 = (new_term.poseidon2_B_11_1 + poseidon2_params_C_12_1); + const auto poseidon2_ARK_12_2 = (new_term.poseidon2_B_11_2 + poseidon2_params_C_12_2); + const auto poseidon2_ARK_12_3 = (new_term.poseidon2_B_11_3 + poseidon2_params_C_12_3); + const auto poseidon2_A_12_0 = ((((poseidon2_ARK_12_0 * poseidon2_ARK_12_0) * poseidon2_ARK_12_0) * poseidon2_ARK_12_0) * poseidon2_ARK_12_0); + const auto poseidon2_A_12_1 = poseidon2_ARK_12_1; + const auto poseidon2_A_12_2 = poseidon2_ARK_12_2; + const auto poseidon2_A_12_3 = poseidon2_ARK_12_3; + const auto poseidon2_SUM_12 = (((poseidon2_A_12_0 + poseidon2_A_12_1) + poseidon2_A_12_2) + poseidon2_A_12_3); + const auto poseidon2_ARK_13_0 = (new_term.poseidon2_B_12_0 + poseidon2_params_C_13_0); + const auto poseidon2_ARK_13_1 = (new_term.poseidon2_B_12_1 + poseidon2_params_C_13_1); + const auto poseidon2_ARK_13_2 = (new_term.poseidon2_B_12_2 + poseidon2_params_C_13_2); + const auto poseidon2_ARK_13_3 = (new_term.poseidon2_B_12_3 + poseidon2_params_C_13_3); + const auto poseidon2_A_13_0 = ((((poseidon2_ARK_13_0 * poseidon2_ARK_13_0) * poseidon2_ARK_13_0) * poseidon2_ARK_13_0) * poseidon2_ARK_13_0); + const auto poseidon2_A_13_1 = poseidon2_ARK_13_1; + const auto poseidon2_A_13_2 = poseidon2_ARK_13_2; + const auto poseidon2_A_13_3 = poseidon2_ARK_13_3; + const auto poseidon2_SUM_13 = (((poseidon2_A_13_0 + poseidon2_A_13_1) + poseidon2_A_13_2) + poseidon2_A_13_3); + const auto poseidon2_ARK_14_0 = (new_term.poseidon2_B_13_0 + poseidon2_params_C_14_0); + const auto poseidon2_ARK_14_1 = (new_term.poseidon2_B_13_1 + poseidon2_params_C_14_1); + const auto poseidon2_ARK_14_2 = (new_term.poseidon2_B_13_2 + poseidon2_params_C_14_2); + const auto poseidon2_ARK_14_3 = (new_term.poseidon2_B_13_3 + poseidon2_params_C_14_3); + const auto poseidon2_A_14_0 = ((((poseidon2_ARK_14_0 * poseidon2_ARK_14_0) * poseidon2_ARK_14_0) * poseidon2_ARK_14_0) * poseidon2_ARK_14_0); + const auto poseidon2_A_14_1 = poseidon2_ARK_14_1; + const auto poseidon2_A_14_2 = poseidon2_ARK_14_2; + const auto poseidon2_A_14_3 = poseidon2_ARK_14_3; + const auto poseidon2_SUM_14 = (((poseidon2_A_14_0 + poseidon2_A_14_1) + poseidon2_A_14_2) + poseidon2_A_14_3); + const auto poseidon2_ARK_15_0 = (new_term.poseidon2_B_14_0 + poseidon2_params_C_15_0); + const auto poseidon2_ARK_15_1 = (new_term.poseidon2_B_14_1 + poseidon2_params_C_15_1); + const auto poseidon2_ARK_15_2 = (new_term.poseidon2_B_14_2 + poseidon2_params_C_15_2); + const auto poseidon2_ARK_15_3 = (new_term.poseidon2_B_14_3 + poseidon2_params_C_15_3); + const auto poseidon2_A_15_0 = ((((poseidon2_ARK_15_0 * poseidon2_ARK_15_0) * poseidon2_ARK_15_0) * poseidon2_ARK_15_0) * poseidon2_ARK_15_0); + const auto poseidon2_A_15_1 = poseidon2_ARK_15_1; + const auto poseidon2_A_15_2 = poseidon2_ARK_15_2; + const auto poseidon2_A_15_3 = poseidon2_ARK_15_3; + const auto poseidon2_SUM_15 = (((poseidon2_A_15_0 + poseidon2_A_15_1) + poseidon2_A_15_2) + poseidon2_A_15_3); + const auto poseidon2_ARK_16_0 = (new_term.poseidon2_B_15_0 + poseidon2_params_C_16_0); + const auto poseidon2_ARK_16_1 = (new_term.poseidon2_B_15_1 + poseidon2_params_C_16_1); + const auto poseidon2_ARK_16_2 = (new_term.poseidon2_B_15_2 + poseidon2_params_C_16_2); + const auto poseidon2_ARK_16_3 = (new_term.poseidon2_B_15_3 + poseidon2_params_C_16_3); + const auto poseidon2_A_16_0 = ((((poseidon2_ARK_16_0 * poseidon2_ARK_16_0) * poseidon2_ARK_16_0) * poseidon2_ARK_16_0) * poseidon2_ARK_16_0); + const auto poseidon2_A_16_1 = poseidon2_ARK_16_1; + const auto poseidon2_A_16_2 = poseidon2_ARK_16_2; + const auto poseidon2_A_16_3 = poseidon2_ARK_16_3; + const auto poseidon2_SUM_16 = (((poseidon2_A_16_0 + poseidon2_A_16_1) + poseidon2_A_16_2) + poseidon2_A_16_3); + const auto poseidon2_ARK_17_0 = (new_term.poseidon2_B_16_0 + poseidon2_params_C_17_0); + const auto poseidon2_ARK_17_1 = (new_term.poseidon2_B_16_1 + poseidon2_params_C_17_1); + const auto poseidon2_ARK_17_2 = (new_term.poseidon2_B_16_2 + poseidon2_params_C_17_2); + const auto poseidon2_ARK_17_3 = (new_term.poseidon2_B_16_3 + poseidon2_params_C_17_3); + const auto poseidon2_A_17_0 = ((((poseidon2_ARK_17_0 * poseidon2_ARK_17_0) * poseidon2_ARK_17_0) * poseidon2_ARK_17_0) * poseidon2_ARK_17_0); + const auto poseidon2_A_17_1 = poseidon2_ARK_17_1; + const auto poseidon2_A_17_2 = poseidon2_ARK_17_2; + const auto poseidon2_A_17_3 = poseidon2_ARK_17_3; + const auto poseidon2_SUM_17 = (((poseidon2_A_17_0 + poseidon2_A_17_1) + poseidon2_A_17_2) + poseidon2_A_17_3); + const auto poseidon2_ARK_18_0 = (new_term.poseidon2_B_17_0 + poseidon2_params_C_18_0); + const auto poseidon2_ARK_18_1 = (new_term.poseidon2_B_17_1 + poseidon2_params_C_18_1); + const auto poseidon2_ARK_18_2 = (new_term.poseidon2_B_17_2 + poseidon2_params_C_18_2); + const auto poseidon2_ARK_18_3 = (new_term.poseidon2_B_17_3 + poseidon2_params_C_18_3); + const auto poseidon2_A_18_0 = ((((poseidon2_ARK_18_0 * poseidon2_ARK_18_0) * poseidon2_ARK_18_0) * poseidon2_ARK_18_0) * poseidon2_ARK_18_0); + const auto poseidon2_A_18_1 = poseidon2_ARK_18_1; + const auto poseidon2_A_18_2 = poseidon2_ARK_18_2; + const auto poseidon2_A_18_3 = poseidon2_ARK_18_3; + const auto poseidon2_SUM_18 = (((poseidon2_A_18_0 + poseidon2_A_18_1) + poseidon2_A_18_2) + poseidon2_A_18_3); + const auto poseidon2_ARK_19_0 = (new_term.poseidon2_B_18_0 + poseidon2_params_C_19_0); + const auto poseidon2_ARK_19_1 = (new_term.poseidon2_B_18_1 + poseidon2_params_C_19_1); + const auto poseidon2_ARK_19_2 = (new_term.poseidon2_B_18_2 + poseidon2_params_C_19_2); + const auto poseidon2_ARK_19_3 = (new_term.poseidon2_B_18_3 + poseidon2_params_C_19_3); + const auto poseidon2_A_19_0 = ((((poseidon2_ARK_19_0 * poseidon2_ARK_19_0) * poseidon2_ARK_19_0) * poseidon2_ARK_19_0) * poseidon2_ARK_19_0); + const auto poseidon2_A_19_1 = poseidon2_ARK_19_1; + const auto poseidon2_A_19_2 = poseidon2_ARK_19_2; + const auto poseidon2_A_19_3 = poseidon2_ARK_19_3; + const auto poseidon2_SUM_19 = (((poseidon2_A_19_0 + poseidon2_A_19_1) + poseidon2_A_19_2) + poseidon2_A_19_3); + const auto poseidon2_ARK_20_0 = (new_term.poseidon2_B_19_0 + poseidon2_params_C_20_0); + const auto poseidon2_ARK_20_1 = (new_term.poseidon2_B_19_1 + poseidon2_params_C_20_1); + const auto poseidon2_ARK_20_2 = (new_term.poseidon2_B_19_2 + poseidon2_params_C_20_2); + const auto poseidon2_ARK_20_3 = (new_term.poseidon2_B_19_3 + poseidon2_params_C_20_3); + const auto poseidon2_A_20_0 = ((((poseidon2_ARK_20_0 * poseidon2_ARK_20_0) * poseidon2_ARK_20_0) * poseidon2_ARK_20_0) * poseidon2_ARK_20_0); + const auto poseidon2_A_20_1 = poseidon2_ARK_20_1; + const auto poseidon2_A_20_2 = poseidon2_ARK_20_2; + const auto poseidon2_A_20_3 = poseidon2_ARK_20_3; + const auto poseidon2_SUM_20 = (((poseidon2_A_20_0 + poseidon2_A_20_1) + poseidon2_A_20_2) + poseidon2_A_20_3); + const auto poseidon2_ARK_21_0 = (new_term.poseidon2_B_20_0 + poseidon2_params_C_21_0); + const auto poseidon2_ARK_21_1 = (new_term.poseidon2_B_20_1 + poseidon2_params_C_21_1); + const auto poseidon2_ARK_21_2 = (new_term.poseidon2_B_20_2 + poseidon2_params_C_21_2); + const auto poseidon2_ARK_21_3 = (new_term.poseidon2_B_20_3 + poseidon2_params_C_21_3); + const auto poseidon2_A_21_0 = ((((poseidon2_ARK_21_0 * poseidon2_ARK_21_0) * poseidon2_ARK_21_0) * poseidon2_ARK_21_0) * poseidon2_ARK_21_0); + const auto poseidon2_A_21_1 = poseidon2_ARK_21_1; + const auto poseidon2_A_21_2 = poseidon2_ARK_21_2; + const auto poseidon2_A_21_3 = poseidon2_ARK_21_3; + const auto poseidon2_SUM_21 = (((poseidon2_A_21_0 + poseidon2_A_21_1) + poseidon2_A_21_2) + poseidon2_A_21_3); + const auto poseidon2_ARK_22_0 = (new_term.poseidon2_B_21_0 + poseidon2_params_C_22_0); + const auto poseidon2_ARK_22_1 = (new_term.poseidon2_B_21_1 + poseidon2_params_C_22_1); + const auto poseidon2_ARK_22_2 = (new_term.poseidon2_B_21_2 + poseidon2_params_C_22_2); + const auto poseidon2_ARK_22_3 = (new_term.poseidon2_B_21_3 + poseidon2_params_C_22_3); + const auto poseidon2_A_22_0 = ((((poseidon2_ARK_22_0 * poseidon2_ARK_22_0) * poseidon2_ARK_22_0) * poseidon2_ARK_22_0) * poseidon2_ARK_22_0); + const auto poseidon2_A_22_1 = poseidon2_ARK_22_1; + const auto poseidon2_A_22_2 = poseidon2_ARK_22_2; + const auto poseidon2_A_22_3 = poseidon2_ARK_22_3; + const auto poseidon2_SUM_22 = (((poseidon2_A_22_0 + poseidon2_A_22_1) + poseidon2_A_22_2) + poseidon2_A_22_3); + const auto poseidon2_ARK_23_0 = (new_term.poseidon2_B_22_0 + poseidon2_params_C_23_0); + const auto poseidon2_ARK_23_1 = (new_term.poseidon2_B_22_1 + poseidon2_params_C_23_1); + const auto poseidon2_ARK_23_2 = (new_term.poseidon2_B_22_2 + poseidon2_params_C_23_2); + const auto poseidon2_ARK_23_3 = (new_term.poseidon2_B_22_3 + poseidon2_params_C_23_3); + const auto poseidon2_A_23_0 = ((((poseidon2_ARK_23_0 * poseidon2_ARK_23_0) * poseidon2_ARK_23_0) * poseidon2_ARK_23_0) * poseidon2_ARK_23_0); + const auto poseidon2_A_23_1 = poseidon2_ARK_23_1; + const auto poseidon2_A_23_2 = poseidon2_ARK_23_2; + const auto poseidon2_A_23_3 = poseidon2_ARK_23_3; + const auto poseidon2_SUM_23 = (((poseidon2_A_23_0 + poseidon2_A_23_1) + poseidon2_A_23_2) + poseidon2_A_23_3); + const auto poseidon2_ARK_24_0 = (new_term.poseidon2_B_23_0 + poseidon2_params_C_24_0); + const auto poseidon2_ARK_24_1 = (new_term.poseidon2_B_23_1 + poseidon2_params_C_24_1); + const auto poseidon2_ARK_24_2 = (new_term.poseidon2_B_23_2 + poseidon2_params_C_24_2); + const auto poseidon2_ARK_24_3 = (new_term.poseidon2_B_23_3 + poseidon2_params_C_24_3); + const auto poseidon2_A_24_0 = ((((poseidon2_ARK_24_0 * poseidon2_ARK_24_0) * poseidon2_ARK_24_0) * poseidon2_ARK_24_0) * poseidon2_ARK_24_0); + const auto poseidon2_A_24_1 = poseidon2_ARK_24_1; + const auto poseidon2_A_24_2 = poseidon2_ARK_24_2; + const auto poseidon2_A_24_3 = poseidon2_ARK_24_3; + const auto poseidon2_SUM_24 = (((poseidon2_A_24_0 + poseidon2_A_24_1) + poseidon2_A_24_2) + poseidon2_A_24_3); + const auto poseidon2_ARK_25_0 = (new_term.poseidon2_B_24_0 + poseidon2_params_C_25_0); + const auto poseidon2_ARK_25_1 = (new_term.poseidon2_B_24_1 + poseidon2_params_C_25_1); + const auto poseidon2_ARK_25_2 = (new_term.poseidon2_B_24_2 + poseidon2_params_C_25_2); + const auto poseidon2_ARK_25_3 = (new_term.poseidon2_B_24_3 + poseidon2_params_C_25_3); + const auto poseidon2_A_25_0 = ((((poseidon2_ARK_25_0 * poseidon2_ARK_25_0) * poseidon2_ARK_25_0) * poseidon2_ARK_25_0) * poseidon2_ARK_25_0); + const auto poseidon2_A_25_1 = poseidon2_ARK_25_1; + const auto poseidon2_A_25_2 = poseidon2_ARK_25_2; + const auto poseidon2_A_25_3 = poseidon2_ARK_25_3; + const auto poseidon2_SUM_25 = (((poseidon2_A_25_0 + poseidon2_A_25_1) + poseidon2_A_25_2) + poseidon2_A_25_3); + const auto poseidon2_ARK_26_0 = (new_term.poseidon2_B_25_0 + poseidon2_params_C_26_0); + const auto poseidon2_ARK_26_1 = (new_term.poseidon2_B_25_1 + poseidon2_params_C_26_1); + const auto poseidon2_ARK_26_2 = (new_term.poseidon2_B_25_2 + poseidon2_params_C_26_2); + const auto poseidon2_ARK_26_3 = (new_term.poseidon2_B_25_3 + poseidon2_params_C_26_3); + const auto poseidon2_A_26_0 = ((((poseidon2_ARK_26_0 * poseidon2_ARK_26_0) * poseidon2_ARK_26_0) * poseidon2_ARK_26_0) * poseidon2_ARK_26_0); + const auto poseidon2_A_26_1 = poseidon2_ARK_26_1; + const auto poseidon2_A_26_2 = poseidon2_ARK_26_2; + const auto poseidon2_A_26_3 = poseidon2_ARK_26_3; + const auto poseidon2_SUM_26 = (((poseidon2_A_26_0 + poseidon2_A_26_1) + poseidon2_A_26_2) + poseidon2_A_26_3); + const auto poseidon2_ARK_27_0 = (new_term.poseidon2_B_26_0 + poseidon2_params_C_27_0); + const auto poseidon2_ARK_27_1 = (new_term.poseidon2_B_26_1 + poseidon2_params_C_27_1); + const auto poseidon2_ARK_27_2 = (new_term.poseidon2_B_26_2 + poseidon2_params_C_27_2); + const auto poseidon2_ARK_27_3 = (new_term.poseidon2_B_26_3 + poseidon2_params_C_27_3); + const auto poseidon2_A_27_0 = ((((poseidon2_ARK_27_0 * poseidon2_ARK_27_0) * poseidon2_ARK_27_0) * poseidon2_ARK_27_0) * poseidon2_ARK_27_0); + const auto poseidon2_A_27_1 = poseidon2_ARK_27_1; + const auto poseidon2_A_27_2 = poseidon2_ARK_27_2; + const auto poseidon2_A_27_3 = poseidon2_ARK_27_3; + const auto poseidon2_SUM_27 = (((poseidon2_A_27_0 + poseidon2_A_27_1) + poseidon2_A_27_2) + poseidon2_A_27_3); + const auto poseidon2_ARK_28_0 = (new_term.poseidon2_B_27_0 + poseidon2_params_C_28_0); + const auto poseidon2_ARK_28_1 = (new_term.poseidon2_B_27_1 + poseidon2_params_C_28_1); + const auto poseidon2_ARK_28_2 = (new_term.poseidon2_B_27_2 + poseidon2_params_C_28_2); + const auto poseidon2_ARK_28_3 = (new_term.poseidon2_B_27_3 + poseidon2_params_C_28_3); + const auto poseidon2_A_28_0 = ((((poseidon2_ARK_28_0 * poseidon2_ARK_28_0) * poseidon2_ARK_28_0) * poseidon2_ARK_28_0) * poseidon2_ARK_28_0); + const auto poseidon2_A_28_1 = poseidon2_ARK_28_1; + const auto poseidon2_A_28_2 = poseidon2_ARK_28_2; + const auto poseidon2_A_28_3 = poseidon2_ARK_28_3; + const auto poseidon2_SUM_28 = (((poseidon2_A_28_0 + poseidon2_A_28_1) + poseidon2_A_28_2) + poseidon2_A_28_3); + const auto poseidon2_ARK_29_0 = (new_term.poseidon2_B_28_0 + poseidon2_params_C_29_0); + const auto poseidon2_ARK_29_1 = (new_term.poseidon2_B_28_1 + poseidon2_params_C_29_1); + const auto poseidon2_ARK_29_2 = (new_term.poseidon2_B_28_2 + poseidon2_params_C_29_2); + const auto poseidon2_ARK_29_3 = (new_term.poseidon2_B_28_3 + poseidon2_params_C_29_3); + const auto poseidon2_A_29_0 = ((((poseidon2_ARK_29_0 * poseidon2_ARK_29_0) * poseidon2_ARK_29_0) * poseidon2_ARK_29_0) * poseidon2_ARK_29_0); + const auto poseidon2_A_29_1 = poseidon2_ARK_29_1; + const auto poseidon2_A_29_2 = poseidon2_ARK_29_2; + const auto poseidon2_A_29_3 = poseidon2_ARK_29_3; + const auto poseidon2_SUM_29 = (((poseidon2_A_29_0 + poseidon2_A_29_1) + poseidon2_A_29_2) + poseidon2_A_29_3); + const auto poseidon2_ARK_30_0 = (new_term.poseidon2_B_29_0 + poseidon2_params_C_30_0); + const auto poseidon2_ARK_30_1 = (new_term.poseidon2_B_29_1 + poseidon2_params_C_30_1); + const auto poseidon2_ARK_30_2 = (new_term.poseidon2_B_29_2 + poseidon2_params_C_30_2); + const auto poseidon2_ARK_30_3 = (new_term.poseidon2_B_29_3 + poseidon2_params_C_30_3); + const auto poseidon2_A_30_0 = ((((poseidon2_ARK_30_0 * poseidon2_ARK_30_0) * poseidon2_ARK_30_0) * poseidon2_ARK_30_0) * poseidon2_ARK_30_0); + const auto poseidon2_A_30_1 = poseidon2_ARK_30_1; + const auto poseidon2_A_30_2 = poseidon2_ARK_30_2; + const auto poseidon2_A_30_3 = poseidon2_ARK_30_3; + const auto poseidon2_SUM_30 = (((poseidon2_A_30_0 + poseidon2_A_30_1) + poseidon2_A_30_2) + poseidon2_A_30_3); + const auto poseidon2_ARK_31_0 = (new_term.poseidon2_B_30_0 + poseidon2_params_C_31_0); + const auto poseidon2_ARK_31_1 = (new_term.poseidon2_B_30_1 + poseidon2_params_C_31_1); + const auto poseidon2_ARK_31_2 = (new_term.poseidon2_B_30_2 + poseidon2_params_C_31_2); + const auto poseidon2_ARK_31_3 = (new_term.poseidon2_B_30_3 + poseidon2_params_C_31_3); + const auto poseidon2_A_31_0 = ((((poseidon2_ARK_31_0 * poseidon2_ARK_31_0) * poseidon2_ARK_31_0) * poseidon2_ARK_31_0) * poseidon2_ARK_31_0); + const auto poseidon2_A_31_1 = poseidon2_ARK_31_1; + const auto poseidon2_A_31_2 = poseidon2_ARK_31_2; + const auto poseidon2_A_31_3 = poseidon2_ARK_31_3; + const auto poseidon2_SUM_31 = (((poseidon2_A_31_0 + poseidon2_A_31_1) + poseidon2_A_31_2) + poseidon2_A_31_3); + const auto poseidon2_ARK_32_0 = (new_term.poseidon2_B_31_0 + poseidon2_params_C_32_0); + const auto poseidon2_ARK_32_1 = (new_term.poseidon2_B_31_1 + poseidon2_params_C_32_1); + const auto poseidon2_ARK_32_2 = (new_term.poseidon2_B_31_2 + poseidon2_params_C_32_2); + const auto poseidon2_ARK_32_3 = (new_term.poseidon2_B_31_3 + poseidon2_params_C_32_3); + const auto poseidon2_A_32_0 = ((((poseidon2_ARK_32_0 * poseidon2_ARK_32_0) * poseidon2_ARK_32_0) * poseidon2_ARK_32_0) * poseidon2_ARK_32_0); + const auto poseidon2_A_32_1 = poseidon2_ARK_32_1; + const auto poseidon2_A_32_2 = poseidon2_ARK_32_2; + const auto poseidon2_A_32_3 = poseidon2_ARK_32_3; + const auto poseidon2_SUM_32 = (((poseidon2_A_32_0 + poseidon2_A_32_1) + poseidon2_A_32_2) + poseidon2_A_32_3); + const auto poseidon2_ARK_33_0 = (new_term.poseidon2_B_32_0 + poseidon2_params_C_33_0); + const auto poseidon2_ARK_33_1 = (new_term.poseidon2_B_32_1 + poseidon2_params_C_33_1); + const auto poseidon2_ARK_33_2 = (new_term.poseidon2_B_32_2 + poseidon2_params_C_33_2); + const auto poseidon2_ARK_33_3 = (new_term.poseidon2_B_32_3 + poseidon2_params_C_33_3); + const auto poseidon2_A_33_0 = ((((poseidon2_ARK_33_0 * poseidon2_ARK_33_0) * poseidon2_ARK_33_0) * poseidon2_ARK_33_0) * poseidon2_ARK_33_0); + const auto poseidon2_A_33_1 = poseidon2_ARK_33_1; + const auto poseidon2_A_33_2 = poseidon2_ARK_33_2; + const auto poseidon2_A_33_3 = poseidon2_ARK_33_3; + const auto poseidon2_SUM_33 = (((poseidon2_A_33_0 + poseidon2_A_33_1) + poseidon2_A_33_2) + poseidon2_A_33_3); + const auto poseidon2_ARK_34_0 = (new_term.poseidon2_B_33_0 + poseidon2_params_C_34_0); + const auto poseidon2_ARK_34_1 = (new_term.poseidon2_B_33_1 + poseidon2_params_C_34_1); + const auto poseidon2_ARK_34_2 = (new_term.poseidon2_B_33_2 + poseidon2_params_C_34_2); + const auto poseidon2_ARK_34_3 = (new_term.poseidon2_B_33_3 + poseidon2_params_C_34_3); + const auto poseidon2_A_34_0 = ((((poseidon2_ARK_34_0 * poseidon2_ARK_34_0) * poseidon2_ARK_34_0) * poseidon2_ARK_34_0) * poseidon2_ARK_34_0); + const auto poseidon2_A_34_1 = poseidon2_ARK_34_1; + const auto poseidon2_A_34_2 = poseidon2_ARK_34_2; + const auto poseidon2_A_34_3 = poseidon2_ARK_34_3; + const auto poseidon2_SUM_34 = (((poseidon2_A_34_0 + poseidon2_A_34_1) + poseidon2_A_34_2) + poseidon2_A_34_3); + const auto poseidon2_ARK_35_0 = (new_term.poseidon2_B_34_0 + poseidon2_params_C_35_0); + const auto poseidon2_ARK_35_1 = (new_term.poseidon2_B_34_1 + poseidon2_params_C_35_1); + const auto poseidon2_ARK_35_2 = (new_term.poseidon2_B_34_2 + poseidon2_params_C_35_2); + const auto poseidon2_ARK_35_3 = (new_term.poseidon2_B_34_3 + poseidon2_params_C_35_3); + const auto poseidon2_A_35_0 = ((((poseidon2_ARK_35_0 * poseidon2_ARK_35_0) * poseidon2_ARK_35_0) * poseidon2_ARK_35_0) * poseidon2_ARK_35_0); + const auto poseidon2_A_35_1 = poseidon2_ARK_35_1; + const auto poseidon2_A_35_2 = poseidon2_ARK_35_2; + const auto poseidon2_A_35_3 = poseidon2_ARK_35_3; + const auto poseidon2_SUM_35 = (((poseidon2_A_35_0 + poseidon2_A_35_1) + poseidon2_A_35_2) + poseidon2_A_35_3); + const auto poseidon2_ARK_36_0 = (new_term.poseidon2_B_35_0 + poseidon2_params_C_36_0); + const auto poseidon2_ARK_36_1 = (new_term.poseidon2_B_35_1 + poseidon2_params_C_36_1); + const auto poseidon2_ARK_36_2 = (new_term.poseidon2_B_35_2 + poseidon2_params_C_36_2); + const auto poseidon2_ARK_36_3 = (new_term.poseidon2_B_35_3 + poseidon2_params_C_36_3); + const auto poseidon2_A_36_0 = ((((poseidon2_ARK_36_0 * poseidon2_ARK_36_0) * poseidon2_ARK_36_0) * poseidon2_ARK_36_0) * poseidon2_ARK_36_0); + const auto poseidon2_A_36_1 = poseidon2_ARK_36_1; + const auto poseidon2_A_36_2 = poseidon2_ARK_36_2; + const auto poseidon2_A_36_3 = poseidon2_ARK_36_3; + const auto poseidon2_SUM_36 = (((poseidon2_A_36_0 + poseidon2_A_36_1) + poseidon2_A_36_2) + poseidon2_A_36_3); + const auto poseidon2_ARK_37_0 = (new_term.poseidon2_B_36_0 + poseidon2_params_C_37_0); + const auto poseidon2_ARK_37_1 = (new_term.poseidon2_B_36_1 + poseidon2_params_C_37_1); + const auto poseidon2_ARK_37_2 = (new_term.poseidon2_B_36_2 + poseidon2_params_C_37_2); + const auto poseidon2_ARK_37_3 = (new_term.poseidon2_B_36_3 + poseidon2_params_C_37_3); + const auto poseidon2_A_37_0 = ((((poseidon2_ARK_37_0 * poseidon2_ARK_37_0) * poseidon2_ARK_37_0) * poseidon2_ARK_37_0) * poseidon2_ARK_37_0); + const auto poseidon2_A_37_1 = poseidon2_ARK_37_1; + const auto poseidon2_A_37_2 = poseidon2_ARK_37_2; + const auto poseidon2_A_37_3 = poseidon2_ARK_37_3; + const auto poseidon2_SUM_37 = (((poseidon2_A_37_0 + poseidon2_A_37_1) + poseidon2_A_37_2) + poseidon2_A_37_3); + const auto poseidon2_ARK_38_0 = (new_term.poseidon2_B_37_0 + poseidon2_params_C_38_0); + const auto poseidon2_ARK_38_1 = (new_term.poseidon2_B_37_1 + poseidon2_params_C_38_1); + const auto poseidon2_ARK_38_2 = (new_term.poseidon2_B_37_2 + poseidon2_params_C_38_2); + const auto poseidon2_ARK_38_3 = (new_term.poseidon2_B_37_3 + poseidon2_params_C_38_3); + const auto poseidon2_A_38_0 = ((((poseidon2_ARK_38_0 * poseidon2_ARK_38_0) * poseidon2_ARK_38_0) * poseidon2_ARK_38_0) * poseidon2_ARK_38_0); + const auto poseidon2_A_38_1 = poseidon2_ARK_38_1; + const auto poseidon2_A_38_2 = poseidon2_ARK_38_2; + const auto poseidon2_A_38_3 = poseidon2_ARK_38_3; + const auto poseidon2_SUM_38 = (((poseidon2_A_38_0 + poseidon2_A_38_1) + poseidon2_A_38_2) + poseidon2_A_38_3); + const auto poseidon2_ARK_39_0 = (new_term.poseidon2_B_38_0 + poseidon2_params_C_39_0); + const auto poseidon2_ARK_39_1 = (new_term.poseidon2_B_38_1 + poseidon2_params_C_39_1); + const auto poseidon2_ARK_39_2 = (new_term.poseidon2_B_38_2 + poseidon2_params_C_39_2); + const auto poseidon2_ARK_39_3 = (new_term.poseidon2_B_38_3 + poseidon2_params_C_39_3); + const auto poseidon2_A_39_0 = ((((poseidon2_ARK_39_0 * poseidon2_ARK_39_0) * poseidon2_ARK_39_0) * poseidon2_ARK_39_0) * poseidon2_ARK_39_0); + const auto poseidon2_A_39_1 = poseidon2_ARK_39_1; + const auto poseidon2_A_39_2 = poseidon2_ARK_39_2; + const auto poseidon2_A_39_3 = poseidon2_ARK_39_3; + const auto poseidon2_SUM_39 = (((poseidon2_A_39_0 + poseidon2_A_39_1) + poseidon2_A_39_2) + poseidon2_A_39_3); + const auto poseidon2_ARK_40_0 = (new_term.poseidon2_B_39_0 + poseidon2_params_C_40_0); + const auto poseidon2_ARK_40_1 = (new_term.poseidon2_B_39_1 + poseidon2_params_C_40_1); + const auto poseidon2_ARK_40_2 = (new_term.poseidon2_B_39_2 + poseidon2_params_C_40_2); + const auto poseidon2_ARK_40_3 = (new_term.poseidon2_B_39_3 + poseidon2_params_C_40_3); + const auto poseidon2_A_40_0 = ((((poseidon2_ARK_40_0 * poseidon2_ARK_40_0) * poseidon2_ARK_40_0) * poseidon2_ARK_40_0) * poseidon2_ARK_40_0); + const auto poseidon2_A_40_1 = poseidon2_ARK_40_1; + const auto poseidon2_A_40_2 = poseidon2_ARK_40_2; + const auto poseidon2_A_40_3 = poseidon2_ARK_40_3; + const auto poseidon2_SUM_40 = (((poseidon2_A_40_0 + poseidon2_A_40_1) + poseidon2_A_40_2) + poseidon2_A_40_3); + const auto poseidon2_ARK_41_0 = (new_term.poseidon2_B_40_0 + poseidon2_params_C_41_0); + const auto poseidon2_ARK_41_1 = (new_term.poseidon2_B_40_1 + poseidon2_params_C_41_1); + const auto poseidon2_ARK_41_2 = (new_term.poseidon2_B_40_2 + poseidon2_params_C_41_2); + const auto poseidon2_ARK_41_3 = (new_term.poseidon2_B_40_3 + poseidon2_params_C_41_3); + const auto poseidon2_A_41_0 = ((((poseidon2_ARK_41_0 * poseidon2_ARK_41_0) * poseidon2_ARK_41_0) * poseidon2_ARK_41_0) * poseidon2_ARK_41_0); + const auto poseidon2_A_41_1 = poseidon2_ARK_41_1; + const auto poseidon2_A_41_2 = poseidon2_ARK_41_2; + const auto poseidon2_A_41_3 = poseidon2_ARK_41_3; + const auto poseidon2_SUM_41 = (((poseidon2_A_41_0 + poseidon2_A_41_1) + poseidon2_A_41_2) + poseidon2_A_41_3); + const auto poseidon2_ARK_42_0 = (new_term.poseidon2_B_41_0 + poseidon2_params_C_42_0); + const auto poseidon2_ARK_42_1 = (new_term.poseidon2_B_41_1 + poseidon2_params_C_42_1); + const auto poseidon2_ARK_42_2 = (new_term.poseidon2_B_41_2 + poseidon2_params_C_42_2); + const auto poseidon2_ARK_42_3 = (new_term.poseidon2_B_41_3 + poseidon2_params_C_42_3); + const auto poseidon2_A_42_0 = ((((poseidon2_ARK_42_0 * poseidon2_ARK_42_0) * poseidon2_ARK_42_0) * poseidon2_ARK_42_0) * poseidon2_ARK_42_0); + const auto poseidon2_A_42_1 = poseidon2_ARK_42_1; + const auto poseidon2_A_42_2 = poseidon2_ARK_42_2; + const auto poseidon2_A_42_3 = poseidon2_ARK_42_3; + const auto poseidon2_SUM_42 = (((poseidon2_A_42_0 + poseidon2_A_42_1) + poseidon2_A_42_2) + poseidon2_A_42_3); + const auto poseidon2_ARK_43_0 = (new_term.poseidon2_B_42_0 + poseidon2_params_C_43_0); + const auto poseidon2_ARK_43_1 = (new_term.poseidon2_B_42_1 + poseidon2_params_C_43_1); + const auto poseidon2_ARK_43_2 = (new_term.poseidon2_B_42_2 + poseidon2_params_C_43_2); + const auto poseidon2_ARK_43_3 = (new_term.poseidon2_B_42_3 + poseidon2_params_C_43_3); + const auto poseidon2_A_43_0 = ((((poseidon2_ARK_43_0 * poseidon2_ARK_43_0) * poseidon2_ARK_43_0) * poseidon2_ARK_43_0) * poseidon2_ARK_43_0); + const auto poseidon2_A_43_1 = poseidon2_ARK_43_1; + const auto poseidon2_A_43_2 = poseidon2_ARK_43_2; + const auto poseidon2_A_43_3 = poseidon2_ARK_43_3; + const auto poseidon2_SUM_43 = (((poseidon2_A_43_0 + poseidon2_A_43_1) + poseidon2_A_43_2) + poseidon2_A_43_3); + const auto poseidon2_ARK_44_0 = (new_term.poseidon2_B_43_0 + poseidon2_params_C_44_0); + const auto poseidon2_ARK_44_1 = (new_term.poseidon2_B_43_1 + poseidon2_params_C_44_1); + const auto poseidon2_ARK_44_2 = (new_term.poseidon2_B_43_2 + poseidon2_params_C_44_2); + const auto poseidon2_ARK_44_3 = (new_term.poseidon2_B_43_3 + poseidon2_params_C_44_3); + const auto poseidon2_A_44_0 = ((((poseidon2_ARK_44_0 * poseidon2_ARK_44_0) * poseidon2_ARK_44_0) * poseidon2_ARK_44_0) * poseidon2_ARK_44_0); + const auto poseidon2_A_44_1 = poseidon2_ARK_44_1; + const auto poseidon2_A_44_2 = poseidon2_ARK_44_2; + const auto poseidon2_A_44_3 = poseidon2_ARK_44_3; + const auto poseidon2_SUM_44 = (((poseidon2_A_44_0 + poseidon2_A_44_1) + poseidon2_A_44_2) + poseidon2_A_44_3); + const auto poseidon2_ARK_45_0 = (new_term.poseidon2_B_44_0 + poseidon2_params_C_45_0); + const auto poseidon2_ARK_45_1 = (new_term.poseidon2_B_44_1 + poseidon2_params_C_45_1); + const auto poseidon2_ARK_45_2 = (new_term.poseidon2_B_44_2 + poseidon2_params_C_45_2); + const auto poseidon2_ARK_45_3 = (new_term.poseidon2_B_44_3 + poseidon2_params_C_45_3); + const auto poseidon2_A_45_0 = ((((poseidon2_ARK_45_0 * poseidon2_ARK_45_0) * poseidon2_ARK_45_0) * poseidon2_ARK_45_0) * poseidon2_ARK_45_0); + const auto poseidon2_A_45_1 = poseidon2_ARK_45_1; + const auto poseidon2_A_45_2 = poseidon2_ARK_45_2; + const auto poseidon2_A_45_3 = poseidon2_ARK_45_3; + const auto poseidon2_SUM_45 = (((poseidon2_A_45_0 + poseidon2_A_45_1) + poseidon2_A_45_2) + poseidon2_A_45_3); + const auto poseidon2_ARK_46_0 = (new_term.poseidon2_B_45_0 + poseidon2_params_C_46_0); + const auto poseidon2_ARK_46_1 = (new_term.poseidon2_B_45_1 + poseidon2_params_C_46_1); + const auto poseidon2_ARK_46_2 = (new_term.poseidon2_B_45_2 + poseidon2_params_C_46_2); + const auto poseidon2_ARK_46_3 = (new_term.poseidon2_B_45_3 + poseidon2_params_C_46_3); + const auto poseidon2_A_46_0 = ((((poseidon2_ARK_46_0 * poseidon2_ARK_46_0) * poseidon2_ARK_46_0) * poseidon2_ARK_46_0) * poseidon2_ARK_46_0); + const auto poseidon2_A_46_1 = poseidon2_ARK_46_1; + const auto poseidon2_A_46_2 = poseidon2_ARK_46_2; + const auto poseidon2_A_46_3 = poseidon2_ARK_46_3; + const auto poseidon2_SUM_46 = (((poseidon2_A_46_0 + poseidon2_A_46_1) + poseidon2_A_46_2) + poseidon2_A_46_3); + const auto poseidon2_ARK_47_0 = (new_term.poseidon2_B_46_0 + poseidon2_params_C_47_0); + const auto poseidon2_ARK_47_1 = (new_term.poseidon2_B_46_1 + poseidon2_params_C_47_1); + const auto poseidon2_ARK_47_2 = (new_term.poseidon2_B_46_2 + poseidon2_params_C_47_2); + const auto poseidon2_ARK_47_3 = (new_term.poseidon2_B_46_3 + poseidon2_params_C_47_3); + const auto poseidon2_A_47_0 = ((((poseidon2_ARK_47_0 * poseidon2_ARK_47_0) * poseidon2_ARK_47_0) * poseidon2_ARK_47_0) * poseidon2_ARK_47_0); + const auto poseidon2_A_47_1 = poseidon2_ARK_47_1; + const auto poseidon2_A_47_2 = poseidon2_ARK_47_2; + const auto poseidon2_A_47_3 = poseidon2_ARK_47_3; + const auto poseidon2_SUM_47 = (((poseidon2_A_47_0 + poseidon2_A_47_1) + poseidon2_A_47_2) + poseidon2_A_47_3); + const auto poseidon2_ARK_48_0 = (new_term.poseidon2_B_47_0 + poseidon2_params_C_48_0); + const auto poseidon2_ARK_48_1 = (new_term.poseidon2_B_47_1 + poseidon2_params_C_48_1); + const auto poseidon2_ARK_48_2 = (new_term.poseidon2_B_47_2 + poseidon2_params_C_48_2); + const auto poseidon2_ARK_48_3 = (new_term.poseidon2_B_47_3 + poseidon2_params_C_48_3); + const auto poseidon2_A_48_0 = ((((poseidon2_ARK_48_0 * poseidon2_ARK_48_0) * poseidon2_ARK_48_0) * poseidon2_ARK_48_0) * poseidon2_ARK_48_0); + const auto poseidon2_A_48_1 = poseidon2_ARK_48_1; + const auto poseidon2_A_48_2 = poseidon2_ARK_48_2; + const auto poseidon2_A_48_3 = poseidon2_ARK_48_3; + const auto poseidon2_SUM_48 = (((poseidon2_A_48_0 + poseidon2_A_48_1) + poseidon2_A_48_2) + poseidon2_A_48_3); + const auto poseidon2_ARK_49_0 = (new_term.poseidon2_B_48_0 + poseidon2_params_C_49_0); + const auto poseidon2_ARK_49_1 = (new_term.poseidon2_B_48_1 + poseidon2_params_C_49_1); + const auto poseidon2_ARK_49_2 = (new_term.poseidon2_B_48_2 + poseidon2_params_C_49_2); + const auto poseidon2_ARK_49_3 = (new_term.poseidon2_B_48_3 + poseidon2_params_C_49_3); + const auto poseidon2_A_49_0 = ((((poseidon2_ARK_49_0 * poseidon2_ARK_49_0) * poseidon2_ARK_49_0) * poseidon2_ARK_49_0) * poseidon2_ARK_49_0); + const auto poseidon2_A_49_1 = poseidon2_ARK_49_1; + const auto poseidon2_A_49_2 = poseidon2_ARK_49_2; + const auto poseidon2_A_49_3 = poseidon2_ARK_49_3; + const auto poseidon2_SUM_49 = (((poseidon2_A_49_0 + poseidon2_A_49_1) + poseidon2_A_49_2) + poseidon2_A_49_3); + const auto poseidon2_ARK_50_0 = (new_term.poseidon2_B_49_0 + poseidon2_params_C_50_0); + const auto poseidon2_ARK_50_1 = (new_term.poseidon2_B_49_1 + poseidon2_params_C_50_1); + const auto poseidon2_ARK_50_2 = (new_term.poseidon2_B_49_2 + poseidon2_params_C_50_2); + const auto poseidon2_ARK_50_3 = (new_term.poseidon2_B_49_3 + poseidon2_params_C_50_3); + const auto poseidon2_A_50_0 = ((((poseidon2_ARK_50_0 * poseidon2_ARK_50_0) * poseidon2_ARK_50_0) * poseidon2_ARK_50_0) * poseidon2_ARK_50_0); + const auto poseidon2_A_50_1 = poseidon2_ARK_50_1; + const auto poseidon2_A_50_2 = poseidon2_ARK_50_2; + const auto poseidon2_A_50_3 = poseidon2_ARK_50_3; + const auto poseidon2_SUM_50 = (((poseidon2_A_50_0 + poseidon2_A_50_1) + poseidon2_A_50_2) + poseidon2_A_50_3); + const auto poseidon2_ARK_51_0 = (new_term.poseidon2_B_50_0 + poseidon2_params_C_51_0); + const auto poseidon2_ARK_51_1 = (new_term.poseidon2_B_50_1 + poseidon2_params_C_51_1); + const auto poseidon2_ARK_51_2 = (new_term.poseidon2_B_50_2 + poseidon2_params_C_51_2); + const auto poseidon2_ARK_51_3 = (new_term.poseidon2_B_50_3 + poseidon2_params_C_51_3); + const auto poseidon2_A_51_0 = ((((poseidon2_ARK_51_0 * poseidon2_ARK_51_0) * poseidon2_ARK_51_0) * poseidon2_ARK_51_0) * poseidon2_ARK_51_0); + const auto poseidon2_A_51_1 = poseidon2_ARK_51_1; + const auto poseidon2_A_51_2 = poseidon2_ARK_51_2; + const auto poseidon2_A_51_3 = poseidon2_ARK_51_3; + const auto poseidon2_SUM_51 = (((poseidon2_A_51_0 + poseidon2_A_51_1) + poseidon2_A_51_2) + poseidon2_A_51_3); + const auto poseidon2_ARK_52_0 = (new_term.poseidon2_B_51_0 + poseidon2_params_C_52_0); + const auto poseidon2_ARK_52_1 = (new_term.poseidon2_B_51_1 + poseidon2_params_C_52_1); + const auto poseidon2_ARK_52_2 = (new_term.poseidon2_B_51_2 + poseidon2_params_C_52_2); + const auto poseidon2_ARK_52_3 = (new_term.poseidon2_B_51_3 + poseidon2_params_C_52_3); + const auto poseidon2_A_52_0 = ((((poseidon2_ARK_52_0 * poseidon2_ARK_52_0) * poseidon2_ARK_52_0) * poseidon2_ARK_52_0) * poseidon2_ARK_52_0); + const auto poseidon2_A_52_1 = poseidon2_ARK_52_1; + const auto poseidon2_A_52_2 = poseidon2_ARK_52_2; + const auto poseidon2_A_52_3 = poseidon2_ARK_52_3; + const auto poseidon2_SUM_52 = (((poseidon2_A_52_0 + poseidon2_A_52_1) + poseidon2_A_52_2) + poseidon2_A_52_3); + const auto poseidon2_ARK_53_0 = (new_term.poseidon2_B_52_0 + poseidon2_params_C_53_0); + const auto poseidon2_ARK_53_1 = (new_term.poseidon2_B_52_1 + poseidon2_params_C_53_1); + const auto poseidon2_ARK_53_2 = (new_term.poseidon2_B_52_2 + poseidon2_params_C_53_2); + const auto poseidon2_ARK_53_3 = (new_term.poseidon2_B_52_3 + poseidon2_params_C_53_3); + const auto poseidon2_A_53_0 = ((((poseidon2_ARK_53_0 * poseidon2_ARK_53_0) * poseidon2_ARK_53_0) * poseidon2_ARK_53_0) * poseidon2_ARK_53_0); + const auto poseidon2_A_53_1 = poseidon2_ARK_53_1; + const auto poseidon2_A_53_2 = poseidon2_ARK_53_2; + const auto poseidon2_A_53_3 = poseidon2_ARK_53_3; + const auto poseidon2_SUM_53 = (((poseidon2_A_53_0 + poseidon2_A_53_1) + poseidon2_A_53_2) + poseidon2_A_53_3); + const auto poseidon2_ARK_54_0 = (new_term.poseidon2_B_53_0 + poseidon2_params_C_54_0); + const auto poseidon2_ARK_54_1 = (new_term.poseidon2_B_53_1 + poseidon2_params_C_54_1); + const auto poseidon2_ARK_54_2 = (new_term.poseidon2_B_53_2 + poseidon2_params_C_54_2); + const auto poseidon2_ARK_54_3 = (new_term.poseidon2_B_53_3 + poseidon2_params_C_54_3); + const auto poseidon2_A_54_0 = ((((poseidon2_ARK_54_0 * poseidon2_ARK_54_0) * poseidon2_ARK_54_0) * poseidon2_ARK_54_0) * poseidon2_ARK_54_0); + const auto poseidon2_A_54_1 = poseidon2_ARK_54_1; + const auto poseidon2_A_54_2 = poseidon2_ARK_54_2; + const auto poseidon2_A_54_3 = poseidon2_ARK_54_3; + const auto poseidon2_SUM_54 = (((poseidon2_A_54_0 + poseidon2_A_54_1) + poseidon2_A_54_2) + poseidon2_A_54_3); + const auto poseidon2_ARK_55_0 = (new_term.poseidon2_B_54_0 + poseidon2_params_C_55_0); + const auto poseidon2_ARK_55_1 = (new_term.poseidon2_B_54_1 + poseidon2_params_C_55_1); + const auto poseidon2_ARK_55_2 = (new_term.poseidon2_B_54_2 + poseidon2_params_C_55_2); + const auto poseidon2_ARK_55_3 = (new_term.poseidon2_B_54_3 + poseidon2_params_C_55_3); + const auto poseidon2_A_55_0 = ((((poseidon2_ARK_55_0 * poseidon2_ARK_55_0) * poseidon2_ARK_55_0) * poseidon2_ARK_55_0) * poseidon2_ARK_55_0); + const auto poseidon2_A_55_1 = poseidon2_ARK_55_1; + const auto poseidon2_A_55_2 = poseidon2_ARK_55_2; + const auto poseidon2_A_55_3 = poseidon2_ARK_55_3; + const auto poseidon2_SUM_55 = (((poseidon2_A_55_0 + poseidon2_A_55_1) + poseidon2_A_55_2) + poseidon2_A_55_3); + const auto poseidon2_ARK_56_0 = (new_term.poseidon2_B_55_0 + poseidon2_params_C_56_0); + const auto poseidon2_ARK_56_1 = (new_term.poseidon2_B_55_1 + poseidon2_params_C_56_1); + const auto poseidon2_ARK_56_2 = (new_term.poseidon2_B_55_2 + poseidon2_params_C_56_2); + const auto poseidon2_ARK_56_3 = (new_term.poseidon2_B_55_3 + poseidon2_params_C_56_3); + const auto poseidon2_A_56_0 = ((((poseidon2_ARK_56_0 * poseidon2_ARK_56_0) * poseidon2_ARK_56_0) * poseidon2_ARK_56_0) * poseidon2_ARK_56_0); + const auto poseidon2_A_56_1 = poseidon2_ARK_56_1; + const auto poseidon2_A_56_2 = poseidon2_ARK_56_2; + const auto poseidon2_A_56_3 = poseidon2_ARK_56_3; + const auto poseidon2_SUM_56 = (((poseidon2_A_56_0 + poseidon2_A_56_1) + poseidon2_A_56_2) + poseidon2_A_56_3); + const auto poseidon2_ARK_57_0 = (new_term.poseidon2_B_56_0 + poseidon2_params_C_57_0); + const auto poseidon2_ARK_57_1 = (new_term.poseidon2_B_56_1 + poseidon2_params_C_57_1); + const auto poseidon2_ARK_57_2 = (new_term.poseidon2_B_56_2 + poseidon2_params_C_57_2); + const auto poseidon2_ARK_57_3 = (new_term.poseidon2_B_56_3 + poseidon2_params_C_57_3); + const auto poseidon2_A_57_0 = ((((poseidon2_ARK_57_0 * poseidon2_ARK_57_0) * poseidon2_ARK_57_0) * poseidon2_ARK_57_0) * poseidon2_ARK_57_0); + const auto poseidon2_A_57_1 = poseidon2_ARK_57_1; + const auto poseidon2_A_57_2 = poseidon2_ARK_57_2; + const auto poseidon2_A_57_3 = poseidon2_ARK_57_3; + const auto poseidon2_SUM_57 = (((poseidon2_A_57_0 + poseidon2_A_57_1) + poseidon2_A_57_2) + poseidon2_A_57_3); + const auto poseidon2_ARK_58_0 = (new_term.poseidon2_B_57_0 + poseidon2_params_C_58_0); + const auto poseidon2_ARK_58_1 = (new_term.poseidon2_B_57_1 + poseidon2_params_C_58_1); + const auto poseidon2_ARK_58_2 = (new_term.poseidon2_B_57_2 + poseidon2_params_C_58_2); + const auto poseidon2_ARK_58_3 = (new_term.poseidon2_B_57_3 + poseidon2_params_C_58_3); + const auto poseidon2_A_58_0 = ((((poseidon2_ARK_58_0 * poseidon2_ARK_58_0) * poseidon2_ARK_58_0) * poseidon2_ARK_58_0) * poseidon2_ARK_58_0); + const auto poseidon2_A_58_1 = poseidon2_ARK_58_1; + const auto poseidon2_A_58_2 = poseidon2_ARK_58_2; + const auto poseidon2_A_58_3 = poseidon2_ARK_58_3; + const auto poseidon2_SUM_58 = (((poseidon2_A_58_0 + poseidon2_A_58_1) + poseidon2_A_58_2) + poseidon2_A_58_3); + const auto poseidon2_ARK_59_0 = (new_term.poseidon2_B_58_0 + poseidon2_params_C_59_0); + const auto poseidon2_ARK_59_1 = (new_term.poseidon2_B_58_1 + poseidon2_params_C_59_1); + const auto poseidon2_ARK_59_2 = (new_term.poseidon2_B_58_2 + poseidon2_params_C_59_2); + const auto poseidon2_ARK_59_3 = (new_term.poseidon2_B_58_3 + poseidon2_params_C_59_3); + const auto poseidon2_A_59_0 = ((((poseidon2_ARK_59_0 * poseidon2_ARK_59_0) * poseidon2_ARK_59_0) * poseidon2_ARK_59_0) * poseidon2_ARK_59_0); + const auto poseidon2_A_59_1 = poseidon2_ARK_59_1; + const auto poseidon2_A_59_2 = poseidon2_ARK_59_2; + const auto poseidon2_A_59_3 = poseidon2_ARK_59_3; + const auto poseidon2_SUM_59 = (((poseidon2_A_59_0 + poseidon2_A_59_1) + poseidon2_A_59_2) + poseidon2_A_59_3); + const auto poseidon2_ARK_60_0 = (new_term.poseidon2_B_59_0 + poseidon2_params_C_60_0); + const auto poseidon2_ARK_60_1 = (new_term.poseidon2_B_59_1 + poseidon2_params_C_60_1); + const auto poseidon2_ARK_60_2 = (new_term.poseidon2_B_59_2 + poseidon2_params_C_60_2); + const auto poseidon2_ARK_60_3 = (new_term.poseidon2_B_59_3 + poseidon2_params_C_60_3); + const auto poseidon2_A_60_0 = ((((poseidon2_ARK_60_0 * poseidon2_ARK_60_0) * poseidon2_ARK_60_0) * poseidon2_ARK_60_0) * poseidon2_ARK_60_0); + const auto poseidon2_A_60_1 = ((((poseidon2_ARK_60_1 * poseidon2_ARK_60_1) * poseidon2_ARK_60_1) * poseidon2_ARK_60_1) * poseidon2_ARK_60_1); + const auto poseidon2_A_60_2 = ((((poseidon2_ARK_60_2 * poseidon2_ARK_60_2) * poseidon2_ARK_60_2) * poseidon2_ARK_60_2) * poseidon2_ARK_60_2); + const auto poseidon2_A_60_3 = ((((poseidon2_ARK_60_3 * poseidon2_ARK_60_3) * poseidon2_ARK_60_3) * poseidon2_ARK_60_3) * poseidon2_ARK_60_3); + const auto poseidon2_T_60_0 = (poseidon2_A_60_0 + poseidon2_A_60_1); + const auto poseidon2_T_60_1 = (poseidon2_A_60_2 + poseidon2_A_60_3); + const auto poseidon2_T_60_2 = ((FF(2) * poseidon2_A_60_1) + poseidon2_T_60_1); + const auto poseidon2_T_60_3 = ((FF(2) * poseidon2_A_60_3) + poseidon2_T_60_0); + const auto poseidon2_ARK_61_0 = (new_term.poseidon2_T_60_6 + poseidon2_params_C_61_0); + const auto poseidon2_ARK_61_1 = (new_term.poseidon2_T_60_5 + poseidon2_params_C_61_1); + const auto poseidon2_ARK_61_2 = (new_term.poseidon2_T_60_7 + poseidon2_params_C_61_2); + const auto poseidon2_ARK_61_3 = (new_term.poseidon2_T_60_4 + poseidon2_params_C_61_3); + const auto poseidon2_A_61_0 = ((((poseidon2_ARK_61_0 * poseidon2_ARK_61_0) * poseidon2_ARK_61_0) * poseidon2_ARK_61_0) * poseidon2_ARK_61_0); + const auto poseidon2_A_61_1 = ((((poseidon2_ARK_61_1 * poseidon2_ARK_61_1) * poseidon2_ARK_61_1) * poseidon2_ARK_61_1) * poseidon2_ARK_61_1); + const auto poseidon2_A_61_2 = ((((poseidon2_ARK_61_2 * poseidon2_ARK_61_2) * poseidon2_ARK_61_2) * poseidon2_ARK_61_2) * poseidon2_ARK_61_2); + const auto poseidon2_A_61_3 = ((((poseidon2_ARK_61_3 * poseidon2_ARK_61_3) * poseidon2_ARK_61_3) * poseidon2_ARK_61_3) * poseidon2_ARK_61_3); + const auto poseidon2_T_61_0 = (poseidon2_A_61_0 + poseidon2_A_61_1); + const auto poseidon2_T_61_1 = (poseidon2_A_61_2 + poseidon2_A_61_3); + const auto poseidon2_T_61_2 = ((FF(2) * poseidon2_A_61_1) + poseidon2_T_61_1); + const auto poseidon2_T_61_3 = ((FF(2) * poseidon2_A_61_3) + poseidon2_T_61_0); + const auto poseidon2_ARK_62_0 = (new_term.poseidon2_T_61_6 + poseidon2_params_C_62_0); + const auto poseidon2_ARK_62_1 = (new_term.poseidon2_T_61_5 + poseidon2_params_C_62_1); + const auto poseidon2_ARK_62_2 = (new_term.poseidon2_T_61_7 + poseidon2_params_C_62_2); + const auto poseidon2_ARK_62_3 = (new_term.poseidon2_T_61_4 + poseidon2_params_C_62_3); + const auto poseidon2_A_62_0 = ((((poseidon2_ARK_62_0 * poseidon2_ARK_62_0) * poseidon2_ARK_62_0) * poseidon2_ARK_62_0) * poseidon2_ARK_62_0); + const auto poseidon2_A_62_1 = ((((poseidon2_ARK_62_1 * poseidon2_ARK_62_1) * poseidon2_ARK_62_1) * poseidon2_ARK_62_1) * poseidon2_ARK_62_1); + const auto poseidon2_A_62_2 = ((((poseidon2_ARK_62_2 * poseidon2_ARK_62_2) * poseidon2_ARK_62_2) * poseidon2_ARK_62_2) * poseidon2_ARK_62_2); + const auto poseidon2_A_62_3 = ((((poseidon2_ARK_62_3 * poseidon2_ARK_62_3) * poseidon2_ARK_62_3) * poseidon2_ARK_62_3) * poseidon2_ARK_62_3); + const auto poseidon2_T_62_0 = (poseidon2_A_62_0 + poseidon2_A_62_1); + const auto poseidon2_T_62_1 = (poseidon2_A_62_2 + poseidon2_A_62_3); + const auto poseidon2_T_62_2 = ((FF(2) * poseidon2_A_62_1) + poseidon2_T_62_1); + const auto poseidon2_T_62_3 = ((FF(2) * poseidon2_A_62_3) + poseidon2_T_62_0); + const auto poseidon2_ARK_63_0 = (new_term.poseidon2_T_62_6 + poseidon2_params_C_63_0); + const auto poseidon2_ARK_63_1 = (new_term.poseidon2_T_62_5 + poseidon2_params_C_63_1); + const auto poseidon2_ARK_63_2 = (new_term.poseidon2_T_62_7 + poseidon2_params_C_63_2); + const auto poseidon2_ARK_63_3 = (new_term.poseidon2_T_62_4 + poseidon2_params_C_63_3); + const auto poseidon2_A_63_0 = ((((poseidon2_ARK_63_0 * poseidon2_ARK_63_0) * poseidon2_ARK_63_0) * poseidon2_ARK_63_0) * poseidon2_ARK_63_0); + const auto poseidon2_A_63_1 = ((((poseidon2_ARK_63_1 * poseidon2_ARK_63_1) * poseidon2_ARK_63_1) * poseidon2_ARK_63_1) * poseidon2_ARK_63_1); + const auto poseidon2_A_63_2 = ((((poseidon2_ARK_63_2 * poseidon2_ARK_63_2) * poseidon2_ARK_63_2) * poseidon2_ARK_63_2) * poseidon2_ARK_63_2); + const auto poseidon2_A_63_3 = ((((poseidon2_ARK_63_3 * poseidon2_ARK_63_3) * poseidon2_ARK_63_3) * poseidon2_ARK_63_3) * poseidon2_ARK_63_3); + const auto poseidon2_T_63_0 = (poseidon2_A_63_0 + poseidon2_A_63_1); + const auto poseidon2_T_63_1 = (poseidon2_A_63_2 + poseidon2_A_63_3); + const auto poseidon2_T_63_2 = ((FF(2) * poseidon2_A_63_1) + poseidon2_T_63_1); + const auto poseidon2_T_63_3 = ((FF(2) * poseidon2_A_63_3) + poseidon2_T_63_0); + + { + using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (FF(1) - new_term.poseidon2_sel_poseidon_perm)); + tmp *= scaling_factor; + std::get<0>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<1, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_mem_addr_read_a - new_term.poseidon2_input_addr)); + tmp *= scaling_factor; + std::get<1>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<2, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_mem_addr_read_b - (new_term.poseidon2_input_addr + FF(1)))); + tmp *= scaling_factor; + std::get<2>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<3, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_mem_addr_read_c - (new_term.poseidon2_input_addr + FF(2)))); + tmp *= scaling_factor; + std::get<3>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<4, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_mem_addr_read_d - (new_term.poseidon2_input_addr + FF(3)))); + tmp *= scaling_factor; + std::get<4>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<5, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_mem_addr_write_a - new_term.poseidon2_output_addr)); + tmp *= scaling_factor; + std::get<5>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<6, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_mem_addr_write_b - (new_term.poseidon2_output_addr + FF(1)))); + tmp *= scaling_factor; + std::get<6>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<7, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_mem_addr_write_c - (new_term.poseidon2_output_addr + FF(2)))); + tmp *= scaling_factor; + std::get<7>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<8, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_mem_addr_write_d - (new_term.poseidon2_output_addr + FF(3)))); + tmp *= scaling_factor; + std::get<8>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<9, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_EXT_LAYER_4 - ((FF(4) * poseidon2_EXT_LAYER_1) + poseidon2_EXT_LAYER_3))); + tmp *= scaling_factor; + std::get<9>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<10, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_EXT_LAYER_5 - ((FF(4) * poseidon2_EXT_LAYER_0) + poseidon2_EXT_LAYER_2))); + tmp *= scaling_factor; + std::get<10>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<11, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_EXT_LAYER_6 - (poseidon2_EXT_LAYER_3 + new_term.poseidon2_EXT_LAYER_5))); + tmp *= scaling_factor; + std::get<11>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<12, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_EXT_LAYER_7 - (poseidon2_EXT_LAYER_2 + new_term.poseidon2_EXT_LAYER_4))); + tmp *= scaling_factor; + std::get<12>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<13, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_T_0_4 - ((FF(4) * poseidon2_T_0_1) + poseidon2_T_0_3))); + tmp *= scaling_factor; + std::get<13>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<14, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_T_0_5 - ((FF(4) * poseidon2_T_0_0) + poseidon2_T_0_2))); + tmp *= scaling_factor; + std::get<14>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<15, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_T_0_6 - (poseidon2_T_0_3 + new_term.poseidon2_T_0_5))); + tmp *= scaling_factor; + std::get<15>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<16, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_T_0_7 - (poseidon2_T_0_2 + new_term.poseidon2_T_0_4))); + tmp *= scaling_factor; + std::get<16>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<17, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_T_1_4 - ((FF(4) * poseidon2_T_1_1) + poseidon2_T_1_3))); + tmp *= scaling_factor; + std::get<17>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<18, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_T_1_5 - ((FF(4) * poseidon2_T_1_0) + poseidon2_T_1_2))); + tmp *= scaling_factor; + std::get<18>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<19, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_T_1_6 - (poseidon2_T_1_3 + new_term.poseidon2_T_1_5))); + tmp *= scaling_factor; + std::get<19>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<20, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_T_1_7 - (poseidon2_T_1_2 + new_term.poseidon2_T_1_4))); + tmp *= scaling_factor; + std::get<20>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<21, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_T_2_4 - ((FF(4) * poseidon2_T_2_1) + poseidon2_T_2_3))); + tmp *= scaling_factor; + std::get<21>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<22, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_T_2_5 - ((FF(4) * poseidon2_T_2_0) + poseidon2_T_2_2))); + tmp *= scaling_factor; + std::get<22>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<23, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_T_2_6 - (poseidon2_T_2_3 + new_term.poseidon2_T_2_5))); + tmp *= scaling_factor; + std::get<23>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<24, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_T_2_7 - (poseidon2_T_2_2 + new_term.poseidon2_T_2_4))); + tmp *= scaling_factor; + std::get<24>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<25, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_T_3_4 - ((FF(4) * poseidon2_T_3_1) + poseidon2_T_3_3))); + tmp *= scaling_factor; + std::get<25>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<26, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_T_3_5 - ((FF(4) * poseidon2_T_3_0) + poseidon2_T_3_2))); + tmp *= scaling_factor; + std::get<26>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<27, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_T_3_6 - (poseidon2_T_3_3 + new_term.poseidon2_T_3_5))); + tmp *= scaling_factor; + std::get<27>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<28, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_T_3_7 - (poseidon2_T_3_2 + new_term.poseidon2_T_3_4))); + tmp *= scaling_factor; + std::get<28>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<29, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_4_0 - ((poseidon2_params_MU_0 * poseidon2_A_4_0) + poseidon2_SUM_4))); + tmp *= scaling_factor; + std::get<29>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<30, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_4_1 - ((poseidon2_params_MU_1 * poseidon2_A_4_1) + poseidon2_SUM_4))); + tmp *= scaling_factor; + std::get<30>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<31, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_4_2 - ((poseidon2_params_MU_2 * poseidon2_A_4_2) + poseidon2_SUM_4))); + tmp *= scaling_factor; + std::get<31>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<32, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_4_3 - ((poseidon2_params_MU_3 * poseidon2_A_4_3) + poseidon2_SUM_4))); + tmp *= scaling_factor; + std::get<32>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<33, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_5_0 - ((poseidon2_params_MU_0 * poseidon2_A_5_0) + poseidon2_SUM_5))); + tmp *= scaling_factor; + std::get<33>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<34, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_5_1 - ((poseidon2_params_MU_1 * poseidon2_A_5_1) + poseidon2_SUM_5))); + tmp *= scaling_factor; + std::get<34>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<35, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_5_2 - ((poseidon2_params_MU_2 * poseidon2_A_5_2) + poseidon2_SUM_5))); + tmp *= scaling_factor; + std::get<35>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<36, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_5_3 - ((poseidon2_params_MU_3 * poseidon2_A_5_3) + poseidon2_SUM_5))); + tmp *= scaling_factor; + std::get<36>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<37, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_6_0 - ((poseidon2_params_MU_0 * poseidon2_A_6_0) + poseidon2_SUM_6))); + tmp *= scaling_factor; + std::get<37>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<38, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_6_1 - ((poseidon2_params_MU_1 * poseidon2_A_6_1) + poseidon2_SUM_6))); + tmp *= scaling_factor; + std::get<38>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<39, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_6_2 - ((poseidon2_params_MU_2 * poseidon2_A_6_2) + poseidon2_SUM_6))); + tmp *= scaling_factor; + std::get<39>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<40, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_6_3 - ((poseidon2_params_MU_3 * poseidon2_A_6_3) + poseidon2_SUM_6))); + tmp *= scaling_factor; + std::get<40>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<41, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_7_0 - ((poseidon2_params_MU_0 * poseidon2_A_7_0) + poseidon2_SUM_7))); + tmp *= scaling_factor; + std::get<41>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<42, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_7_1 - ((poseidon2_params_MU_1 * poseidon2_A_7_1) + poseidon2_SUM_7))); + tmp *= scaling_factor; + std::get<42>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<43, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_7_2 - ((poseidon2_params_MU_2 * poseidon2_A_7_2) + poseidon2_SUM_7))); + tmp *= scaling_factor; + std::get<43>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<44, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_7_3 - ((poseidon2_params_MU_3 * poseidon2_A_7_3) + poseidon2_SUM_7))); + tmp *= scaling_factor; + std::get<44>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<45, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_8_0 - ((poseidon2_params_MU_0 * poseidon2_A_8_0) + poseidon2_SUM_8))); + tmp *= scaling_factor; + std::get<45>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<46, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_8_1 - ((poseidon2_params_MU_1 * poseidon2_A_8_1) + poseidon2_SUM_8))); + tmp *= scaling_factor; + std::get<46>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<47, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_8_2 - ((poseidon2_params_MU_2 * poseidon2_A_8_2) + poseidon2_SUM_8))); + tmp *= scaling_factor; + std::get<47>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<48, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_8_3 - ((poseidon2_params_MU_3 * poseidon2_A_8_3) + poseidon2_SUM_8))); + tmp *= scaling_factor; + std::get<48>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<49, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_9_0 - ((poseidon2_params_MU_0 * poseidon2_A_9_0) + poseidon2_SUM_9))); + tmp *= scaling_factor; + std::get<49>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<50, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_9_1 - ((poseidon2_params_MU_1 * poseidon2_A_9_1) + poseidon2_SUM_9))); + tmp *= scaling_factor; + std::get<50>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<51, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_9_2 - ((poseidon2_params_MU_2 * poseidon2_A_9_2) + poseidon2_SUM_9))); + tmp *= scaling_factor; + std::get<51>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<52, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_9_3 - ((poseidon2_params_MU_3 * poseidon2_A_9_3) + poseidon2_SUM_9))); + tmp *= scaling_factor; + std::get<52>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<53, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_10_0 - ((poseidon2_params_MU_0 * poseidon2_A_10_0) + poseidon2_SUM_10))); + tmp *= scaling_factor; + std::get<53>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<54, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_10_1 - ((poseidon2_params_MU_1 * poseidon2_A_10_1) + poseidon2_SUM_10))); + tmp *= scaling_factor; + std::get<54>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<55, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_10_2 - ((poseidon2_params_MU_2 * poseidon2_A_10_2) + poseidon2_SUM_10))); + tmp *= scaling_factor; + std::get<55>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<56, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_10_3 - ((poseidon2_params_MU_3 * poseidon2_A_10_3) + poseidon2_SUM_10))); + tmp *= scaling_factor; + std::get<56>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<57, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_11_0 - ((poseidon2_params_MU_0 * poseidon2_A_11_0) + poseidon2_SUM_11))); + tmp *= scaling_factor; + std::get<57>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<58, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_11_1 - ((poseidon2_params_MU_1 * poseidon2_A_11_1) + poseidon2_SUM_11))); + tmp *= scaling_factor; + std::get<58>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<59, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_11_2 - ((poseidon2_params_MU_2 * poseidon2_A_11_2) + poseidon2_SUM_11))); + tmp *= scaling_factor; + std::get<59>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<60, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_11_3 - ((poseidon2_params_MU_3 * poseidon2_A_11_3) + poseidon2_SUM_11))); + tmp *= scaling_factor; + std::get<60>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<61, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_12_0 - ((poseidon2_params_MU_0 * poseidon2_A_12_0) + poseidon2_SUM_12))); + tmp *= scaling_factor; + std::get<61>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<62, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_12_1 - ((poseidon2_params_MU_1 * poseidon2_A_12_1) + poseidon2_SUM_12))); + tmp *= scaling_factor; + std::get<62>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<63, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_12_2 - ((poseidon2_params_MU_2 * poseidon2_A_12_2) + poseidon2_SUM_12))); + tmp *= scaling_factor; + std::get<63>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<64, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_12_3 - ((poseidon2_params_MU_3 * poseidon2_A_12_3) + poseidon2_SUM_12))); + tmp *= scaling_factor; + std::get<64>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<65, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_13_0 - ((poseidon2_params_MU_0 * poseidon2_A_13_0) + poseidon2_SUM_13))); + tmp *= scaling_factor; + std::get<65>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<66, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_13_1 - ((poseidon2_params_MU_1 * poseidon2_A_13_1) + poseidon2_SUM_13))); + tmp *= scaling_factor; + std::get<66>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<67, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_13_2 - ((poseidon2_params_MU_2 * poseidon2_A_13_2) + poseidon2_SUM_13))); + tmp *= scaling_factor; + std::get<67>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<68, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_13_3 - ((poseidon2_params_MU_3 * poseidon2_A_13_3) + poseidon2_SUM_13))); + tmp *= scaling_factor; + std::get<68>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<69, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_14_0 - ((poseidon2_params_MU_0 * poseidon2_A_14_0) + poseidon2_SUM_14))); + tmp *= scaling_factor; + std::get<69>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<70, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_14_1 - ((poseidon2_params_MU_1 * poseidon2_A_14_1) + poseidon2_SUM_14))); + tmp *= scaling_factor; + std::get<70>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<71, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_14_2 - ((poseidon2_params_MU_2 * poseidon2_A_14_2) + poseidon2_SUM_14))); + tmp *= scaling_factor; + std::get<71>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<72, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_14_3 - ((poseidon2_params_MU_3 * poseidon2_A_14_3) + poseidon2_SUM_14))); + tmp *= scaling_factor; + std::get<72>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<73, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_15_0 - ((poseidon2_params_MU_0 * poseidon2_A_15_0) + poseidon2_SUM_15))); + tmp *= scaling_factor; + std::get<73>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<74, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_15_1 - ((poseidon2_params_MU_1 * poseidon2_A_15_1) + poseidon2_SUM_15))); + tmp *= scaling_factor; + std::get<74>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<75, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_15_2 - ((poseidon2_params_MU_2 * poseidon2_A_15_2) + poseidon2_SUM_15))); + tmp *= scaling_factor; + std::get<75>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<76, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_15_3 - ((poseidon2_params_MU_3 * poseidon2_A_15_3) + poseidon2_SUM_15))); + tmp *= scaling_factor; + std::get<76>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<77, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_16_0 - ((poseidon2_params_MU_0 * poseidon2_A_16_0) + poseidon2_SUM_16))); + tmp *= scaling_factor; + std::get<77>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<78, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_16_1 - ((poseidon2_params_MU_1 * poseidon2_A_16_1) + poseidon2_SUM_16))); + tmp *= scaling_factor; + std::get<78>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<79, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_16_2 - ((poseidon2_params_MU_2 * poseidon2_A_16_2) + poseidon2_SUM_16))); + tmp *= scaling_factor; + std::get<79>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<80, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_16_3 - ((poseidon2_params_MU_3 * poseidon2_A_16_3) + poseidon2_SUM_16))); + tmp *= scaling_factor; + std::get<80>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<81, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_17_0 - ((poseidon2_params_MU_0 * poseidon2_A_17_0) + poseidon2_SUM_17))); + tmp *= scaling_factor; + std::get<81>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<82, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_17_1 - ((poseidon2_params_MU_1 * poseidon2_A_17_1) + poseidon2_SUM_17))); + tmp *= scaling_factor; + std::get<82>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<83, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_17_2 - ((poseidon2_params_MU_2 * poseidon2_A_17_2) + poseidon2_SUM_17))); + tmp *= scaling_factor; + std::get<83>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<84, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_17_3 - ((poseidon2_params_MU_3 * poseidon2_A_17_3) + poseidon2_SUM_17))); + tmp *= scaling_factor; + std::get<84>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<85, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_18_0 - ((poseidon2_params_MU_0 * poseidon2_A_18_0) + poseidon2_SUM_18))); + tmp *= scaling_factor; + std::get<85>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<86, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_18_1 - ((poseidon2_params_MU_1 * poseidon2_A_18_1) + poseidon2_SUM_18))); + tmp *= scaling_factor; + std::get<86>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<87, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_18_2 - ((poseidon2_params_MU_2 * poseidon2_A_18_2) + poseidon2_SUM_18))); + tmp *= scaling_factor; + std::get<87>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<88, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_18_3 - ((poseidon2_params_MU_3 * poseidon2_A_18_3) + poseidon2_SUM_18))); + tmp *= scaling_factor; + std::get<88>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<89, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_19_0 - ((poseidon2_params_MU_0 * poseidon2_A_19_0) + poseidon2_SUM_19))); + tmp *= scaling_factor; + std::get<89>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<90, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_19_1 - ((poseidon2_params_MU_1 * poseidon2_A_19_1) + poseidon2_SUM_19))); + tmp *= scaling_factor; + std::get<90>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<91, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_19_2 - ((poseidon2_params_MU_2 * poseidon2_A_19_2) + poseidon2_SUM_19))); + tmp *= scaling_factor; + std::get<91>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<92, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_19_3 - ((poseidon2_params_MU_3 * poseidon2_A_19_3) + poseidon2_SUM_19))); + tmp *= scaling_factor; + std::get<92>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<93, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_20_0 - ((poseidon2_params_MU_0 * poseidon2_A_20_0) + poseidon2_SUM_20))); + tmp *= scaling_factor; + std::get<93>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<94, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_20_1 - ((poseidon2_params_MU_1 * poseidon2_A_20_1) + poseidon2_SUM_20))); + tmp *= scaling_factor; + std::get<94>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<95, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_20_2 - ((poseidon2_params_MU_2 * poseidon2_A_20_2) + poseidon2_SUM_20))); + tmp *= scaling_factor; + std::get<95>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<96, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_20_3 - ((poseidon2_params_MU_3 * poseidon2_A_20_3) + poseidon2_SUM_20))); + tmp *= scaling_factor; + std::get<96>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<97, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_21_0 - ((poseidon2_params_MU_0 * poseidon2_A_21_0) + poseidon2_SUM_21))); + tmp *= scaling_factor; + std::get<97>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<98, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_21_1 - ((poseidon2_params_MU_1 * poseidon2_A_21_1) + poseidon2_SUM_21))); + tmp *= scaling_factor; + std::get<98>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<99, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_21_2 - ((poseidon2_params_MU_2 * poseidon2_A_21_2) + poseidon2_SUM_21))); + tmp *= scaling_factor; + std::get<99>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<100, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_21_3 - ((poseidon2_params_MU_3 * poseidon2_A_21_3) + poseidon2_SUM_21))); + tmp *= scaling_factor; + std::get<100>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<101, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_22_0 - ((poseidon2_params_MU_0 * poseidon2_A_22_0) + poseidon2_SUM_22))); + tmp *= scaling_factor; + std::get<101>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<102, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_22_1 - ((poseidon2_params_MU_1 * poseidon2_A_22_1) + poseidon2_SUM_22))); + tmp *= scaling_factor; + std::get<102>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<103, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_22_2 - ((poseidon2_params_MU_2 * poseidon2_A_22_2) + poseidon2_SUM_22))); + tmp *= scaling_factor; + std::get<103>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<104, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_22_3 - ((poseidon2_params_MU_3 * poseidon2_A_22_3) + poseidon2_SUM_22))); + tmp *= scaling_factor; + std::get<104>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<105, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_23_0 - ((poseidon2_params_MU_0 * poseidon2_A_23_0) + poseidon2_SUM_23))); + tmp *= scaling_factor; + std::get<105>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<106, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_23_1 - ((poseidon2_params_MU_1 * poseidon2_A_23_1) + poseidon2_SUM_23))); + tmp *= scaling_factor; + std::get<106>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<107, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_23_2 - ((poseidon2_params_MU_2 * poseidon2_A_23_2) + poseidon2_SUM_23))); + tmp *= scaling_factor; + std::get<107>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<108, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_23_3 - ((poseidon2_params_MU_3 * poseidon2_A_23_3) + poseidon2_SUM_23))); + tmp *= scaling_factor; + std::get<108>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<109, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_24_0 - ((poseidon2_params_MU_0 * poseidon2_A_24_0) + poseidon2_SUM_24))); + tmp *= scaling_factor; + std::get<109>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<110, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_24_1 - ((poseidon2_params_MU_1 * poseidon2_A_24_1) + poseidon2_SUM_24))); + tmp *= scaling_factor; + std::get<110>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<111, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_24_2 - ((poseidon2_params_MU_2 * poseidon2_A_24_2) + poseidon2_SUM_24))); + tmp *= scaling_factor; + std::get<111>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<112, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_24_3 - ((poseidon2_params_MU_3 * poseidon2_A_24_3) + poseidon2_SUM_24))); + tmp *= scaling_factor; + std::get<112>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<113, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_25_0 - ((poseidon2_params_MU_0 * poseidon2_A_25_0) + poseidon2_SUM_25))); + tmp *= scaling_factor; + std::get<113>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<114, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_25_1 - ((poseidon2_params_MU_1 * poseidon2_A_25_1) + poseidon2_SUM_25))); + tmp *= scaling_factor; + std::get<114>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<115, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_25_2 - ((poseidon2_params_MU_2 * poseidon2_A_25_2) + poseidon2_SUM_25))); + tmp *= scaling_factor; + std::get<115>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<116, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_25_3 - ((poseidon2_params_MU_3 * poseidon2_A_25_3) + poseidon2_SUM_25))); + tmp *= scaling_factor; + std::get<116>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<117, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_26_0 - ((poseidon2_params_MU_0 * poseidon2_A_26_0) + poseidon2_SUM_26))); + tmp *= scaling_factor; + std::get<117>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<118, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_26_1 - ((poseidon2_params_MU_1 * poseidon2_A_26_1) + poseidon2_SUM_26))); + tmp *= scaling_factor; + std::get<118>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<119, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_26_2 - ((poseidon2_params_MU_2 * poseidon2_A_26_2) + poseidon2_SUM_26))); + tmp *= scaling_factor; + std::get<119>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<120, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_26_3 - ((poseidon2_params_MU_3 * poseidon2_A_26_3) + poseidon2_SUM_26))); + tmp *= scaling_factor; + std::get<120>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<121, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_27_0 - ((poseidon2_params_MU_0 * poseidon2_A_27_0) + poseidon2_SUM_27))); + tmp *= scaling_factor; + std::get<121>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<122, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_27_1 - ((poseidon2_params_MU_1 * poseidon2_A_27_1) + poseidon2_SUM_27))); + tmp *= scaling_factor; + std::get<122>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<123, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_27_2 - ((poseidon2_params_MU_2 * poseidon2_A_27_2) + poseidon2_SUM_27))); + tmp *= scaling_factor; + std::get<123>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<124, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_27_3 - ((poseidon2_params_MU_3 * poseidon2_A_27_3) + poseidon2_SUM_27))); + tmp *= scaling_factor; + std::get<124>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<125, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_28_0 - ((poseidon2_params_MU_0 * poseidon2_A_28_0) + poseidon2_SUM_28))); + tmp *= scaling_factor; + std::get<125>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<126, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_28_1 - ((poseidon2_params_MU_1 * poseidon2_A_28_1) + poseidon2_SUM_28))); + tmp *= scaling_factor; + std::get<126>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<127, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_28_2 - ((poseidon2_params_MU_2 * poseidon2_A_28_2) + poseidon2_SUM_28))); + tmp *= scaling_factor; + std::get<127>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<128, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_28_3 - ((poseidon2_params_MU_3 * poseidon2_A_28_3) + poseidon2_SUM_28))); + tmp *= scaling_factor; + std::get<128>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<129, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_29_0 - ((poseidon2_params_MU_0 * poseidon2_A_29_0) + poseidon2_SUM_29))); + tmp *= scaling_factor; + std::get<129>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<130, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_29_1 - ((poseidon2_params_MU_1 * poseidon2_A_29_1) + poseidon2_SUM_29))); + tmp *= scaling_factor; + std::get<130>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<131, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_29_2 - ((poseidon2_params_MU_2 * poseidon2_A_29_2) + poseidon2_SUM_29))); + tmp *= scaling_factor; + std::get<131>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<132, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_29_3 - ((poseidon2_params_MU_3 * poseidon2_A_29_3) + poseidon2_SUM_29))); + tmp *= scaling_factor; + std::get<132>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<133, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_30_0 - ((poseidon2_params_MU_0 * poseidon2_A_30_0) + poseidon2_SUM_30))); + tmp *= scaling_factor; + std::get<133>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<134, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_30_1 - ((poseidon2_params_MU_1 * poseidon2_A_30_1) + poseidon2_SUM_30))); + tmp *= scaling_factor; + std::get<134>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<135, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_30_2 - ((poseidon2_params_MU_2 * poseidon2_A_30_2) + poseidon2_SUM_30))); + tmp *= scaling_factor; + std::get<135>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<136, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_30_3 - ((poseidon2_params_MU_3 * poseidon2_A_30_3) + poseidon2_SUM_30))); + tmp *= scaling_factor; + std::get<136>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<137, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_31_0 - ((poseidon2_params_MU_0 * poseidon2_A_31_0) + poseidon2_SUM_31))); + tmp *= scaling_factor; + std::get<137>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<138, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_31_1 - ((poseidon2_params_MU_1 * poseidon2_A_31_1) + poseidon2_SUM_31))); + tmp *= scaling_factor; + std::get<138>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<139, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_31_2 - ((poseidon2_params_MU_2 * poseidon2_A_31_2) + poseidon2_SUM_31))); + tmp *= scaling_factor; + std::get<139>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<140, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_31_3 - ((poseidon2_params_MU_3 * poseidon2_A_31_3) + poseidon2_SUM_31))); + tmp *= scaling_factor; + std::get<140>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<141, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_32_0 - ((poseidon2_params_MU_0 * poseidon2_A_32_0) + poseidon2_SUM_32))); + tmp *= scaling_factor; + std::get<141>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<142, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_32_1 - ((poseidon2_params_MU_1 * poseidon2_A_32_1) + poseidon2_SUM_32))); + tmp *= scaling_factor; + std::get<142>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<143, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_32_2 - ((poseidon2_params_MU_2 * poseidon2_A_32_2) + poseidon2_SUM_32))); + tmp *= scaling_factor; + std::get<143>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<144, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_32_3 - ((poseidon2_params_MU_3 * poseidon2_A_32_3) + poseidon2_SUM_32))); + tmp *= scaling_factor; + std::get<144>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<145, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_33_0 - ((poseidon2_params_MU_0 * poseidon2_A_33_0) + poseidon2_SUM_33))); + tmp *= scaling_factor; + std::get<145>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<146, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_33_1 - ((poseidon2_params_MU_1 * poseidon2_A_33_1) + poseidon2_SUM_33))); + tmp *= scaling_factor; + std::get<146>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<147, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_33_2 - ((poseidon2_params_MU_2 * poseidon2_A_33_2) + poseidon2_SUM_33))); + tmp *= scaling_factor; + std::get<147>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<148, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_33_3 - ((poseidon2_params_MU_3 * poseidon2_A_33_3) + poseidon2_SUM_33))); + tmp *= scaling_factor; + std::get<148>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<149, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_34_0 - ((poseidon2_params_MU_0 * poseidon2_A_34_0) + poseidon2_SUM_34))); + tmp *= scaling_factor; + std::get<149>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<150, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_34_1 - ((poseidon2_params_MU_1 * poseidon2_A_34_1) + poseidon2_SUM_34))); + tmp *= scaling_factor; + std::get<150>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<151, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_34_2 - ((poseidon2_params_MU_2 * poseidon2_A_34_2) + poseidon2_SUM_34))); + tmp *= scaling_factor; + std::get<151>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<152, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_34_3 - ((poseidon2_params_MU_3 * poseidon2_A_34_3) + poseidon2_SUM_34))); + tmp *= scaling_factor; + std::get<152>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<153, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_35_0 - ((poseidon2_params_MU_0 * poseidon2_A_35_0) + poseidon2_SUM_35))); + tmp *= scaling_factor; + std::get<153>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<154, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_35_1 - ((poseidon2_params_MU_1 * poseidon2_A_35_1) + poseidon2_SUM_35))); + tmp *= scaling_factor; + std::get<154>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<155, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_35_2 - ((poseidon2_params_MU_2 * poseidon2_A_35_2) + poseidon2_SUM_35))); + tmp *= scaling_factor; + std::get<155>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<156, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_35_3 - ((poseidon2_params_MU_3 * poseidon2_A_35_3) + poseidon2_SUM_35))); + tmp *= scaling_factor; + std::get<156>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<157, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_36_0 - ((poseidon2_params_MU_0 * poseidon2_A_36_0) + poseidon2_SUM_36))); + tmp *= scaling_factor; + std::get<157>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<158, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_36_1 - ((poseidon2_params_MU_1 * poseidon2_A_36_1) + poseidon2_SUM_36))); + tmp *= scaling_factor; + std::get<158>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<159, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_36_2 - ((poseidon2_params_MU_2 * poseidon2_A_36_2) + poseidon2_SUM_36))); + tmp *= scaling_factor; + std::get<159>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<160, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_36_3 - ((poseidon2_params_MU_3 * poseidon2_A_36_3) + poseidon2_SUM_36))); + tmp *= scaling_factor; + std::get<160>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<161, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_37_0 - ((poseidon2_params_MU_0 * poseidon2_A_37_0) + poseidon2_SUM_37))); + tmp *= scaling_factor; + std::get<161>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<162, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_37_1 - ((poseidon2_params_MU_1 * poseidon2_A_37_1) + poseidon2_SUM_37))); + tmp *= scaling_factor; + std::get<162>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<163, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_37_2 - ((poseidon2_params_MU_2 * poseidon2_A_37_2) + poseidon2_SUM_37))); + tmp *= scaling_factor; + std::get<163>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<164, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_37_3 - ((poseidon2_params_MU_3 * poseidon2_A_37_3) + poseidon2_SUM_37))); + tmp *= scaling_factor; + std::get<164>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<165, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_38_0 - ((poseidon2_params_MU_0 * poseidon2_A_38_0) + poseidon2_SUM_38))); + tmp *= scaling_factor; + std::get<165>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<166, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_38_1 - ((poseidon2_params_MU_1 * poseidon2_A_38_1) + poseidon2_SUM_38))); + tmp *= scaling_factor; + std::get<166>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<167, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_38_2 - ((poseidon2_params_MU_2 * poseidon2_A_38_2) + poseidon2_SUM_38))); + tmp *= scaling_factor; + std::get<167>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<168, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_38_3 - ((poseidon2_params_MU_3 * poseidon2_A_38_3) + poseidon2_SUM_38))); + tmp *= scaling_factor; + std::get<168>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<169, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_39_0 - ((poseidon2_params_MU_0 * poseidon2_A_39_0) + poseidon2_SUM_39))); + tmp *= scaling_factor; + std::get<169>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<170, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_39_1 - ((poseidon2_params_MU_1 * poseidon2_A_39_1) + poseidon2_SUM_39))); + tmp *= scaling_factor; + std::get<170>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<171, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_39_2 - ((poseidon2_params_MU_2 * poseidon2_A_39_2) + poseidon2_SUM_39))); + tmp *= scaling_factor; + std::get<171>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<172, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_39_3 - ((poseidon2_params_MU_3 * poseidon2_A_39_3) + poseidon2_SUM_39))); + tmp *= scaling_factor; + std::get<172>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<173, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_40_0 - ((poseidon2_params_MU_0 * poseidon2_A_40_0) + poseidon2_SUM_40))); + tmp *= scaling_factor; + std::get<173>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<174, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_40_1 - ((poseidon2_params_MU_1 * poseidon2_A_40_1) + poseidon2_SUM_40))); + tmp *= scaling_factor; + std::get<174>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<175, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_40_2 - ((poseidon2_params_MU_2 * poseidon2_A_40_2) + poseidon2_SUM_40))); + tmp *= scaling_factor; + std::get<175>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<176, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_40_3 - ((poseidon2_params_MU_3 * poseidon2_A_40_3) + poseidon2_SUM_40))); + tmp *= scaling_factor; + std::get<176>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<177, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_41_0 - ((poseidon2_params_MU_0 * poseidon2_A_41_0) + poseidon2_SUM_41))); + tmp *= scaling_factor; + std::get<177>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<178, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_41_1 - ((poseidon2_params_MU_1 * poseidon2_A_41_1) + poseidon2_SUM_41))); + tmp *= scaling_factor; + std::get<178>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<179, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_41_2 - ((poseidon2_params_MU_2 * poseidon2_A_41_2) + poseidon2_SUM_41))); + tmp *= scaling_factor; + std::get<179>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<180, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_41_3 - ((poseidon2_params_MU_3 * poseidon2_A_41_3) + poseidon2_SUM_41))); + tmp *= scaling_factor; + std::get<180>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<181, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_42_0 - ((poseidon2_params_MU_0 * poseidon2_A_42_0) + poseidon2_SUM_42))); + tmp *= scaling_factor; + std::get<181>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<182, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_42_1 - ((poseidon2_params_MU_1 * poseidon2_A_42_1) + poseidon2_SUM_42))); + tmp *= scaling_factor; + std::get<182>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<183, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_42_2 - ((poseidon2_params_MU_2 * poseidon2_A_42_2) + poseidon2_SUM_42))); + tmp *= scaling_factor; + std::get<183>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<184, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_42_3 - ((poseidon2_params_MU_3 * poseidon2_A_42_3) + poseidon2_SUM_42))); + tmp *= scaling_factor; + std::get<184>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<185, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_43_0 - ((poseidon2_params_MU_0 * poseidon2_A_43_0) + poseidon2_SUM_43))); + tmp *= scaling_factor; + std::get<185>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<186, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_43_1 - ((poseidon2_params_MU_1 * poseidon2_A_43_1) + poseidon2_SUM_43))); + tmp *= scaling_factor; + std::get<186>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<187, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_43_2 - ((poseidon2_params_MU_2 * poseidon2_A_43_2) + poseidon2_SUM_43))); + tmp *= scaling_factor; + std::get<187>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<188, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_43_3 - ((poseidon2_params_MU_3 * poseidon2_A_43_3) + poseidon2_SUM_43))); + tmp *= scaling_factor; + std::get<188>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<189, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_44_0 - ((poseidon2_params_MU_0 * poseidon2_A_44_0) + poseidon2_SUM_44))); + tmp *= scaling_factor; + std::get<189>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<190, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_44_1 - ((poseidon2_params_MU_1 * poseidon2_A_44_1) + poseidon2_SUM_44))); + tmp *= scaling_factor; + std::get<190>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<191, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_44_2 - ((poseidon2_params_MU_2 * poseidon2_A_44_2) + poseidon2_SUM_44))); + tmp *= scaling_factor; + std::get<191>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<192, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_44_3 - ((poseidon2_params_MU_3 * poseidon2_A_44_3) + poseidon2_SUM_44))); + tmp *= scaling_factor; + std::get<192>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<193, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_45_0 - ((poseidon2_params_MU_0 * poseidon2_A_45_0) + poseidon2_SUM_45))); + tmp *= scaling_factor; + std::get<193>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<194, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_45_1 - ((poseidon2_params_MU_1 * poseidon2_A_45_1) + poseidon2_SUM_45))); + tmp *= scaling_factor; + std::get<194>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<195, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_45_2 - ((poseidon2_params_MU_2 * poseidon2_A_45_2) + poseidon2_SUM_45))); + tmp *= scaling_factor; + std::get<195>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<196, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_45_3 - ((poseidon2_params_MU_3 * poseidon2_A_45_3) + poseidon2_SUM_45))); + tmp *= scaling_factor; + std::get<196>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<197, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_46_0 - ((poseidon2_params_MU_0 * poseidon2_A_46_0) + poseidon2_SUM_46))); + tmp *= scaling_factor; + std::get<197>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<198, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_46_1 - ((poseidon2_params_MU_1 * poseidon2_A_46_1) + poseidon2_SUM_46))); + tmp *= scaling_factor; + std::get<198>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<199, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_46_2 - ((poseidon2_params_MU_2 * poseidon2_A_46_2) + poseidon2_SUM_46))); + tmp *= scaling_factor; + std::get<199>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<200, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_46_3 - ((poseidon2_params_MU_3 * poseidon2_A_46_3) + poseidon2_SUM_46))); + tmp *= scaling_factor; + std::get<200>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<201, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_47_0 - ((poseidon2_params_MU_0 * poseidon2_A_47_0) + poseidon2_SUM_47))); + tmp *= scaling_factor; + std::get<201>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<202, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_47_1 - ((poseidon2_params_MU_1 * poseidon2_A_47_1) + poseidon2_SUM_47))); + tmp *= scaling_factor; + std::get<202>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<203, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_47_2 - ((poseidon2_params_MU_2 * poseidon2_A_47_2) + poseidon2_SUM_47))); + tmp *= scaling_factor; + std::get<203>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<204, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_47_3 - ((poseidon2_params_MU_3 * poseidon2_A_47_3) + poseidon2_SUM_47))); + tmp *= scaling_factor; + std::get<204>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<205, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_48_0 - ((poseidon2_params_MU_0 * poseidon2_A_48_0) + poseidon2_SUM_48))); + tmp *= scaling_factor; + std::get<205>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<206, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_48_1 - ((poseidon2_params_MU_1 * poseidon2_A_48_1) + poseidon2_SUM_48))); + tmp *= scaling_factor; + std::get<206>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<207, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_48_2 - ((poseidon2_params_MU_2 * poseidon2_A_48_2) + poseidon2_SUM_48))); + tmp *= scaling_factor; + std::get<207>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<208, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_48_3 - ((poseidon2_params_MU_3 * poseidon2_A_48_3) + poseidon2_SUM_48))); + tmp *= scaling_factor; + std::get<208>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<209, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_49_0 - ((poseidon2_params_MU_0 * poseidon2_A_49_0) + poseidon2_SUM_49))); + tmp *= scaling_factor; + std::get<209>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<210, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_49_1 - ((poseidon2_params_MU_1 * poseidon2_A_49_1) + poseidon2_SUM_49))); + tmp *= scaling_factor; + std::get<210>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<211, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_49_2 - ((poseidon2_params_MU_2 * poseidon2_A_49_2) + poseidon2_SUM_49))); + tmp *= scaling_factor; + std::get<211>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<212, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_49_3 - ((poseidon2_params_MU_3 * poseidon2_A_49_3) + poseidon2_SUM_49))); + tmp *= scaling_factor; + std::get<212>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<213, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_50_0 - ((poseidon2_params_MU_0 * poseidon2_A_50_0) + poseidon2_SUM_50))); + tmp *= scaling_factor; + std::get<213>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<214, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_50_1 - ((poseidon2_params_MU_1 * poseidon2_A_50_1) + poseidon2_SUM_50))); + tmp *= scaling_factor; + std::get<214>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<215, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_50_2 - ((poseidon2_params_MU_2 * poseidon2_A_50_2) + poseidon2_SUM_50))); + tmp *= scaling_factor; + std::get<215>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<216, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_50_3 - ((poseidon2_params_MU_3 * poseidon2_A_50_3) + poseidon2_SUM_50))); + tmp *= scaling_factor; + std::get<216>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<217, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_51_0 - ((poseidon2_params_MU_0 * poseidon2_A_51_0) + poseidon2_SUM_51))); + tmp *= scaling_factor; + std::get<217>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<218, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_51_1 - ((poseidon2_params_MU_1 * poseidon2_A_51_1) + poseidon2_SUM_51))); + tmp *= scaling_factor; + std::get<218>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<219, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_51_2 - ((poseidon2_params_MU_2 * poseidon2_A_51_2) + poseidon2_SUM_51))); + tmp *= scaling_factor; + std::get<219>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<220, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_51_3 - ((poseidon2_params_MU_3 * poseidon2_A_51_3) + poseidon2_SUM_51))); + tmp *= scaling_factor; + std::get<220>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<221, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_52_0 - ((poseidon2_params_MU_0 * poseidon2_A_52_0) + poseidon2_SUM_52))); + tmp *= scaling_factor; + std::get<221>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<222, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_52_1 - ((poseidon2_params_MU_1 * poseidon2_A_52_1) + poseidon2_SUM_52))); + tmp *= scaling_factor; + std::get<222>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<223, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_52_2 - ((poseidon2_params_MU_2 * poseidon2_A_52_2) + poseidon2_SUM_52))); + tmp *= scaling_factor; + std::get<223>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<224, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_52_3 - ((poseidon2_params_MU_3 * poseidon2_A_52_3) + poseidon2_SUM_52))); + tmp *= scaling_factor; + std::get<224>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<225, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_53_0 - ((poseidon2_params_MU_0 * poseidon2_A_53_0) + poseidon2_SUM_53))); + tmp *= scaling_factor; + std::get<225>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<226, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_53_1 - ((poseidon2_params_MU_1 * poseidon2_A_53_1) + poseidon2_SUM_53))); + tmp *= scaling_factor; + std::get<226>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<227, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_53_2 - ((poseidon2_params_MU_2 * poseidon2_A_53_2) + poseidon2_SUM_53))); + tmp *= scaling_factor; + std::get<227>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<228, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_53_3 - ((poseidon2_params_MU_3 * poseidon2_A_53_3) + poseidon2_SUM_53))); + tmp *= scaling_factor; + std::get<228>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<229, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_54_0 - ((poseidon2_params_MU_0 * poseidon2_A_54_0) + poseidon2_SUM_54))); + tmp *= scaling_factor; + std::get<229>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<230, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_54_1 - ((poseidon2_params_MU_1 * poseidon2_A_54_1) + poseidon2_SUM_54))); + tmp *= scaling_factor; + std::get<230>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<231, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_54_2 - ((poseidon2_params_MU_2 * poseidon2_A_54_2) + poseidon2_SUM_54))); + tmp *= scaling_factor; + std::get<231>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<232, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_54_3 - ((poseidon2_params_MU_3 * poseidon2_A_54_3) + poseidon2_SUM_54))); + tmp *= scaling_factor; + std::get<232>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<233, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_55_0 - ((poseidon2_params_MU_0 * poseidon2_A_55_0) + poseidon2_SUM_55))); + tmp *= scaling_factor; + std::get<233>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<234, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_55_1 - ((poseidon2_params_MU_1 * poseidon2_A_55_1) + poseidon2_SUM_55))); + tmp *= scaling_factor; + std::get<234>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<235, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_55_2 - ((poseidon2_params_MU_2 * poseidon2_A_55_2) + poseidon2_SUM_55))); + tmp *= scaling_factor; + std::get<235>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<236, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_55_3 - ((poseidon2_params_MU_3 * poseidon2_A_55_3) + poseidon2_SUM_55))); + tmp *= scaling_factor; + std::get<236>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<237, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_56_0 - ((poseidon2_params_MU_0 * poseidon2_A_56_0) + poseidon2_SUM_56))); + tmp *= scaling_factor; + std::get<237>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<238, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_56_1 - ((poseidon2_params_MU_1 * poseidon2_A_56_1) + poseidon2_SUM_56))); + tmp *= scaling_factor; + std::get<238>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<239, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_56_2 - ((poseidon2_params_MU_2 * poseidon2_A_56_2) + poseidon2_SUM_56))); + tmp *= scaling_factor; + std::get<239>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<240, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_56_3 - ((poseidon2_params_MU_3 * poseidon2_A_56_3) + poseidon2_SUM_56))); + tmp *= scaling_factor; + std::get<240>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<241, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_57_0 - ((poseidon2_params_MU_0 * poseidon2_A_57_0) + poseidon2_SUM_57))); + tmp *= scaling_factor; + std::get<241>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<242, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_57_1 - ((poseidon2_params_MU_1 * poseidon2_A_57_1) + poseidon2_SUM_57))); + tmp *= scaling_factor; + std::get<242>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<243, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_57_2 - ((poseidon2_params_MU_2 * poseidon2_A_57_2) + poseidon2_SUM_57))); + tmp *= scaling_factor; + std::get<243>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<244, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_57_3 - ((poseidon2_params_MU_3 * poseidon2_A_57_3) + poseidon2_SUM_57))); + tmp *= scaling_factor; + std::get<244>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<245, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_58_0 - ((poseidon2_params_MU_0 * poseidon2_A_58_0) + poseidon2_SUM_58))); + tmp *= scaling_factor; + std::get<245>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<246, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_58_1 - ((poseidon2_params_MU_1 * poseidon2_A_58_1) + poseidon2_SUM_58))); + tmp *= scaling_factor; + std::get<246>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<247, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_58_2 - ((poseidon2_params_MU_2 * poseidon2_A_58_2) + poseidon2_SUM_58))); + tmp *= scaling_factor; + std::get<247>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<248, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_58_3 - ((poseidon2_params_MU_3 * poseidon2_A_58_3) + poseidon2_SUM_58))); + tmp *= scaling_factor; + std::get<248>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<249, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_59_0 - ((poseidon2_params_MU_0 * poseidon2_A_59_0) + poseidon2_SUM_59))); + tmp *= scaling_factor; + std::get<249>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<250, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_59_1 - ((poseidon2_params_MU_1 * poseidon2_A_59_1) + poseidon2_SUM_59))); + tmp *= scaling_factor; + std::get<250>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<251, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_59_2 - ((poseidon2_params_MU_2 * poseidon2_A_59_2) + poseidon2_SUM_59))); + tmp *= scaling_factor; + std::get<251>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<252, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_B_59_3 - ((poseidon2_params_MU_3 * poseidon2_A_59_3) + poseidon2_SUM_59))); + tmp *= scaling_factor; + std::get<252>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<253, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_T_60_4 - ((FF(4) * poseidon2_T_60_1) + poseidon2_T_60_3))); + tmp *= scaling_factor; + std::get<253>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<254, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_T_60_5 - ((FF(4) * poseidon2_T_60_0) + poseidon2_T_60_2))); + tmp *= scaling_factor; + std::get<254>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<255, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_T_60_6 - (poseidon2_T_60_3 + new_term.poseidon2_T_60_5))); + tmp *= scaling_factor; + std::get<255>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<256, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_T_60_7 - (poseidon2_T_60_2 + new_term.poseidon2_T_60_4))); + tmp *= scaling_factor; + std::get<256>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<257, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_T_61_4 - ((FF(4) * poseidon2_T_61_1) + poseidon2_T_61_3))); + tmp *= scaling_factor; + std::get<257>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<258, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_T_61_5 - ((FF(4) * poseidon2_T_61_0) + poseidon2_T_61_2))); + tmp *= scaling_factor; + std::get<258>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<259, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_T_61_6 - (poseidon2_T_61_3 + new_term.poseidon2_T_61_5))); + tmp *= scaling_factor; + std::get<259>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<260, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_T_61_7 - (poseidon2_T_61_2 + new_term.poseidon2_T_61_4))); + tmp *= scaling_factor; + std::get<260>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<261, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_T_62_4 - ((FF(4) * poseidon2_T_62_1) + poseidon2_T_62_3))); + tmp *= scaling_factor; + std::get<261>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<262, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_T_62_5 - ((FF(4) * poseidon2_T_62_0) + poseidon2_T_62_2))); + tmp *= scaling_factor; + std::get<262>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<263, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_T_62_6 - (poseidon2_T_62_3 + new_term.poseidon2_T_62_5))); + tmp *= scaling_factor; + std::get<263>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<264, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_T_62_7 - (poseidon2_T_62_2 + new_term.poseidon2_T_62_4))); + tmp *= scaling_factor; + std::get<264>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<265, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_T_63_4 - ((FF(4) * poseidon2_T_63_1) + poseidon2_T_63_3))); + tmp *= scaling_factor; + std::get<265>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<266, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_T_63_5 - ((FF(4) * poseidon2_T_63_0) + poseidon2_T_63_2))); + tmp *= scaling_factor; + std::get<266>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<267, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_T_63_6 - (poseidon2_T_63_3 + new_term.poseidon2_T_63_5))); + tmp *= scaling_factor; + std::get<267>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<268, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_T_63_7 - (poseidon2_T_63_2 + new_term.poseidon2_T_63_4))); + tmp *= scaling_factor; + std::get<268>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<269, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_b_0 - new_term.poseidon2_T_63_6)); + tmp *= scaling_factor; + std::get<269>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<270, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_b_1 - new_term.poseidon2_T_63_5)); + tmp *= scaling_factor; + std::get<270>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<271, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_b_2 - new_term.poseidon2_T_63_7)); + tmp *= scaling_factor; + std::get<271>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<272, ContainerOverSubrelations>; + auto tmp = (new_term.poseidon2_sel_poseidon_perm * (new_term.poseidon2_b_3 - new_term.poseidon2_T_63_4)); + tmp *= scaling_factor; + std::get<272>(evals) += typename Accumulator::View(tmp); + } } - } }; template class poseidon2 : public Relation> { - public: - static constexpr const char* NAME = "poseidon2"; + public: + static constexpr const char* NAME = "poseidon2"; - static std::string get_subrelation_label(size_t index) - { - switch (index) {} - return std::to_string(index); - } + static std::string get_subrelation_label(size_t index) { + switch (index) { + } + return std::to_string(index); + } }; } // namespace bb::Avm_vm \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/range_check.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/range_check.hpp index 13c8cde0c2b..d646b82d10b 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/range_check.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/range_check.hpp @@ -6,264 +6,197 @@ namespace bb::Avm_vm { + template class range_checkImpl { - public: - using FF = FF_; + public: + using FF = FF_; + + static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { + 3,3,3,3,3,3,3,3,3,2,4,2,3,2,2,2,2,2,2,2,3,3,3,3,3 + }; - static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 4, 2, 3, - 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3 }; - template - void static accumulate(ContainerOverSubrelations& evals, - const AllEntities& new_term, - [[maybe_unused]] const RelationParameters&, - [[maybe_unused]] const FF& scaling_factor) - { - const auto range_check_X_0 = (new_term.range_check_is_lte_u16 * new_term.range_check_u16_r7); - const auto range_check_X_1 = (new_term.range_check_is_lte_u32 * - (new_term.range_check_u16_r0 + (new_term.range_check_u16_r7 * FF(65536)))); - const auto range_check_X_2 = (new_term.range_check_is_lte_u48 * - ((new_term.range_check_u16_r0 + (new_term.range_check_u16_r1 * FF(65536))) + - (new_term.range_check_u16_r7 * FF(4294967296UL)))); - const auto range_check_X_3 = (new_term.range_check_is_lte_u64 * - (((new_term.range_check_u16_r0 + (new_term.range_check_u16_r1 * FF(65536))) + - (new_term.range_check_u16_r2 * FF(4294967296UL))) + - (new_term.range_check_u16_r7 * FF(281474976710656UL)))); - const auto range_check_X_4 = (new_term.range_check_is_lte_u80 * - ((((new_term.range_check_u16_r0 + (new_term.range_check_u16_r1 * FF(65536))) + - (new_term.range_check_u16_r2 * FF(4294967296UL))) + - (new_term.range_check_u16_r3 * FF(281474976710656UL))) + - (new_term.range_check_u16_r7 * FF(uint256_t{ 0UL, 1UL, 0UL, 0UL })))); - const auto range_check_X_5 = (new_term.range_check_is_lte_u96 * - (((((new_term.range_check_u16_r0 + (new_term.range_check_u16_r1 * FF(65536))) + - (new_term.range_check_u16_r2 * FF(4294967296UL))) + - (new_term.range_check_u16_r3 * FF(281474976710656UL))) + - (new_term.range_check_u16_r4 * FF(uint256_t{ 0UL, 1UL, 0UL, 0UL }))) + - (new_term.range_check_u16_r7 * FF(uint256_t{ 0UL, 65536UL, 0UL, 0UL })))); - const auto range_check_X_6 = (new_term.range_check_is_lte_u112 * - ((((((new_term.range_check_u16_r0 + (new_term.range_check_u16_r1 * FF(65536))) + - (new_term.range_check_u16_r2 * FF(4294967296UL))) + - (new_term.range_check_u16_r3 * FF(281474976710656UL))) + - (new_term.range_check_u16_r4 * FF(uint256_t{ 0UL, 1UL, 0UL, 0UL }))) + - (new_term.range_check_u16_r5 * FF(uint256_t{ 0UL, 65536UL, 0UL, 0UL }))) + - (new_term.range_check_u16_r7 * FF(uint256_t{ 0UL, 4294967296UL, 0UL, 0UL })))); - const auto range_check_X_7 = - (new_term.range_check_is_lte_u128 * - (((((((new_term.range_check_u16_r0 + (new_term.range_check_u16_r1 * FF(65536))) + - (new_term.range_check_u16_r2 * FF(4294967296UL))) + - (new_term.range_check_u16_r3 * FF(281474976710656UL))) + - (new_term.range_check_u16_r4 * FF(uint256_t{ 0UL, 1UL, 0UL, 0UL }))) + - (new_term.range_check_u16_r5 * FF(uint256_t{ 0UL, 65536UL, 0UL, 0UL }))) + - (new_term.range_check_u16_r6 * FF(uint256_t{ 0UL, 4294967296UL, 0UL, 0UL }))) + - (new_term.range_check_u16_r7 * FF(uint256_t{ 0UL, 281474976710656UL, 0UL, 0UL })))); - const auto range_check_RESULT = - (((((((range_check_X_0 + range_check_X_1) + range_check_X_2) + range_check_X_3) + range_check_X_4) + - range_check_X_5) + - range_check_X_6) + - range_check_X_7); + template + void static accumulate( + ContainerOverSubrelations& evals, + const AllEntities& new_term, + [[maybe_unused]] const RelationParameters&, + [[maybe_unused]] const FF& scaling_factor + ){ + const auto range_check_X_0 = (new_term.range_check_is_lte_u16 * new_term.range_check_u16_r7); + const auto range_check_X_1 = (new_term.range_check_is_lte_u32 * (new_term.range_check_u16_r0 + (new_term.range_check_u16_r7 * FF(65536)))); + const auto range_check_X_2 = (new_term.range_check_is_lte_u48 * ((new_term.range_check_u16_r0 + (new_term.range_check_u16_r1 * FF(65536))) + (new_term.range_check_u16_r7 * FF(4294967296UL)))); + const auto range_check_X_3 = (new_term.range_check_is_lte_u64 * (((new_term.range_check_u16_r0 + (new_term.range_check_u16_r1 * FF(65536))) + (new_term.range_check_u16_r2 * FF(4294967296UL))) + (new_term.range_check_u16_r7 * FF(281474976710656UL)))); + const auto range_check_X_4 = (new_term.range_check_is_lte_u80 * ((((new_term.range_check_u16_r0 + (new_term.range_check_u16_r1 * FF(65536))) + (new_term.range_check_u16_r2 * FF(4294967296UL))) + (new_term.range_check_u16_r3 * FF(281474976710656UL))) + (new_term.range_check_u16_r7 * FF(uint256_t{0UL, 1UL, 0UL, 0UL})))); + const auto range_check_X_5 = (new_term.range_check_is_lte_u96 * (((((new_term.range_check_u16_r0 + (new_term.range_check_u16_r1 * FF(65536))) + (new_term.range_check_u16_r2 * FF(4294967296UL))) + (new_term.range_check_u16_r3 * FF(281474976710656UL))) + (new_term.range_check_u16_r4 * FF(uint256_t{0UL, 1UL, 0UL, 0UL}))) + (new_term.range_check_u16_r7 * FF(uint256_t{0UL, 65536UL, 0UL, 0UL})))); + const auto range_check_X_6 = (new_term.range_check_is_lte_u112 * ((((((new_term.range_check_u16_r0 + (new_term.range_check_u16_r1 * FF(65536))) + (new_term.range_check_u16_r2 * FF(4294967296UL))) + (new_term.range_check_u16_r3 * FF(281474976710656UL))) + (new_term.range_check_u16_r4 * FF(uint256_t{0UL, 1UL, 0UL, 0UL}))) + (new_term.range_check_u16_r5 * FF(uint256_t{0UL, 65536UL, 0UL, 0UL}))) + (new_term.range_check_u16_r7 * FF(uint256_t{0UL, 4294967296UL, 0UL, 0UL})))); + const auto range_check_X_7 = (new_term.range_check_is_lte_u128 * (((((((new_term.range_check_u16_r0 + (new_term.range_check_u16_r1 * FF(65536))) + (new_term.range_check_u16_r2 * FF(4294967296UL))) + (new_term.range_check_u16_r3 * FF(281474976710656UL))) + (new_term.range_check_u16_r4 * FF(uint256_t{0UL, 1UL, 0UL, 0UL}))) + (new_term.range_check_u16_r5 * FF(uint256_t{0UL, 65536UL, 0UL, 0UL}))) + (new_term.range_check_u16_r6 * FF(uint256_t{0UL, 4294967296UL, 0UL, 0UL}))) + (new_term.range_check_u16_r7 * FF(uint256_t{0UL, 281474976710656UL, 0UL, 0UL})))); + const auto range_check_RESULT = (((((((range_check_X_0 + range_check_X_1) + range_check_X_2) + range_check_X_3) + range_check_X_4) + range_check_X_5) + range_check_X_6) + range_check_X_7); - { - using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>; - auto tmp = (new_term.range_check_sel_rng_chk * (FF(1) - new_term.range_check_sel_rng_chk)); - tmp *= scaling_factor; - std::get<0>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<1, ContainerOverSubrelations>; - auto tmp = (new_term.range_check_is_lte_u16 * (FF(1) - new_term.range_check_is_lte_u16)); - tmp *= scaling_factor; - std::get<1>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<2, ContainerOverSubrelations>; - auto tmp = (new_term.range_check_is_lte_u32 * (FF(1) - new_term.range_check_is_lte_u32)); - tmp *= scaling_factor; - std::get<2>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<3, ContainerOverSubrelations>; - auto tmp = (new_term.range_check_is_lte_u48 * (FF(1) - new_term.range_check_is_lte_u48)); - tmp *= scaling_factor; - std::get<3>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<4, ContainerOverSubrelations>; - auto tmp = (new_term.range_check_is_lte_u64 * (FF(1) - new_term.range_check_is_lte_u64)); - tmp *= scaling_factor; - std::get<4>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<5, ContainerOverSubrelations>; - auto tmp = (new_term.range_check_is_lte_u80 * (FF(1) - new_term.range_check_is_lte_u80)); - tmp *= scaling_factor; - std::get<5>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<6, ContainerOverSubrelations>; - auto tmp = (new_term.range_check_is_lte_u96 * (FF(1) - new_term.range_check_is_lte_u96)); - tmp *= scaling_factor; - std::get<6>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<7, ContainerOverSubrelations>; - auto tmp = (new_term.range_check_is_lte_u112 * (FF(1) - new_term.range_check_is_lte_u112)); - tmp *= scaling_factor; - std::get<7>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<8, ContainerOverSubrelations>; - auto tmp = (new_term.range_check_is_lte_u128 * (FF(1) - new_term.range_check_is_lte_u128)); - tmp *= scaling_factor; - std::get<8>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<9, ContainerOverSubrelations>; - auto tmp = ((((((((new_term.range_check_is_lte_u16 + new_term.range_check_is_lte_u32) + - new_term.range_check_is_lte_u48) + - new_term.range_check_is_lte_u64) + - new_term.range_check_is_lte_u80) + - new_term.range_check_is_lte_u96) + - new_term.range_check_is_lte_u112) + - new_term.range_check_is_lte_u128) - - new_term.range_check_sel_rng_chk); - tmp *= scaling_factor; - std::get<9>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<10, ContainerOverSubrelations>; - auto tmp = (new_term.range_check_sel_rng_chk * (range_check_RESULT - new_term.range_check_value)); - tmp *= scaling_factor; - std::get<10>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<11, ContainerOverSubrelations>; - auto tmp = (new_term.range_check_dyn_rng_chk_bits - - (((((((new_term.range_check_rng_chk_bits - (new_term.range_check_is_lte_u32 * FF(16))) - - (new_term.range_check_is_lte_u48 * FF(32))) - - (new_term.range_check_is_lte_u64 * FF(48))) - - (new_term.range_check_is_lte_u80 * FF(64))) - - (new_term.range_check_is_lte_u96 * FF(80))) - - (new_term.range_check_is_lte_u112 * FF(96))) - - (new_term.range_check_is_lte_u128 * FF(112)))); - tmp *= scaling_factor; - std::get<11>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<12, ContainerOverSubrelations>; - auto tmp = (new_term.range_check_sel_rng_chk * - (new_term.range_check_dyn_diff - - ((new_term.range_check_dyn_rng_chk_pow_2 - new_term.range_check_u16_r7) - FF(1)))); - tmp *= scaling_factor; - std::get<12>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<13, ContainerOverSubrelations>; - auto tmp = (new_term.range_check_sel_lookup_0 - - ((((((new_term.range_check_is_lte_u32 + new_term.range_check_is_lte_u48) + - new_term.range_check_is_lte_u64) + - new_term.range_check_is_lte_u80) + - new_term.range_check_is_lte_u96) + - new_term.range_check_is_lte_u112) + - new_term.range_check_is_lte_u128)); - tmp *= scaling_factor; - std::get<13>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<14, ContainerOverSubrelations>; - auto tmp = (new_term.range_check_sel_lookup_1 - - (((((new_term.range_check_is_lte_u48 + new_term.range_check_is_lte_u64) + - new_term.range_check_is_lte_u80) + - new_term.range_check_is_lte_u96) + - new_term.range_check_is_lte_u112) + - new_term.range_check_is_lte_u128)); - tmp *= scaling_factor; - std::get<14>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<15, ContainerOverSubrelations>; - auto tmp = (new_term.range_check_sel_lookup_2 - - ((((new_term.range_check_is_lte_u64 + new_term.range_check_is_lte_u80) + - new_term.range_check_is_lte_u96) + - new_term.range_check_is_lte_u112) + - new_term.range_check_is_lte_u128)); - tmp *= scaling_factor; - std::get<15>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<16, ContainerOverSubrelations>; - auto tmp = (new_term.range_check_sel_lookup_3 - - (((new_term.range_check_is_lte_u80 + new_term.range_check_is_lte_u96) + - new_term.range_check_is_lte_u112) + - new_term.range_check_is_lte_u128)); - tmp *= scaling_factor; - std::get<16>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<17, ContainerOverSubrelations>; - auto tmp = (new_term.range_check_sel_lookup_4 - - ((new_term.range_check_is_lte_u96 + new_term.range_check_is_lte_u112) + - new_term.range_check_is_lte_u128)); - tmp *= scaling_factor; - std::get<17>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<18, ContainerOverSubrelations>; - auto tmp = (new_term.range_check_sel_lookup_5 - - (new_term.range_check_is_lte_u112 + new_term.range_check_is_lte_u128)); - tmp *= scaling_factor; - std::get<18>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<19, ContainerOverSubrelations>; - auto tmp = (new_term.range_check_sel_lookup_6 - new_term.range_check_is_lte_u128); - tmp *= scaling_factor; - std::get<19>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<20, ContainerOverSubrelations>; - auto tmp = (new_term.range_check_mem_rng_chk * (new_term.range_check_rng_chk_bits - FF(40))); - tmp *= scaling_factor; - std::get<20>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<21, ContainerOverSubrelations>; - auto tmp = (new_term.range_check_gas_l2_rng_chk * (new_term.range_check_rng_chk_bits - FF(32))); - tmp *= scaling_factor; - std::get<21>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<22, ContainerOverSubrelations>; - auto tmp = (new_term.range_check_gas_da_rng_chk * (new_term.range_check_rng_chk_bits - FF(32))); - tmp *= scaling_factor; - std::get<22>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<23, ContainerOverSubrelations>; - auto tmp = (new_term.range_check_cmp_lo_bits_rng_chk * (new_term.range_check_rng_chk_bits - FF(128))); - tmp *= scaling_factor; - std::get<23>(evals) += typename Accumulator::View(tmp); - } - { - using Accumulator = typename std::tuple_element_t<24, ContainerOverSubrelations>; - auto tmp = (new_term.range_check_cmp_hi_bits_rng_chk * (new_term.range_check_rng_chk_bits - FF(128))); - tmp *= scaling_factor; - std::get<24>(evals) += typename Accumulator::View(tmp); + { + using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>; + auto tmp = (new_term.range_check_sel_rng_chk * (FF(1) - new_term.range_check_sel_rng_chk)); + tmp *= scaling_factor; + std::get<0>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<1, ContainerOverSubrelations>; + auto tmp = (new_term.range_check_is_lte_u16 * (FF(1) - new_term.range_check_is_lte_u16)); + tmp *= scaling_factor; + std::get<1>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<2, ContainerOverSubrelations>; + auto tmp = (new_term.range_check_is_lte_u32 * (FF(1) - new_term.range_check_is_lte_u32)); + tmp *= scaling_factor; + std::get<2>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<3, ContainerOverSubrelations>; + auto tmp = (new_term.range_check_is_lte_u48 * (FF(1) - new_term.range_check_is_lte_u48)); + tmp *= scaling_factor; + std::get<3>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<4, ContainerOverSubrelations>; + auto tmp = (new_term.range_check_is_lte_u64 * (FF(1) - new_term.range_check_is_lte_u64)); + tmp *= scaling_factor; + std::get<4>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<5, ContainerOverSubrelations>; + auto tmp = (new_term.range_check_is_lte_u80 * (FF(1) - new_term.range_check_is_lte_u80)); + tmp *= scaling_factor; + std::get<5>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<6, ContainerOverSubrelations>; + auto tmp = (new_term.range_check_is_lte_u96 * (FF(1) - new_term.range_check_is_lte_u96)); + tmp *= scaling_factor; + std::get<6>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<7, ContainerOverSubrelations>; + auto tmp = (new_term.range_check_is_lte_u112 * (FF(1) - new_term.range_check_is_lte_u112)); + tmp *= scaling_factor; + std::get<7>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<8, ContainerOverSubrelations>; + auto tmp = (new_term.range_check_is_lte_u128 * (FF(1) - new_term.range_check_is_lte_u128)); + tmp *= scaling_factor; + std::get<8>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<9, ContainerOverSubrelations>; + auto tmp = ((((((((new_term.range_check_is_lte_u16 + new_term.range_check_is_lte_u32) + new_term.range_check_is_lte_u48) + new_term.range_check_is_lte_u64) + new_term.range_check_is_lte_u80) + new_term.range_check_is_lte_u96) + new_term.range_check_is_lte_u112) + new_term.range_check_is_lte_u128) - new_term.range_check_sel_rng_chk); + tmp *= scaling_factor; + std::get<9>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<10, ContainerOverSubrelations>; + auto tmp = (new_term.range_check_sel_rng_chk * (range_check_RESULT - new_term.range_check_value)); + tmp *= scaling_factor; + std::get<10>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<11, ContainerOverSubrelations>; + auto tmp = (new_term.range_check_dyn_rng_chk_bits - (((((((new_term.range_check_rng_chk_bits - (new_term.range_check_is_lte_u32 * FF(16))) - (new_term.range_check_is_lte_u48 * FF(32))) - (new_term.range_check_is_lte_u64 * FF(48))) - (new_term.range_check_is_lte_u80 * FF(64))) - (new_term.range_check_is_lte_u96 * FF(80))) - (new_term.range_check_is_lte_u112 * FF(96))) - (new_term.range_check_is_lte_u128 * FF(112)))); + tmp *= scaling_factor; + std::get<11>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<12, ContainerOverSubrelations>; + auto tmp = (new_term.range_check_sel_rng_chk * (new_term.range_check_dyn_diff - ((new_term.range_check_dyn_rng_chk_pow_2 - new_term.range_check_u16_r7) - FF(1)))); + tmp *= scaling_factor; + std::get<12>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<13, ContainerOverSubrelations>; + auto tmp = (new_term.range_check_sel_lookup_0 - ((((((new_term.range_check_is_lte_u32 + new_term.range_check_is_lte_u48) + new_term.range_check_is_lte_u64) + new_term.range_check_is_lte_u80) + new_term.range_check_is_lte_u96) + new_term.range_check_is_lte_u112) + new_term.range_check_is_lte_u128)); + tmp *= scaling_factor; + std::get<13>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<14, ContainerOverSubrelations>; + auto tmp = (new_term.range_check_sel_lookup_1 - (((((new_term.range_check_is_lte_u48 + new_term.range_check_is_lte_u64) + new_term.range_check_is_lte_u80) + new_term.range_check_is_lte_u96) + new_term.range_check_is_lte_u112) + new_term.range_check_is_lte_u128)); + tmp *= scaling_factor; + std::get<14>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<15, ContainerOverSubrelations>; + auto tmp = (new_term.range_check_sel_lookup_2 - ((((new_term.range_check_is_lte_u64 + new_term.range_check_is_lte_u80) + new_term.range_check_is_lte_u96) + new_term.range_check_is_lte_u112) + new_term.range_check_is_lte_u128)); + tmp *= scaling_factor; + std::get<15>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<16, ContainerOverSubrelations>; + auto tmp = (new_term.range_check_sel_lookup_3 - (((new_term.range_check_is_lte_u80 + new_term.range_check_is_lte_u96) + new_term.range_check_is_lte_u112) + new_term.range_check_is_lte_u128)); + tmp *= scaling_factor; + std::get<16>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<17, ContainerOverSubrelations>; + auto tmp = (new_term.range_check_sel_lookup_4 - ((new_term.range_check_is_lte_u96 + new_term.range_check_is_lte_u112) + new_term.range_check_is_lte_u128)); + tmp *= scaling_factor; + std::get<17>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<18, ContainerOverSubrelations>; + auto tmp = (new_term.range_check_sel_lookup_5 - (new_term.range_check_is_lte_u112 + new_term.range_check_is_lte_u128)); + tmp *= scaling_factor; + std::get<18>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<19, ContainerOverSubrelations>; + auto tmp = (new_term.range_check_sel_lookup_6 - new_term.range_check_is_lte_u128); + tmp *= scaling_factor; + std::get<19>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<20, ContainerOverSubrelations>; + auto tmp = (new_term.range_check_mem_rng_chk * (new_term.range_check_rng_chk_bits - FF(40))); + tmp *= scaling_factor; + std::get<20>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<21, ContainerOverSubrelations>; + auto tmp = (new_term.range_check_gas_l2_rng_chk * (new_term.range_check_rng_chk_bits - FF(32))); + tmp *= scaling_factor; + std::get<21>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<22, ContainerOverSubrelations>; + auto tmp = (new_term.range_check_gas_da_rng_chk * (new_term.range_check_rng_chk_bits - FF(32))); + tmp *= scaling_factor; + std::get<22>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<23, ContainerOverSubrelations>; + auto tmp = (new_term.range_check_cmp_lo_bits_rng_chk * (new_term.range_check_rng_chk_bits - FF(128))); + tmp *= scaling_factor; + std::get<23>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<24, ContainerOverSubrelations>; + auto tmp = (new_term.range_check_cmp_hi_bits_rng_chk * (new_term.range_check_rng_chk_bits - FF(128))); + tmp *= scaling_factor; + std::get<24>(evals) += typename Accumulator::View(tmp); + } } - } }; template class range_check : public Relation> { - public: - static constexpr const char* NAME = "range_check"; + public: + static constexpr const char* NAME = "range_check"; - static std::string get_subrelation_label(size_t index) - { - switch (index) { - case 10: - return "CHECK_RECOMPOSITION"; + static std::string get_subrelation_label(size_t index) { + switch (index) { + case 10: + return "CHECK_RECOMPOSITION"; + } + return std::to_string(index); } - return std::to_string(index); - } }; } // namespace bb::Avm_vm \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/sha256.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/sha256.hpp index 226b15f852a..8e879217242 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/sha256.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/relations/sha256.hpp @@ -6,37 +6,42 @@ namespace bb::Avm_vm { + template class sha256Impl { - public: - using FF = FF_; - - static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { 3 }; - - template - void static accumulate(ContainerOverSubrelations& evals, - const AllEntities& new_term, - [[maybe_unused]] const RelationParameters&, - [[maybe_unused]] const FF& scaling_factor) - { - - { - using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>; - auto tmp = (new_term.sha256_sel_sha256_compression * (FF(1) - new_term.sha256_sel_sha256_compression)); - tmp *= scaling_factor; - std::get<0>(evals) += typename Accumulator::View(tmp); + public: + using FF = FF_; + + static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { + 3 + }; + + + template + void static accumulate( + ContainerOverSubrelations& evals, + const AllEntities& new_term, + [[maybe_unused]] const RelationParameters&, + [[maybe_unused]] const FF& scaling_factor + ){ + + { + using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>; + auto tmp = (new_term.sha256_sel_sha256_compression * (FF(1) - new_term.sha256_sel_sha256_compression)); + tmp *= scaling_factor; + std::get<0>(evals) += typename Accumulator::View(tmp); + } } - } }; template class sha256 : public Relation> { - public: - static constexpr const char* NAME = "sha256"; - - static std::string get_subrelation_label(size_t index) - { - switch (index) {} - return std::to_string(index); - } + public: + static constexpr const char* NAME = "sha256"; + + static std::string get_subrelation_label(size_t index) { + switch (index) { + } + return std::to_string(index); + } }; } // namespace bb::Avm_vm \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/generated/verifier.cpp b/barretenberg/cpp/src/barretenberg/vm/avm/generated/verifier.cpp index 49bc491c708..adae3f60b4a 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/generated/verifier.cpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/generated/verifier.cpp @@ -101,35 +101,35 @@ bool AvmVerifier::verify_proof(const HonkProof& proof, const std::vector(log_circuit_size)); FF main_kernel_inputs_evaluation = evaluate_public_input_column(public_inputs[0], mle_challenge); - if (main_kernel_inputs_evaluation != claimed_evaluations.main_kernel_inputs) { - vinfo("main_kernel_inputs_evaluation failed"); - return false; - } + if (main_kernel_inputs_evaluation != claimed_evaluations.main_kernel_inputs) { + vinfo("main_kernel_inputs_evaluation failed"); + return false; + } FF main_kernel_value_out_evaluation = evaluate_public_input_column(public_inputs[1], mle_challenge); - if (main_kernel_value_out_evaluation != claimed_evaluations.main_kernel_value_out) { - vinfo("main_kernel_value_out_evaluation failed"); - return false; - } + if (main_kernel_value_out_evaluation != claimed_evaluations.main_kernel_value_out) { + vinfo("main_kernel_value_out_evaluation failed"); + return false; + } FF main_kernel_side_effect_out_evaluation = evaluate_public_input_column(public_inputs[2], mle_challenge); - if (main_kernel_side_effect_out_evaluation != claimed_evaluations.main_kernel_side_effect_out) { - vinfo("main_kernel_side_effect_out_evaluation failed"); - return false; - } + if (main_kernel_side_effect_out_evaluation != claimed_evaluations.main_kernel_side_effect_out) { + vinfo("main_kernel_side_effect_out_evaluation failed"); + return false; + } FF main_kernel_metadata_out_evaluation = evaluate_public_input_column(public_inputs[3], mle_challenge); - if (main_kernel_metadata_out_evaluation != claimed_evaluations.main_kernel_metadata_out) { - vinfo("main_kernel_metadata_out_evaluation failed"); - return false; - } + if (main_kernel_metadata_out_evaluation != claimed_evaluations.main_kernel_metadata_out) { + vinfo("main_kernel_metadata_out_evaluation failed"); + return false; + } FF main_calldata_evaluation = evaluate_public_input_column(public_inputs[4], mle_challenge); - if (main_calldata_evaluation != claimed_evaluations.main_calldata) { - vinfo("main_calldata_evaluation failed"); - return false; - } + if (main_calldata_evaluation != claimed_evaluations.main_calldata) { + vinfo("main_calldata_evaluation failed"); + return false; + } FF main_returndata_evaluation = evaluate_public_input_column(public_inputs[5], mle_challenge); - if (main_returndata_evaluation != claimed_evaluations.main_returndata) { - vinfo("main_returndata_evaluation failed"); - return false; - } + if (main_returndata_evaluation != claimed_evaluations.main_returndata) { + vinfo("main_returndata_evaluation failed"); + return false; + } // Execute ZeroMorph rounds. See https://hackmd.io/dlf9xEwhTQyE3hiGbq4FsA?view for a complete description of the // unrolled protocol. diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/tests/execution.test.cpp b/barretenberg/cpp/src/barretenberg/vm/avm/tests/execution.test.cpp index e4aa027a298..54ed662fe6e 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/tests/execution.test.cpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/tests/execution.test.cpp @@ -945,16 +945,16 @@ TEST_F(AvmExecutionTests, poseidon2PermutationOpCode) + to_hex(OpCode::SET_8) + // opcode SET for indirect dst (output) "00" // Indirect flag + to_hex(AvmMemoryTag::U32) + - "09" // value 9 (i.e. where the ouput will be written to) - "23" // dst_offset 35 - + to_hex(OpCode::POSEIDON2) + // opcode POSEIDON2 - "03" // Indirect flag (first 2 operands indirect) - "0024" // input offset (indirect 36) - "0023" // output offset (indirect 35) - + to_hex(OpCode::RETURN) + // opcode RETURN - "00" // Indirect flag - "0009" // ret offset 256 - "0004"; // ret size 8 + "09" // value 9 (i.e. where the ouput will be written to) + "23" // dst_offset 35 + + to_hex(OpCode::POSEIDON2PERM) + // opcode POSEIDON2 + "03" // Indirect flag (first 2 operands indirect) + "0024" // input offset (indirect 36) + "0023" // output offset (indirect 35) + + to_hex(OpCode::RETURN) + // opcode RETURN + "00" // Indirect flag + "0009" // ret offset 256 + "0004"; // ret size 8 auto bytecode = hex_to_bytes(bytecode_hex); auto instructions = Deserialization::parse(bytecode); @@ -1047,125 +1047,6 @@ TEST_F(AvmExecutionTests, keccakf1600OpCode) validate_trace(std::move(trace), public_inputs, calldata, returndata); } -// Positive test with Keccak. -TEST_F(AvmExecutionTests, keccakOpCode) -{ - // Test vectors from keccak256_test_cases in noir/noir-repo/acvm-repo/blackbox_solver/ - // Input: Uint8Array.from([0xbd]), - // Output: Uint8Array.from([ - // 0x5a, 0x50, 0x2f, 0x9f, 0xca, 0x46, 0x7b, 0x26, 0x6d, 0x5b, 0x78, 0x33, 0x65, 0x19, 0x37, 0xe8, 0x05, 0x27, - // 0x0c, 0xa3, 0xf3, 0xaf, 0x1c, 0x0d, 0xd2, 0x46, 0x2d, 0xca, 0x4b, 0x3b, 0x1a, 0xbf, - // ]), - std::vector expected_output = { - FF(0x5a), FF(0x50), FF(0x2f), FF(0x9f), FF(0xca), FF(0x46), FF(0x7b), FF(0x26), FF(0x6d), FF(0x5b), FF(0x78), - FF(0x33), FF(0x65), FF(0x19), FF(0x37), FF(0xe8), FF(0x05), FF(0x27), FF(0x0c), FF(0xa3), FF(0xf3), FF(0xaf), - FF(0x1c), FF(0x0d), FF(0xd2), FF(0x46), FF(0x2d), FF(0xca), FF(0x4b), FF(0x3b), FF(0x1a), FF(0xbf) - }; - std::string bytecode_hex = to_hex(OpCode::SET_8) + // Initial SET operations to store state and input - "00" // Indirect Flag - + to_hex(AvmMemoryTag::U8) + - "BD" // val 189 - "01" // dst_offset 1 - + to_hex(OpCode::SET_8) + // opcode SET for indirect src (input) - "00" // Indirect flag - + to_hex(AvmMemoryTag::U32) + - "01" // value 1 (i.e. where the src will be read from) - "24" // input_offset 36 - + to_hex(OpCode::SET_8) + // - "00" // Indirect flag - + to_hex(AvmMemoryTag::U8) + - "01" // value 1 (i.e. where the length parameter is stored) - "25" // input_offset 37 - + to_hex(OpCode::SET_16) + // opcode SET for indirect dst (output) - "00" // Indirect flag - + to_hex(AvmMemoryTag::U32) + - "0100" // value 256 (i.e. where the ouput will be written to) - "0023" // dst_offset 35 - + to_hex(OpCode::KECCAK) + // opcode KECCAK - "03" // Indirect flag (first 2 operands indirect) - "00000023" // output offset (indirect 35) - "00000024" // input offset (indirect 36) - "00000025" // length offset 37 - + to_hex(OpCode::RETURN) + // opcode RETURN - "00" // Indirect flag - "0100" // ret offset 256 - "0020"; // ret size 32 - - auto bytecode = hex_to_bytes(bytecode_hex); - auto instructions = Deserialization::parse(bytecode); - - // Assign a vector that we will mutate internally in gen_trace to store the return values; - std::vector calldata = std::vector(); - std::vector returndata = std::vector(); - auto trace = Execution::gen_trace(instructions, returndata, calldata, public_inputs_vec); - - EXPECT_EQ(returndata, expected_output); - - validate_trace(std::move(trace), public_inputs, calldata, returndata); -} - -// Positive test with Pedersen. -TEST_F(AvmExecutionTests, pedersenHashOpCode) -{ - // Test vectors from pedersen_hash in noir/noir-repo/acvm-repo/blackbox_solver/ - // input = [1,1] - // output = 0x1c446df60816b897cda124524e6b03f36df0cec333fad87617aab70d7861daa6 - // hash_index = 5; - FF expected_output = FF("0x1c446df60816b897cda124524e6b03f36df0cec333fad87617aab70d7861daa6"); - std::string bytecode_hex = to_hex(OpCode::SET_8) + // opcode SET - "00" // Indirect flag - + to_hex(AvmMemoryTag::U32) + - "00" // val - "00" // dst_offset - + to_hex(OpCode::SET_8) + // opcode SET - "00" // Indirect flag - + to_hex(AvmMemoryTag::U32) + - "02" // val - "01" // dst_offset - + to_hex(OpCode::CALLDATACOPY) + // Calldatacopy - "00" // Indirect flag - "0000" // cd_offset - "0001" // copy_size - "0000" // dst_offset - + to_hex(OpCode::SET_8) + // opcode SET for direct hash index offset - "00" // Indirect flag - + to_hex(AvmMemoryTag::U32) + - "05" // value 5 - "02" // input_offset 2 - + to_hex(OpCode::SET_8) + // opcode SET for indirect src - "00" // Indirect flag - + to_hex(AvmMemoryTag::U32) + - "00" // value 0 (i.e. where the src will be read from) - "04" // dst_offset 4 - + to_hex(OpCode::SET_8) + // opcode SET for direct src_length - "00" // Indirect flag - + to_hex(AvmMemoryTag::U32) + - "02" // value 2 - "05" // dst_offset - + to_hex(OpCode::PEDERSEN) + // opcode PEDERSEN - "04" // Indirect flag (3rd operand indirect) - "00000002" // hash_index offset (direct) - "00000003" // dest offset (direct) - "00000004" // input offset (indirect) - "00000005" // length offset (direct) - + to_hex(OpCode::RETURN) + // opcode RETURN - "00" // Indirect flag - "0003" // ret offset 3 - "0001"; // ret size 1 - - auto bytecode = hex_to_bytes(bytecode_hex); - auto instructions = Deserialization::parse(bytecode); - - // Assign a vector that we will mutate internally in gen_trace to store the return values; - std::vector returndata = std::vector(); - std::vector calldata = { FF(1), FF(1) }; - auto trace = Execution::gen_trace(instructions, returndata, calldata, public_inputs_vec); - - EXPECT_EQ(returndata[0], expected_output); - - validate_trace(std::move(trace), public_inputs, calldata, returndata); -} -// // Positive test with EmbeddedCurveAdd TEST_F(AvmExecutionTests, embeddedCurveAddOpCode) { @@ -1320,79 +1201,6 @@ TEST_F(AvmExecutionTests, msmOpCode) validate_trace(std::move(trace), public_inputs, calldata, returndata); } -// Positive test with pedersen commitment -TEST_F(AvmExecutionTests, pedersenCommitmentOpcode) -{ - auto expected_result = - grumpkin::g1::affine_element(fr(uint256_t("054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402")), - fr(uint256_t("209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126"))); - // grumpkin::g1::affine_eleelement; - // grumpkin::g1::affine_element b = grumpkin::g1::affine_element::one(); - - // Remmeber that grumpkin Fq == BN254 Fr => aka FF - grumpkin::g1::Fq scalar_a = grumpkin::g1::Fq::zero(); - grumpkin::g1::Fq scalar_b = grumpkin::g1::Fq::one(); - std::vector expected_output = { expected_result.x, expected_result.y, expected_result.is_point_at_infinity() }; - // Send all the input as Fields and cast them to U8 later - std::vector calldata = { scalar_a, scalar_b }; - std::string bytecode_hex = to_hex(OpCode::SET_8) + // opcode SET - "00" // Indirect flag - + to_hex(AvmMemoryTag::U32) + - "00" // val - "00" // dst_offset - + to_hex(OpCode::SET_8) + // opcode SET - "00" // Indirect flag - + to_hex(AvmMemoryTag::U32) + - "02" // val - "01" + - to_hex(OpCode::CALLDATACOPY) + // Calldatacopy - "00" // Indirect flag - "0000" // cd_offset 0 - "0001" // copy_size (2 elements) - "0000" // dst_offset 0 - + to_hex(OpCode::SET_8) + // opcode SET for indirect input - "00" // Indirect flag - + to_hex(AvmMemoryTag::U32) + - "00" // Input stored at memory 0 - "0b" // dst offset (11) - + to_hex(OpCode::SET_8) + // opcode SET for indirect output - "00" // Indirect flag - + to_hex(AvmMemoryTag::U32) + - "20" // output offset - "0d" // dst offset - + to_hex(OpCode::SET_8) + // opcode SET for input length - "00" // Indirect flag - + to_hex(AvmMemoryTag::U32) + - "02" // scalars length (2) - "02" + // dst offset (2) - to_hex(OpCode::SET_8) + // opcode SET for ctx index - "00" // Indirect flag - + to_hex(AvmMemoryTag::U32) + - "00" // ctx index (0) - "0f" + // dst offset - to_hex(OpCode::PEDERSENCOMMITMENT) + // opcode MSM - "03" // Indirect flag (first 2 indirect) - "0000000b" // inputs offset - "0000000d" // outputs offset - "00000002" // inputs length offset - "0000000f" // gen ctx index offset - + to_hex(OpCode::RETURN) + // opcode RETURN - "00" // Indirect flag - "0020" // ret offset - "0003"; // ret size 3 - - auto bytecode = hex_to_bytes(bytecode_hex); - auto instructions = Deserialization::parse(bytecode); - - // Assign a vector that we will mutate internally in gen_trace to store the return values; - std::vector returndata; - auto trace = Execution::gen_trace(instructions, returndata, calldata, public_inputs_vec); - - EXPECT_EQ(returndata, expected_output); - - validate_trace(std::move(trace), public_inputs, calldata, returndata); -} - // Positive test for Kernel Input opcodes TEST_F(AvmExecutionTests, kernelInputOpcodes) { diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/trace/deserialization.cpp b/barretenberg/cpp/src/barretenberg/vm/avm/trace/deserialization.cpp index 81360626bfc..c58520e61c8 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/trace/deserialization.cpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/trace/deserialization.cpp @@ -160,13 +160,10 @@ const std::unordered_map> OPCODE_WIRE_FORMAT = // Gadgets // Gadgets - Hashing - { OpCode::KECCAK, { OperandType::INDIRECT8, OperandType::UINT32, OperandType::UINT32, OperandType::UINT32 } }, - { OpCode::POSEIDON2, { OperandType::INDIRECT8, OperandType::UINT16, OperandType::UINT16 } }, + { OpCode::POSEIDON2PERM, { OperandType::INDIRECT8, OperandType::UINT16, OperandType::UINT16 } }, { OpCode::SHA256COMPRESSION, { OperandType::INDIRECT8, OperandType::UINT16, OperandType::UINT16, OperandType::UINT16 } }, { OpCode::KECCAKF1600, { OperandType::INDIRECT8, OperandType::UINT16, OperandType::UINT16, OperandType::UINT16 } }, - { OpCode::PEDERSEN, - { OperandType::INDIRECT8, OperandType::UINT32, OperandType::UINT32, OperandType::UINT32, OperandType::UINT32 } }, // TEMP ECADD without relative memory { OpCode::ECADD, { OperandType::INDIRECT16, @@ -179,8 +176,6 @@ const std::unordered_map> OPCODE_WIRE_FORMAT = OperandType::UINT16 } }, // dst_offset { OpCode::MSM, { OperandType::INDIRECT8, OperandType::UINT16, OperandType::UINT16, OperandType::UINT16, OperandType::UINT16 } }, - { OpCode::PEDERSENCOMMITMENT, - { OperandType::INDIRECT8, OperandType::UINT32, OperandType::UINT32, OperandType::UINT32, OperandType::UINT32 } }, // Gadget - Conversion { OpCode::TORADIXLE, { OperandType::INDIRECT8, @@ -189,10 +184,6 @@ const std::unordered_map> OPCODE_WIRE_FORMAT = OperandType::UINT16, OperandType::UINT16, OperandType::UINT8 } }, - // Gadgets - Unused for now - { OpCode::SHA256COMPRESSION, - { OperandType::INDIRECT8, OperandType::UINT16, OperandType::UINT16, OperandType::UINT16 } }, - { OpCode::KECCAKF1600, { OperandType::INDIRECT8, OperandType::UINT16, OperandType::UINT16, OperandType::UINT16 } }, }; const std::unordered_map OPERAND_TYPE_SIZE = { diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/trace/execution.cpp b/barretenberg/cpp/src/barretenberg/vm/avm/trace/execution.cpp index eedeac2f984..e7560783e95 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/trace/execution.cpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/trace/execution.cpp @@ -693,26 +693,28 @@ std::vector Execution::gen_trace(std::vector const& instructio break; // Gadgets - case OpCode::KECCAK: - trace_builder.op_keccak(std::get(inst.operands.at(0)), - std::get(inst.operands.at(1)), - std::get(inst.operands.at(2)), - std::get(inst.operands.at(3))); - - break; - case OpCode::POSEIDON2: + case OpCode::POSEIDON2PERM: trace_builder.op_poseidon2_permutation(std::get(inst.operands.at(0)), std::get(inst.operands.at(1)), std::get(inst.operands.at(2))); break; - case OpCode::PEDERSEN: - trace_builder.op_pedersen_hash(std::get(inst.operands.at(0)), - std::get(inst.operands.at(1)), - std::get(inst.operands.at(2)), - std::get(inst.operands.at(3)), - std::get(inst.operands.at(4))); + + case OpCode::SHA256COMPRESSION: + trace_builder.op_sha256_compression(std::get(inst.operands.at(0)), + std::get(inst.operands.at(1)), + std::get(inst.operands.at(2)), + std::get(inst.operands.at(3))); break; + + case OpCode::KECCAKF1600: + trace_builder.op_keccakf1600(std::get(inst.operands.at(0)), + std::get(inst.operands.at(1)), + std::get(inst.operands.at(2)), + std::get(inst.operands.at(3))); + + break; + case OpCode::ECADD: trace_builder.op_ec_add(std::get(inst.operands.at(0)), std::get(inst.operands.at(1)), @@ -741,28 +743,6 @@ std::vector Execution::gen_trace(std::vector const& instructio std::get(inst.operands.at(5))); break; - case OpCode::SHA256COMPRESSION: - trace_builder.op_sha256_compression(std::get(inst.operands.at(0)), - std::get(inst.operands.at(1)), - std::get(inst.operands.at(2)), - std::get(inst.operands.at(3))); - break; - - case OpCode::KECCAKF1600: - trace_builder.op_keccakf1600(std::get(inst.operands.at(0)), - std::get(inst.operands.at(1)), - std::get(inst.operands.at(2)), - std::get(inst.operands.at(3))); - - break; - case OpCode::PEDERSENCOMMITMENT: - trace_builder.op_pedersen_commit(std::get(inst.operands.at(0)), - std::get(inst.operands.at(1)), - std::get(inst.operands.at(2)), - std::get(inst.operands.at(3)), - std::get(inst.operands.at(4))); - - break; default: throw_or_abort("Don't know how to execute opcode " + to_hex(inst.op_code) + " at pc " + std::to_string(pc) + "."); diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/trace/fixed_gas.cpp b/barretenberg/cpp/src/barretenberg/vm/avm/trace/fixed_gas.cpp index 9f37ad46e98..f2cd4da1506 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/trace/fixed_gas.cpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/trace/fixed_gas.cpp @@ -83,15 +83,11 @@ const std::unordered_map GAS_COST_TABLE = { { OpCode::REVERT_8, make_cost(AVM_REVERT_BASE_L2_GAS, 0, AVM_REVERT_DYN_L2_GAS, 0) }, { OpCode::REVERT_16, make_cost(AVM_REVERT_BASE_L2_GAS, 0, AVM_REVERT_DYN_L2_GAS, 0) }, { OpCode::DEBUGLOG, make_cost(AVM_DEBUGLOG_BASE_L2_GAS, 0, 0, 0) }, - { OpCode::KECCAK, make_cost(AVM_KECCAK_BASE_L2_GAS, 0, AVM_KECCAK_DYN_L2_GAS, 0) }, - { OpCode::POSEIDON2, make_cost(AVM_POSEIDON2_BASE_L2_GAS, 0, 0, 0) }, + { OpCode::POSEIDON2PERM, make_cost(AVM_POSEIDON2_BASE_L2_GAS, 0, 0, 0) }, { OpCode::SHA256COMPRESSION, make_cost(AVM_SHA256COMPRESSION_BASE_L2_GAS, 0, 0, 0) }, { OpCode::KECCAKF1600, make_cost(AVM_KECCAKF1600_BASE_L2_GAS, 0, 0, 0) }, - { OpCode::PEDERSEN, make_cost(AVM_PEDERSEN_BASE_L2_GAS, 0, AVM_PEDERSEN_DYN_L2_GAS, 0) }, { OpCode::ECADD, make_cost(AVM_ECADD_BASE_L2_GAS, 0, 0, 0) }, { OpCode::MSM, make_cost(AVM_MSM_BASE_L2_GAS, 0, AVM_MSM_DYN_L2_GAS, 0) }, - { OpCode::PEDERSENCOMMITMENT, - make_cost(AVM_PEDERSENCOMMITMENT_BASE_L2_GAS, 0, AVM_PEDERSENCOMMITMENT_DYN_L2_GAS, 0) }, { OpCode::TORADIXLE, make_cost(AVM_TORADIXLE_BASE_L2_GAS, 0, AVM_TORADIXLE_DYN_L2_GAS, 0) }, }; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/trace/gadgets/keccak.cpp b/barretenberg/cpp/src/barretenberg/vm/avm/trace/gadgets/keccak.cpp index f998505aa48..d7f90159e63 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/trace/gadgets/keccak.cpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/trace/gadgets/keccak.cpp @@ -42,44 +42,4 @@ std::array AvmKeccakTraceBuilder::keccakf1600(uint32_t clk, std::a return output; } -std::array AvmKeccakTraceBuilder::keccak(uint32_t clk, std::vector input, uint32_t size) -{ - // Pad input to a multiple of 8 bytes - if (!input.empty()) { - input.resize(8 * ((input.size() - 1) / 8 + 1)); - } - - // We treat the input vector as an array of 64-bit integers for the avm (even though keccak takes in bytes). - std::vector vector_input; - for (size_t i = 0; i < input.size(); i += 8) { - auto uint64 = from_buffer(input, i); - vector_input.push_back(uint64); - } - auto result = ethash_keccak256(&input[0], size); - std::vector output_vector = {}; - std::array output_bytes = {}; - // The result encodes each limb in LE, we need to swap them to BE - // If we had C++23 we could use std::byteswap, but instead we write our own - for (size_t i = 0; i < 4; i++) { - std::vector le_bytes = to_buffer(result.word64s[i]); - // Reverse the bytes - std::ranges::reverse(le_bytes); - // Convert the bytes back to a uint64_t - auto be_u64 = from_buffer(le_bytes); - output_vector.push_back(be_u64); - // Copy the bytes to the output - for (size_t j = 0; j < 8; j++) { - output_bytes[i * 8 + j] = le_bytes[j]; - } - } - keccak_trace.push_back(KeccakTraceEntry{ - .clk = clk, - .input = vector_input, - .output = output_vector, - .input_size = size, - .output_size = 4, - }); - return output_bytes; -} - } // namespace bb::avm_trace diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/trace/gadgets/keccak.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/trace/gadgets/keccak.hpp index 925feaf3440..621b8985f94 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/trace/gadgets/keccak.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/trace/gadgets/keccak.hpp @@ -24,7 +24,6 @@ class AvmKeccakTraceBuilder { std::vector finalize(); std::array keccakf1600(uint32_t clk, std::array input); - std::array keccak(uint32_t clk, std::vector input, uint32_t size); private: std::vector keccak_trace; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/trace/gadgets/pedersen.cpp b/barretenberg/cpp/src/barretenberg/vm/avm/trace/gadgets/pedersen.cpp deleted file mode 100644 index 3d94837692b..00000000000 --- a/barretenberg/cpp/src/barretenberg/vm/avm/trace/gadgets/pedersen.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#include "barretenberg/crypto/pedersen_hash/pedersen.hpp" -#include "barretenberg/vm/avm/trace/common.hpp" -#include "barretenberg/vm/avm/trace/gadgets/pedersen.hpp" - -namespace bb::avm_trace { - -std::vector AvmPedersenTraceBuilder::finalize() -{ - return std::move(pedersen_trace); -} - -void AvmPedersenTraceBuilder::reset() -{ - pedersen_trace.clear(); - pedersen_trace.shrink_to_fit(); // Reclaim memory. -} - -FF AvmPedersenTraceBuilder::pedersen_hash(const std::vector& inputs, uint32_t offset, uint32_t clk) -{ - crypto::GeneratorContext ctx; - ctx.offset = offset; - // Use the standard domain separator starting at ctx.offset - FF output = crypto::pedersen_hash::hash(inputs, ctx); - pedersen_trace.push_back({ clk, inputs, output }); - - return output; -} - -} // namespace bb::avm_trace diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/trace/gadgets/pedersen.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/trace/gadgets/pedersen.hpp deleted file mode 100644 index 9fce7b70cb7..00000000000 --- a/barretenberg/cpp/src/barretenberg/vm/avm/trace/gadgets/pedersen.hpp +++ /dev/null @@ -1,32 +0,0 @@ -#pragma once - -#include "barretenberg/vm/avm/trace/common.hpp" - -#include -#include - -namespace bb::avm_trace { - -class AvmPedersenTraceBuilder { - public: - struct PedersenTraceEntry { - uint32_t clk = 0; - std::vector input; - FF output; - }; - - AvmPedersenTraceBuilder() = default; - void reset(); - // Finalize the trace - std::vector finalize(); - - // Note that this version of pedersen_hash is defined over Grumpkin (we could make it generic later if we wanted to - // also support BBJubJub) The inputs are Fr_BN254, and the output is Fq_Grumpkin (which is also Fr_BN254 since - // Grumpkin and BN254 form a 2-cycle). - FF pedersen_hash(const std::vector& inputs, uint32_t offset, uint32_t clk); - - private: - std::vector pedersen_trace; -}; - -} // namespace bb::avm_trace diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/trace/gadgets/sha256.cpp b/barretenberg/cpp/src/barretenberg/vm/avm/trace/gadgets/sha256.cpp index ff51cbab113..848e4a4eb57 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/trace/gadgets/sha256.cpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/trace/gadgets/sha256.cpp @@ -118,12 +118,4 @@ std::array AvmSha256TraceBuilder::sha256_compression(const std::arr return output; } -std::array AvmSha256TraceBuilder::sha256(const std::vector& input, uint32_t clk) -{ - auto output = crypto::sha256(input); - // Cant push here since we are not using the same format as the sha256_compression - sha256_trace.push_back(Sha256TraceEntry{ clk, {}, {}, {} }); - return output; -} - } // namespace bb::avm_trace diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/trace/gadgets/sha256.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/trace/gadgets/sha256.hpp index 38a4272e08a..d52fe438d61 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/trace/gadgets/sha256.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/trace/gadgets/sha256.hpp @@ -25,7 +25,6 @@ class AvmSha256TraceBuilder { std::array sha256_compression(const std::array& h_init, const std::array& input, uint32_t clk); - std::array sha256(const std::vector& input, uint32_t clk); private: std::vector sha256_trace; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/trace/opcode.cpp b/barretenberg/cpp/src/barretenberg/vm/avm/trace/opcode.cpp index 724ee32e2cc..2e03e98b91e 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/trace/opcode.cpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/trace/opcode.cpp @@ -159,16 +159,12 @@ std::string to_string(OpCode opcode) case OpCode::DEBUGLOG: return "DEBUGLOG"; // Gadgets - case OpCode::KECCAK: - return "KECCAK"; - case OpCode::POSEIDON2: + case OpCode::POSEIDON2PERM: return "POSEIDON2"; case OpCode::SHA256COMPRESSION: return "SHA256COMPRESSION"; case OpCode::KECCAKF1600: return "KECCAKF1600"; - case OpCode::PEDERSEN: - return "PEDERSEN"; case OpCode::ECADD: return "ECADD"; case OpCode::MSM: diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/trace/opcode.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/trace/opcode.hpp index feab28e807a..e4d4cfb1da2 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/trace/opcode.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/trace/opcode.hpp @@ -99,14 +99,11 @@ enum class OpCode : uint8_t { DEBUGLOG, // Gadgets - KECCAK, - POSEIDON2, + POSEIDON2PERM, SHA256COMPRESSION, KECCAKF1600, - PEDERSEN, ECADD, MSM, - PEDERSENCOMMITMENT, // Conversions TORADIXLE, diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/trace/trace.cpp b/barretenberg/cpp/src/barretenberg/vm/avm/trace/trace.cpp index 3cc01692b7c..202626b2d14 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/trace/trace.cpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/trace/trace.cpp @@ -16,7 +16,6 @@ #include "barretenberg/common/assert.hpp" #include "barretenberg/common/serialize.hpp" #include "barretenberg/common/throw_or_abort.hpp" -#include "barretenberg/crypto/pedersen_commitment/pedersen.hpp" #include "barretenberg/ecc/curves/grumpkin/grumpkin.hpp" #include "barretenberg/numeric/uint256/uint256.hpp" #include "barretenberg/polynomials/univariate.hpp" @@ -2762,65 +2761,6 @@ std::vector AvmTraceBuilder::op_revert(uint8_t indirect, uint32_t ret_offset * GADGETS **************************************************************************************************/ -/** - * @brief Keccak with direct or indirect memory access. - * Keccak is TEMPORARY while we wait for the transition to keccakf1600, so we do the minimal to store the result - * @param indirect byte encoding information about indirect/direct memory access. - * @param output_offset An index in memory pointing to where the first u8 value of the output array should be - * stored. - * @param input_offset An index in memory pointing to the first u8 value of the input array to be used - * @param input_size offset An index in memory pointing to the size of the input array. - */ -void AvmTraceBuilder::op_keccak(uint8_t indirect, - uint32_t output_offset, - uint32_t input_offset, - uint32_t input_size_offset) -{ - auto clk = static_cast(main_trace.size()) + 1; - - auto [resolved_output_offset, resolved_input_offset, resolved_input_size_offset] = - Addressing<3>::fromWire(indirect, call_ptr) - .resolve({ output_offset, input_offset, input_size_offset }, mem_trace_builder); - - // Read the input length first - auto input_length_read = constrained_read_from_memory( - call_ptr, clk, resolved_input_size_offset, AvmMemoryTag::U32, AvmMemoryTag::FF, IntermRegister::IB); - - // Constrain gas cost - gas_trace_builder.constrain_gas(clk, OpCode::KECCAK, static_cast(input_length_read.val)); - - // Store the clock time that we will use to line up the gadget later - auto keccak_op_clk = clk; - main_trace.push_back(Row{ - .main_clk = clk, - .main_ib = input_length_read.val, // Message Length - .main_ind_addr_b = FF(input_length_read.indirect_address), - .main_internal_return_ptr = FF(internal_return_ptr), - .main_mem_addr_b = FF(input_length_read.direct_address), // length - .main_pc = FF(pc++), - .main_r_in_tag = FF(static_cast(AvmMemoryTag::U32)), - .main_sel_mem_op_b = FF(1), - .main_sel_op_keccak = FF(1), - .main_sel_resolve_ind_addr_b = FF(static_cast(input_length_read.is_indirect)), - .main_tag_err = FF(static_cast(!input_length_read.tag_match)), - }); - clk++; - - std::vector input; - input.reserve(uint32_t(input_length_read.val)); - // Read the slice length from memory - read_slice_from_memory(resolved_input_offset, uint32_t(input_length_read.val), input); - - std::array result = keccak_trace_builder.keccak(keccak_op_clk, input, uint32_t(input_length_read.val)); - // We convert the results to field elements here - std::vector ff_result; - for (uint32_t i = 0; i < 32; i++) { - ff_result.emplace_back(result[i]); - } - // Write the result to memory after - write_slice_to_memory(resolved_output_offset, AvmMemoryTag::U8, ff_result); -} - /** * @brief Poseidon2 Permutation with direct or indirect memory access. * @@ -2843,7 +2783,7 @@ void AvmTraceBuilder::op_poseidon2_permutation(uint8_t indirect, uint32_t input_ // Resolve indirects in the main trace. Do not resolve the value stored in direct addresses. // Constrain gas cost - gas_trace_builder.constrain_gas(clk, OpCode::POSEIDON2); + gas_trace_builder.constrain_gas(clk, OpCode::POSEIDON2PERM); // Main trace contains on operand values from the bytecode and resolved indirects main_trace.push_back(Row{ @@ -2934,55 +2874,159 @@ void AvmTraceBuilder::op_poseidon2_permutation(uint8_t indirect, uint32_t input_ } /** - * @brief Pedersen Hash with direct or indirect memory access. + * @brief SHA256 Compression with direct or indirect memory access. + * * @param indirect byte encoding information about indirect/direct memory access. - * @param gen_ctx_offset An index in memory pointing to where the u32 offset for the pedersen hash generators. - * @param input_offset An index in memory pointing to the first FF value of the input array to be used in the next - * @param input_size offset An index in memory pointing to the size of the input array. + * @param state_offset An index in memory pointing to the first U32 value of the state array to be used in the next + * instance of sha256 compression. + * @param input_offset An index in memory pointing to the first U32 value of the input array to be used in the next + * instance of sha256 compression. + * @param output_offset An index in memory pointing to where the first U32 value of the output array should be + * stored. */ -void AvmTraceBuilder::op_pedersen_hash(uint8_t indirect, - uint32_t gen_ctx_offset, - uint32_t output_offset, - uint32_t input_offset, - uint32_t input_size_offset) +void AvmTraceBuilder::op_sha256_compression(uint8_t indirect, + uint32_t output_offset, + uint32_t state_offset, + uint32_t inputs_offset) { + // The clk plays a crucial role in this function as we attempt to write across multiple lines in the main trace. auto clk = static_cast(main_trace.size()) + 1; - auto [resolved_gen_ctx_offset, resolved_output_offset, resolved_input_offset, resolved_input_size_offset] = - Addressing<4>::fromWire(indirect, call_ptr) - .resolve({ gen_ctx_offset, output_offset, input_offset, input_size_offset }, mem_trace_builder); + // Resolve the indirect flags, the results of this function are used to determine the memory offsets + // that point to the starting memory addresses for the input and output values. + auto [resolved_output_offset, resolved_state_offset, resolved_inputs_offset] = + Addressing<3>::fromWire(indirect, call_ptr) + .resolve({ output_offset, state_offset, inputs_offset }, mem_trace_builder); + + auto read_a = constrained_read_from_memory( + call_ptr, clk, resolved_state_offset, AvmMemoryTag::U32, AvmMemoryTag::FF, IntermRegister::IA); + auto read_b = constrained_read_from_memory( + call_ptr, clk, resolved_inputs_offset, AvmMemoryTag::U32, AvmMemoryTag::FF, IntermRegister::IB); + bool tag_match = read_a.tag_match && read_b.tag_match; + + // Constrain gas cost + gas_trace_builder.constrain_gas(clk, OpCode::SHA256COMPRESSION); + + // Since the above adds mem_reads in the mem_trace_builder at clk, we need to follow up resolving the reads in + // the main trace at the same clk cycle to preserve the cross-table permutation + // + // TODO<#6383>: We put the first value of each of the input, output (which is 0 at this point) and h_init arrays + // into the main trace at the intermediate registers simply for the permutation check, in the future this will + // change. + // Note: we could avoid output being zero if we loaded the input and state beforehand (with a new function that + // did not lay down constraints), but this is a simplification + main_trace.push_back(Row{ + .main_clk = clk, + .main_ia = read_a.val, // First element of state + .main_ib = read_b.val, // First element of input + .main_ind_addr_a = FF(read_a.indirect_address), + .main_ind_addr_b = FF(read_b.indirect_address), + .main_internal_return_ptr = FF(internal_return_ptr), + .main_mem_addr_a = FF(read_a.direct_address), + .main_mem_addr_b = FF(read_b.direct_address), + .main_pc = FF(pc++), + .main_r_in_tag = FF(static_cast(AvmMemoryTag::U32)), + .main_sel_mem_op_a = FF(1), + .main_sel_mem_op_b = FF(1), + .main_sel_op_sha256 = FF(1), + .main_sel_resolve_ind_addr_a = FF(static_cast(read_a.is_indirect)), + .main_sel_resolve_ind_addr_b = FF(static_cast(read_b.is_indirect)), + .main_tag_err = FF(static_cast(!tag_match)), + }); + // We store the current clk this main trace row occurred so that we can line up the sha256 gadget operation at + // the same clk later. + auto sha_op_clk = clk; + // We need to increment the clk + clk++; + // State array input is fixed to 256 bits + std::vector h_init_vec; + // Input for hash is expanded to 512 bits + std::vector input_vec; + // Read results are written to h_init array. + read_slice_from_memory(resolved_state_offset, 8, h_init_vec); + // Read results are written to input array + read_slice_from_memory(resolved_inputs_offset, 16, input_vec); + + // Now that we have read all the values, we can perform the operation to get the resulting witness. + // Note: We use the sha_op_clk to ensure that the sha256 operation is performed at the same clock cycle as the + // main trace that has the selector + std::array h_init = vec_to_arr(h_init_vec); + std::array input = vec_to_arr(input_vec); + + std::array result = sha256_trace_builder.sha256_compression(h_init, input, sha_op_clk); + // We convert the results to field elements here + std::vector ff_result; + for (uint32_t i = 0; i < 8; i++) { + ff_result.emplace_back(result[i]); + } + + // Write the result to memory after + write_slice_to_memory(resolved_output_offset, AvmMemoryTag::U32, ff_result); +} + +/** + * @brief Keccakf1600 with direct or indirect memory access. + * This function temporarily has the same interface as the kecccak opcode for compatibility, when the keccak + * migration is complete (to keccakf1600) We will update this function call as we will not likely need + * input_size_offset + * @param indirect byte encoding information about indirect/direct memory access. + * @param output_offset An index in memory pointing to where the first u64 value of the output array should be + * stored. + * @param input_offset An index in memory pointing to the first u64 value of the input array to be used in the next + * instance of poseidon2 permutation. + * @param input_size offset An index in memory pointing to the size of the input array. Temporary while we maintain + * the same interface as keccak (this is fixed to 25) + */ +void AvmTraceBuilder::op_keccakf1600(uint8_t indirect, + uint32_t output_offset, + uint32_t input_offset, + [[maybe_unused]] uint32_t input_size_offset) +{ + // What happens if the input_size_offset is > 25 when the state is more that that? + auto clk = static_cast(main_trace.size()) + 1; + auto [resolved_output_offset, resolved_input_offset, _] = + Addressing<3>::fromWire(indirect, call_ptr) + .resolve({ output_offset, input_offset, input_size_offset }, mem_trace_builder); auto input_read = constrained_read_from_memory( - call_ptr, clk, resolved_input_offset, AvmMemoryTag::FF, AvmMemoryTag::FF, IntermRegister::IA); - // auto input_size_read = constrained_read_from_memory( - // call_ptr, clk, resolved_input_size_offset, AvmMemoryTag::U32, AvmMemoryTag::FF, IntermRegister::IB); - // auto gen_ctx_read = constrained_read_from_memory( - // call_ptr, clk, resolved_gen_ctx_offset, AvmMemoryTag::U32, AvmMemoryTag::FF, IntermRegister::IC); - auto input_size_read = unconstrained_read_from_memory(resolved_input_size_offset); - auto gen_ctx_read = unconstrained_read_from_memory(resolved_gen_ctx_offset); + call_ptr, clk, resolved_input_offset, AvmMemoryTag::U64, AvmMemoryTag::FF, IntermRegister::IA); + auto output_read = constrained_read_from_memory( + call_ptr, clk, resolved_output_offset, AvmMemoryTag::U64, AvmMemoryTag::FF, IntermRegister::IC); + bool tag_match = input_read.tag_match && output_read.tag_match; // Constrain gas cost - // TODO(dbanks12): need tag check u32 here on input size - gas_trace_builder.constrain_gas(clk, OpCode::PEDERSEN, static_cast(input_size_read)); + gas_trace_builder.constrain_gas(clk, OpCode::KECCAKF1600); - // We read the input and output addresses in one row as they should contain FF elements main_trace.push_back(Row{ .main_clk = clk, - .main_ia = input_read.val, // First element of input + .main_ia = input_read.val, // First element of input + .main_ic = output_read.val, // First element of output .main_ind_addr_a = FF(input_read.indirect_address), + .main_ind_addr_c = FF(output_read.indirect_address), .main_internal_return_ptr = FF(internal_return_ptr), .main_mem_addr_a = FF(input_read.direct_address), + .main_mem_addr_c = FF(output_read.direct_address), .main_pc = FF(pc++), - .main_r_in_tag = FF(static_cast(AvmMemoryTag::FF)), + .main_r_in_tag = FF(static_cast(AvmMemoryTag::U64)), .main_sel_mem_op_a = FF(1), - .main_sel_op_pedersen = FF(1), + .main_sel_mem_op_c = FF(1), + .main_sel_op_keccak = FF(1), .main_sel_resolve_ind_addr_a = FF(static_cast(input_read.is_indirect)), - .main_tag_err = FF(static_cast(!input_read.tag_match)), + .main_sel_resolve_ind_addr_c = FF(static_cast(output_read.is_indirect)), + .main_tag_err = FF(static_cast(!tag_match)), }); - std::vector inputs; - read_slice_from_memory(resolved_input_offset, static_cast(input_size_read), inputs); - FF output = pedersen_trace_builder.pedersen_hash(inputs, static_cast(gen_ctx_read), clk); - write_slice_to_memory(resolved_output_offset, AvmMemoryTag::FF, std::vector{ output }); + // Array input is fixed to 1600 bits + std::vector input_vec; + // Read results are written to input array + read_slice_from_memory(resolved_input_offset, 25, input_vec); + std::array input = vec_to_arr(input_vec); + + // Now that we have read all the values, we can perform the operation to get the resulting witness. + // Note: We use the keccak_op_clk to ensure that the keccakf1600 operation is performed at the same clock cycle + // as the main trace that has the selector + std::array result = keccak_trace_builder.keccakf1600(clk, input); + // Write the result to memory after + write_slice_to_memory(resolved_output_offset, AvmMemoryTag::U64, result); } void AvmTraceBuilder::op_ec_add(uint16_t indirect, @@ -3128,43 +3172,6 @@ void AvmTraceBuilder::op_variable_msm(uint8_t indirect, write_to_memory(resolved_output_offset + 2, result.is_point_at_infinity(), AvmMemoryTag::U8); } -void AvmTraceBuilder::op_pedersen_commit(uint8_t indirect, - uint32_t input_offset, - uint32_t output_offset, - uint32_t input_size_offset, - uint32_t gen_ctx_offset) -{ - auto clk = static_cast(main_trace.size()) + 1; - auto [resolved_input_offset, resolved_output_offset, resolved_input_size_offset, resolved_gen_ctx_offset] = - Addressing<4>::fromWire(indirect, call_ptr) - .resolve({ input_offset, output_offset, input_size_offset, gen_ctx_offset }, mem_trace_builder); - - auto input_length_read = unconstrained_read_from_memory(resolved_input_size_offset); - auto gen_ctx_read = unconstrained_read_from_memory(resolved_gen_ctx_offset); - - std::vector inputs; - read_slice_from_memory(resolved_input_offset, uint32_t(input_length_read), inputs); - - grumpkin::g1::affine_element result = crypto::pedersen_commitment::commit_native(inputs, uint32_t(gen_ctx_read)); - - main_trace.push_back(Row{ - .main_clk = clk, - .main_internal_return_ptr = FF(internal_return_ptr), - .main_pc = FF(pc++), - .main_sel_op_pedersen_commit = 1, - .main_tag_err = FF(0), - }); - - // TODO(dbanks12): length needs to fit into u32 here or it will certainly - // run out of gas. Casting/truncating here is not secure. - gas_trace_builder.constrain_gas(clk, OpCode::PEDERSENCOMMITMENT, static_cast(input_length_read)); - - // Write the result back to memory [x, y, inf] with tags [FF, FF, U8] - write_to_memory(resolved_output_offset, result.x, AvmMemoryTag::FF); - write_to_memory(resolved_output_offset + 1, result.y, AvmMemoryTag::FF); - write_to_memory(resolved_output_offset + 2, result.is_point_at_infinity(), AvmMemoryTag::U8); -} - /************************************************************************************************** * CONVERSIONS **************************************************************************************************/ @@ -3253,166 +3260,6 @@ void AvmTraceBuilder::op_to_radix_le(uint8_t indirect, write_slice_to_memory(resolved_dst_offset, w_in_tag, res); } -/************************************************************************************************** - * FUTURE GADGETS -- pending changes in noir - **************************************************************************************************/ - -/** - * @brief SHA256 Compression with direct or indirect memory access. - * - * @param indirect byte encoding information about indirect/direct memory access. - * @param state_offset An index in memory pointing to the first U32 value of the state array to be used in the next - * instance of sha256 compression. - * @param input_offset An index in memory pointing to the first U32 value of the input array to be used in the next - * instance of sha256 compression. - * @param output_offset An index in memory pointing to where the first U32 value of the output array should be - * stored. - */ -void AvmTraceBuilder::op_sha256_compression(uint8_t indirect, - uint32_t output_offset, - uint32_t state_offset, - uint32_t inputs_offset) -{ - // The clk plays a crucial role in this function as we attempt to write across multiple lines in the main trace. - auto clk = static_cast(main_trace.size()) + 1; - - // Resolve the indirect flags, the results of this function are used to determine the memory offsets - // that point to the starting memory addresses for the input and output values. - auto [resolved_output_offset, resolved_state_offset, resolved_inputs_offset] = - Addressing<3>::fromWire(indirect, call_ptr) - .resolve({ output_offset, state_offset, inputs_offset }, mem_trace_builder); - - auto read_a = constrained_read_from_memory( - call_ptr, clk, resolved_state_offset, AvmMemoryTag::U32, AvmMemoryTag::FF, IntermRegister::IA); - auto read_b = constrained_read_from_memory( - call_ptr, clk, resolved_inputs_offset, AvmMemoryTag::U32, AvmMemoryTag::FF, IntermRegister::IB); - bool tag_match = read_a.tag_match && read_b.tag_match; - - // Constrain gas cost - gas_trace_builder.constrain_gas(clk, OpCode::SHA256COMPRESSION); - - // Since the above adds mem_reads in the mem_trace_builder at clk, we need to follow up resolving the reads in - // the main trace at the same clk cycle to preserve the cross-table permutation - // - // TODO<#6383>: We put the first value of each of the input, output (which is 0 at this point) and h_init arrays - // into the main trace at the intermediate registers simply for the permutation check, in the future this will - // change. - // Note: we could avoid output being zero if we loaded the input and state beforehand (with a new function that - // did not lay down constraints), but this is a simplification - main_trace.push_back(Row{ - .main_clk = clk, - .main_ia = read_a.val, // First element of state - .main_ib = read_b.val, // First element of input - .main_ind_addr_a = FF(read_a.indirect_address), - .main_ind_addr_b = FF(read_b.indirect_address), - .main_internal_return_ptr = FF(internal_return_ptr), - .main_mem_addr_a = FF(read_a.direct_address), - .main_mem_addr_b = FF(read_b.direct_address), - .main_pc = FF(pc++), - .main_r_in_tag = FF(static_cast(AvmMemoryTag::U32)), - .main_sel_mem_op_a = FF(1), - .main_sel_mem_op_b = FF(1), - .main_sel_op_sha256 = FF(1), - .main_sel_resolve_ind_addr_a = FF(static_cast(read_a.is_indirect)), - .main_sel_resolve_ind_addr_b = FF(static_cast(read_b.is_indirect)), - .main_tag_err = FF(static_cast(!tag_match)), - }); - // We store the current clk this main trace row occurred so that we can line up the sha256 gadget operation at - // the same clk later. - auto sha_op_clk = clk; - // We need to increment the clk - clk++; - // State array input is fixed to 256 bits - std::vector h_init_vec; - // Input for hash is expanded to 512 bits - std::vector input_vec; - // Read results are written to h_init array. - read_slice_from_memory(resolved_state_offset, 8, h_init_vec); - // Read results are written to input array - read_slice_from_memory(resolved_inputs_offset, 16, input_vec); - - // Now that we have read all the values, we can perform the operation to get the resulting witness. - // Note: We use the sha_op_clk to ensure that the sha256 operation is performed at the same clock cycle as the - // main trace that has the selector - std::array h_init = vec_to_arr(h_init_vec); - std::array input = vec_to_arr(input_vec); - - std::array result = sha256_trace_builder.sha256_compression(h_init, input, sha_op_clk); - // We convert the results to field elements here - std::vector ff_result; - for (uint32_t i = 0; i < 8; i++) { - ff_result.emplace_back(result[i]); - } - - // Write the result to memory after - write_slice_to_memory(resolved_output_offset, AvmMemoryTag::U32, ff_result); -} - -/** - * @brief Keccakf1600 with direct or indirect memory access. - * This function temporarily has the same interface as the kecccak opcode for compatibility, when the keccak - * migration is complete (to keccakf1600) We will update this function call as we will not likely need - * input_size_offset - * @param indirect byte encoding information about indirect/direct memory access. - * @param output_offset An index in memory pointing to where the first u64 value of the output array should be - * stored. - * @param input_offset An index in memory pointing to the first u64 value of the input array to be used in the next - * instance of poseidon2 permutation. - * @param input_size offset An index in memory pointing to the size of the input array. Temporary while we maintain - * the same interface as keccak (this is fixed to 25) - */ -void AvmTraceBuilder::op_keccakf1600(uint8_t indirect, - uint32_t output_offset, - uint32_t input_offset, - [[maybe_unused]] uint32_t input_size_offset) -{ - // What happens if the input_size_offset is > 25 when the state is more that that? - auto clk = static_cast(main_trace.size()) + 1; - auto [resolved_output_offset, resolved_input_offset, _] = - Addressing<3>::fromWire(indirect, call_ptr) - .resolve({ output_offset, input_offset, input_size_offset }, mem_trace_builder); - auto input_read = constrained_read_from_memory( - call_ptr, clk, resolved_input_offset, AvmMemoryTag::U64, AvmMemoryTag::FF, IntermRegister::IA); - auto output_read = constrained_read_from_memory( - call_ptr, clk, resolved_output_offset, AvmMemoryTag::U64, AvmMemoryTag::FF, IntermRegister::IC); - bool tag_match = input_read.tag_match && output_read.tag_match; - - // Constrain gas cost - gas_trace_builder.constrain_gas(clk, OpCode::KECCAKF1600); - - main_trace.push_back(Row{ - .main_clk = clk, - .main_ia = input_read.val, // First element of input - .main_ic = output_read.val, // First element of output - .main_ind_addr_a = FF(input_read.indirect_address), - .main_ind_addr_c = FF(output_read.indirect_address), - .main_internal_return_ptr = FF(internal_return_ptr), - .main_mem_addr_a = FF(input_read.direct_address), - .main_mem_addr_c = FF(output_read.direct_address), - .main_pc = FF(pc++), - .main_r_in_tag = FF(static_cast(AvmMemoryTag::U64)), - .main_sel_mem_op_a = FF(1), - .main_sel_mem_op_c = FF(1), - .main_sel_op_keccak = FF(1), - .main_sel_resolve_ind_addr_a = FF(static_cast(input_read.is_indirect)), - .main_sel_resolve_ind_addr_c = FF(static_cast(output_read.is_indirect)), - .main_tag_err = FF(static_cast(!tag_match)), - }); - - // Array input is fixed to 1600 bits - std::vector input_vec; - // Read results are written to input array - read_slice_from_memory(resolved_input_offset, 25, input_vec); - std::array input = vec_to_arr(input_vec); - - // Now that we have read all the values, we can perform the operation to get the resulting witness. - // Note: We use the keccak_op_clk to ensure that the keccakf1600 operation is performed at the same clock cycle - // as the main trace that has the selector - std::array result = keccak_trace_builder.keccakf1600(clk, input); - // Write the result to memory after - write_slice_to_memory(resolved_output_offset, AvmMemoryTag::U64, result); -} - /************************************************************************************************** * FINALIZE **************************************************************************************************/ @@ -3435,7 +3282,6 @@ std::vector AvmTraceBuilder::finalize() auto sha256_trace = sha256_trace_builder.finalize(); auto poseidon2_trace = poseidon2_trace_builder.finalize(); auto keccak_trace = keccak_trace_builder.finalize(); - auto pedersen_trace = pedersen_trace_builder.finalize(); auto slice_trace = slice_trace_builder.finalize(); const auto& fixed_gas_table = FixedGasTable::get(); size_t mem_trace_size = mem_trace.size(); @@ -3445,7 +3291,6 @@ std::vector AvmTraceBuilder::finalize() size_t sha256_trace_size = sha256_trace.size(); size_t poseidon2_trace_size = poseidon2_trace.size(); size_t keccak_trace_size = keccak_trace.size(); - size_t pedersen_trace_size = pedersen_trace.size(); size_t bin_trace_size = bin_trace_builder.size(); size_t gas_trace_size = gas_trace_builder.size(); size_t slice_trace_size = slice_trace.size(); @@ -3454,11 +3299,11 @@ std::vector AvmTraceBuilder::finalize() // Range check size is 1 less than it needs to be since we insert a "first row" at the top of the trace at the // end, with clk 0 (this doubles as our range check) size_t const range_check_size = range_check_required ? UINT16_MAX : 0; - std::vector trace_sizes = { mem_trace_size, main_trace_size + 1, alu_trace_size, - range_check_size, conv_trace_size, sha256_trace_size, - poseidon2_trace_size, pedersen_trace_size, gas_trace_size + 1, - KERNEL_INPUTS_LENGTH, KERNEL_OUTPUTS_LENGTH, kernel_trace_size, - fixed_gas_table.size(), slice_trace_size, calldata.size() }; + std::vector trace_sizes = { mem_trace_size, main_trace_size + 1, alu_trace_size, + range_check_size, conv_trace_size, sha256_trace_size, + poseidon2_trace_size, gas_trace_size + 1, KERNEL_INPUTS_LENGTH, + KERNEL_OUTPUTS_LENGTH, kernel_trace_size, fixed_gas_table.size(), + slice_trace_size, calldata.size() }; auto trace_size = std::max_element(trace_sizes.begin(), trace_sizes.end()); // Before making any changes to the main trace, mark the real rows. @@ -3655,15 +3500,6 @@ std::vector AvmTraceBuilder::finalize() dest.keccakf1600_sel_keccakf1600 = FF(1); } - // Add Pedersen Gadget table - for (size_t i = 0; i < pedersen_trace_size; i++) { - auto const& src = pedersen_trace.at(i); - auto& dest = main_trace.at(i); - dest.pedersen_clk = FF(src.clk); - dest.pedersen_input = FF(src.input[0]); - dest.pedersen_sel_pedersen = FF(1); - } - /********************************************************************************************** * SLICE TRACE INCLUSION **********************************************************************************************/ @@ -3856,8 +3692,6 @@ std::vector AvmTraceBuilder::finalize() sha256_trace_size, "\n\tposeidon2_trace_size: ", poseidon2_trace_size, - "\n\tpedersen_trace_size: ", - pedersen_trace_size, "\n\tgas_trace_size: ", gas_trace_size, "\n\tfixed_gas_table_size: ", @@ -3900,7 +3734,6 @@ void AvmTraceBuilder::reset() sha256_trace_builder.reset(); poseidon2_trace_builder.reset(); keccak_trace_builder.reset(); - pedersen_trace_builder.reset(); slice_trace_builder.reset(); external_call_counter = 0; diff --git a/barretenberg/cpp/src/barretenberg/vm/avm/trace/trace.hpp b/barretenberg/cpp/src/barretenberg/vm/avm/trace/trace.hpp index dc8e743c3d1..3a3b275228d 100644 --- a/barretenberg/cpp/src/barretenberg/vm/avm/trace/trace.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/avm/trace/trace.hpp @@ -8,7 +8,6 @@ #include "barretenberg/vm/avm/trace/gadgets/conversion_trace.hpp" #include "barretenberg/vm/avm/trace/gadgets/ecc.hpp" #include "barretenberg/vm/avm/trace/gadgets/keccak.hpp" -#include "barretenberg/vm/avm/trace/gadgets/pedersen.hpp" #include "barretenberg/vm/avm/trace/gadgets/poseidon2.hpp" #include "barretenberg/vm/avm/trace/gadgets/range_check.hpp" #include "barretenberg/vm/avm/trace/gadgets/sha256.hpp" @@ -146,11 +145,6 @@ class AvmTraceBuilder { // Gadgets void op_keccak(uint8_t indirect, uint32_t output_offset, uint32_t input_offset, uint32_t input_size_offset); void op_poseidon2_permutation(uint8_t indirect, uint32_t input_offset, uint32_t output_offset); - void op_pedersen_hash(uint8_t indirect, - uint32_t gen_ctx_offset, - uint32_t output_offset, - uint32_t input_offset, - uint32_t input_size_offset); void op_ec_add(uint16_t indirect, uint32_t lhs_x_offset, uint32_t lhs_y_offset, @@ -164,11 +158,6 @@ class AvmTraceBuilder { uint32_t scalars_offset, uint32_t output_offset, uint32_t point_length_offset); - void op_pedersen_commit(uint8_t indirect, - uint32_t output_offset, - uint32_t input_offset, - uint32_t input_size_offset, - uint32_t gen_ctx_offset); // Conversions void op_to_radix_le(uint8_t indirect, uint32_t src_offset, @@ -228,7 +217,6 @@ class AvmTraceBuilder { AvmSha256TraceBuilder sha256_trace_builder; AvmPoseidon2TraceBuilder poseidon2_trace_builder; AvmKeccakTraceBuilder keccak_trace_builder; - AvmPedersenTraceBuilder pedersen_trace_builder; AvmEccTraceBuilder ecc_trace_builder; AvmSliceTraceBuilder slice_trace_builder; AvmRangeCheckBuilder range_check_builder; diff --git a/barretenberg/cpp/src/barretenberg/vm/aztec_constants.hpp b/barretenberg/cpp/src/barretenberg/vm/aztec_constants.hpp index 7f6558dd56c..b798c3c87d5 100644 --- a/barretenberg/cpp/src/barretenberg/vm/aztec_constants.hpp +++ b/barretenberg/cpp/src/barretenberg/vm/aztec_constants.hpp @@ -35,7 +35,7 @@ #define PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH 691 #define PUBLIC_CONTEXT_INPUTS_LENGTH 42 #define AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS 86 -#define AVM_PROOF_LENGTH_IN_FIELDS 3853 +#define AVM_PROOF_LENGTH_IN_FIELDS 3848 #define AVM_PUBLIC_COLUMN_MAX_SIZE 1024 #define AVM_PUBLIC_INPUTS_FLATTENED_SIZE 2739 #define MEM_TAG_FF 0 @@ -110,16 +110,12 @@ #define AVM_RETURN_BASE_L2_GAS 28 #define AVM_REVERT_BASE_L2_GAS 28 #define AVM_DEBUGLOG_BASE_L2_GAS 12 -#define AVM_KECCAK_BASE_L2_GAS 3000 #define AVM_POSEIDON2_BASE_L2_GAS 78 -#define AVM_SHA256_BASE_L2_GAS 2610 -#define AVM_PEDERSEN_BASE_L2_GAS 1000 +#define AVM_SHA256COMPRESSION_BASE_L2_GAS 261 +#define AVM_KECCAKF1600_BASE_L2_GAS 300 #define AVM_ECADD_BASE_L2_GAS 62 #define AVM_MSM_BASE_L2_GAS 1000 -#define AVM_PEDERSENCOMMITMENT_BASE_L2_GAS 1000 #define AVM_TORADIXLE_BASE_L2_GAS 46 -#define AVM_SHA256COMPRESSION_BASE_L2_GAS 261 -#define AVM_KECCAKF1600_BASE_L2_GAS 300 #define AVM_CALLDATACOPY_DYN_L2_GAS 6 #define AVM_EMITUNENCRYPTEDLOG_DYN_L2_GAS 146 #define AVM_CALL_DYN_L2_GAS 4 @@ -127,10 +123,6 @@ #define AVM_DELEGATECALL_DYN_L2_GAS 4 #define AVM_RETURN_DYN_L2_GAS 6 #define AVM_REVERT_DYN_L2_GAS 6 -#define AVM_KECCAK_DYN_L2_GAS 100 -#define AVM_SHA256_DYN_L2_GAS 100 -#define AVM_PEDERSEN_DYN_L2_GAS 100 -#define AVM_PEDERSENCOMMITMENT_DYN_L2_GAS 100 #define AVM_MSM_DYN_L2_GAS 100 #define AVM_TORADIXLE_DYN_L2_GAS 20 #define AVM_SSTORE_BASE_DA_GAS 512 diff --git a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr index 23ea02a4064..920102d2782 100644 --- a/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr +++ b/noir-projects/noir-protocol-circuits/crates/types/src/constants.nr @@ -333,7 +333,7 @@ global AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS: u32 = 2 + 21 * 4; // `AVM_PROOF_LENGTH_IN_FIELDS` must be updated when AVM circuit changes. // To determine latest value, hover `COMPUTED_AVM_PROOF_LENGTH_IN_FIELDS` // in barretenberg/cpp/src/barretenberg/vm/avm/generated/flavor.hpp -global AVM_PROOF_LENGTH_IN_FIELDS: u32 = 3853; +global AVM_PROOF_LENGTH_IN_FIELDS: u32 = 3823; global AVM_PUBLIC_COLUMN_MAX_SIZE : u32 = 1024; global AVM_PUBLIC_INPUTS_FLATTENED_SIZE : u32 = 2 * AVM_PUBLIC_COLUMN_MAX_SIZE + PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH; /** @@ -497,16 +497,13 @@ global AVM_DELEGATECALL_BASE_L2_GAS: u32 = 45 + (2 * L2_GAS_PER_NULLIFIER_READ_R global AVM_RETURN_BASE_L2_GAS: u32 = 28; global AVM_REVERT_BASE_L2_GAS: u32 = 28; global AVM_DEBUGLOG_BASE_L2_GAS: u32 = 12; // Must be equal to AVM_JUMP_BASE_L2_GAS as long as circuit implements debugLog as a jump -global AVM_KECCAK_BASE_L2_GAS: u32 = 3000; global AVM_POSEIDON2_BASE_L2_GAS: u32 = 78; -global AVM_SHA256_BASE_L2_GAS: u32 = 2610; -global AVM_PEDERSEN_BASE_L2_GAS: u32 = 1000; +global AVM_SHA256COMPRESSION_BASE_L2_GAS: u32 = 261; +global AVM_KECCAKF1600_BASE_L2_GAS: u32 = 300; global AVM_ECADD_BASE_L2_GAS: u32 = 62; global AVM_MSM_BASE_L2_GAS: u32 = 1000; -global AVM_PEDERSENCOMMITMENT_BASE_L2_GAS: u32 = 1000; global AVM_TORADIXLE_BASE_L2_GAS: u32 = 46; -global AVM_SHA256COMPRESSION_BASE_L2_GAS: u32 = 261; -global AVM_KECCAKF1600_BASE_L2_GAS: u32 = 300; + // Dynamic L2 GAS global AVM_CALLDATACOPY_DYN_L2_GAS: u32 = 6; // a single increment here corresponds to an entire additional field (hence x32 bytes per field) @@ -516,10 +513,6 @@ global AVM_STATICCALL_DYN_L2_GAS: u32 = 4; global AVM_DELEGATECALL_DYN_L2_GAS: u32 = 4; global AVM_RETURN_DYN_L2_GAS: u32 = 6; global AVM_REVERT_DYN_L2_GAS: u32 = 6; -global AVM_KECCAK_DYN_L2_GAS: u32 = 100; -global AVM_SHA256_DYN_L2_GAS: u32 = 100; -global AVM_PEDERSEN_DYN_L2_GAS: u32 = 100; -global AVM_PEDERSENCOMMITMENT_DYN_L2_GAS: u32 = 100; global AVM_MSM_DYN_L2_GAS: u32 = 100; global AVM_TORADIXLE_DYN_L2_GAS: u32 = 20; @@ -528,6 +521,7 @@ global AVM_SSTORE_BASE_DA_GAS: u32 = DA_BYTES_PER_FIELD * DA_GAS_PER_BYTE; global AVM_EMITNOTEHASH_BASE_DA_GAS: u32 = DA_BYTES_PER_FIELD * DA_GAS_PER_BYTE; global AVM_EMITNULLIFIER_BASE_DA_GAS: u32 = DA_BYTES_PER_FIELD * DA_GAS_PER_BYTE; global AVM_SENDL2TOL1MSG_BASE_DA_GAS: u32 = DA_BYTES_PER_FIELD * DA_GAS_PER_BYTE; + // Dynamic DA Gas // a single increment here corresponds to an entire additional field (hence x32 bytes per field) global AVM_EMITUNENCRYPTEDLOG_DYN_DA_GAS: u32 = DA_BYTES_PER_FIELD * DA_GAS_PER_BYTE; diff --git a/yarn-project/circuits.js/src/constants.gen.ts b/yarn-project/circuits.js/src/constants.gen.ts index 9fba4943031..13921c872af 100644 --- a/yarn-project/circuits.js/src/constants.gen.ts +++ b/yarn-project/circuits.js/src/constants.gen.ts @@ -217,7 +217,7 @@ export const TUBE_PROOF_LENGTH = 463; export const HONK_VERIFICATION_KEY_LENGTH_IN_FIELDS = 128; export const CLIENT_IVC_VERIFICATION_KEY_LENGTH_IN_FIELDS = 145; export const AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS = 86; -export const AVM_PROOF_LENGTH_IN_FIELDS = 3853; +export const AVM_PROOF_LENGTH_IN_FIELDS = 3848; export const AVM_PUBLIC_COLUMN_MAX_SIZE = 1024; export const AVM_PUBLIC_INPUTS_FLATTENED_SIZE = 2739; export const MEM_TAG_FF = 0; @@ -292,16 +292,12 @@ export const AVM_DELEGATECALL_BASE_L2_GAS = 2445; export const AVM_RETURN_BASE_L2_GAS = 28; export const AVM_REVERT_BASE_L2_GAS = 28; export const AVM_DEBUGLOG_BASE_L2_GAS = 12; -export const AVM_KECCAK_BASE_L2_GAS = 3000; export const AVM_POSEIDON2_BASE_L2_GAS = 78; -export const AVM_SHA256_BASE_L2_GAS = 2610; -export const AVM_PEDERSEN_BASE_L2_GAS = 1000; +export const AVM_SHA256COMPRESSION_BASE_L2_GAS = 261; +export const AVM_KECCAKF1600_BASE_L2_GAS = 300; export const AVM_ECADD_BASE_L2_GAS = 62; export const AVM_MSM_BASE_L2_GAS = 1000; -export const AVM_PEDERSENCOMMITMENT_BASE_L2_GAS = 1000; export const AVM_TORADIXLE_BASE_L2_GAS = 46; -export const AVM_SHA256COMPRESSION_BASE_L2_GAS = 261; -export const AVM_KECCAKF1600_BASE_L2_GAS = 300; export const AVM_CALLDATACOPY_DYN_L2_GAS = 6; export const AVM_EMITUNENCRYPTEDLOG_DYN_L2_GAS = 146; export const AVM_CALL_DYN_L2_GAS = 4; @@ -309,10 +305,6 @@ export const AVM_STATICCALL_DYN_L2_GAS = 4; export const AVM_DELEGATECALL_DYN_L2_GAS = 4; export const AVM_RETURN_DYN_L2_GAS = 6; export const AVM_REVERT_DYN_L2_GAS = 6; -export const AVM_KECCAK_DYN_L2_GAS = 100; -export const AVM_SHA256_DYN_L2_GAS = 100; -export const AVM_PEDERSEN_DYN_L2_GAS = 100; -export const AVM_PEDERSENCOMMITMENT_DYN_L2_GAS = 100; export const AVM_MSM_DYN_L2_GAS = 100; export const AVM_TORADIXLE_DYN_L2_GAS = 20; export const AVM_SSTORE_BASE_DA_GAS = 512; diff --git a/yarn-project/simulator/src/avm/avm_gas.ts b/yarn-project/simulator/src/avm/avm_gas.ts index fead5ed3320..c02affafd88 100644 --- a/yarn-project/simulator/src/avm/avm_gas.ts +++ b/yarn-project/simulator/src/avm/avm_gas.ts @@ -118,14 +118,11 @@ const BASE_GAS_COSTS: Record = { [Opcode.REVERT_8]: makeCost(c.AVM_REVERT_BASE_L2_GAS, 0), [Opcode.REVERT_16]: makeCost(c.AVM_REVERT_BASE_L2_GAS, 0), [Opcode.DEBUGLOG]: makeCost(c.AVM_DEBUGLOG_BASE_L2_GAS, 0), - [Opcode.KECCAK]: makeCost(c.AVM_KECCAK_BASE_L2_GAS, 0), [Opcode.POSEIDON2]: makeCost(c.AVM_POSEIDON2_BASE_L2_GAS, 0), [Opcode.SHA256COMPRESSION]: makeCost(c.AVM_SHA256COMPRESSION_BASE_L2_GAS, 0), [Opcode.KECCAKF1600]: makeCost(c.AVM_KECCAKF1600_BASE_L2_GAS, 0), - [Opcode.PEDERSEN]: makeCost(c.AVM_PEDERSEN_BASE_L2_GAS, 0), [Opcode.ECADD]: makeCost(c.AVM_ECADD_BASE_L2_GAS, 0), [Opcode.MSM]: makeCost(c.AVM_MSM_BASE_L2_GAS, 0), - [Opcode.PEDERSENCOMMITMENT]: makeCost(c.AVM_PEDERSENCOMMITMENT_BASE_L2_GAS, 0), [Opcode.TORADIXLE]: makeCost(c.AVM_TORADIXLE_BASE_L2_GAS, 0), }; @@ -138,9 +135,7 @@ const DYNAMIC_GAS_COSTS = new Map([ [Opcode.RETURN, makeCost(c.AVM_RETURN_DYN_L2_GAS, 0)], [Opcode.REVERT_8, makeCost(c.AVM_REVERT_DYN_L2_GAS, 0)], [Opcode.REVERT_16, makeCost(c.AVM_REVERT_DYN_L2_GAS, 0)], - [Opcode.PEDERSEN, makeCost(c.AVM_PEDERSEN_DYN_L2_GAS, 0)], [Opcode.MSM, makeCost(c.AVM_MSM_DYN_L2_GAS, 0)], - [Opcode.PEDERSENCOMMITMENT, makeCost(c.AVM_PEDERSENCOMMITMENT_DYN_L2_GAS, 0)], [Opcode.TORADIXLE, makeCost(c.AVM_TORADIXLE_DYN_L2_GAS, 0)], ]); diff --git a/yarn-project/simulator/src/avm/opcodes/commitment.test.ts b/yarn-project/simulator/src/avm/opcodes/commitment.test.ts deleted file mode 100644 index 810d48a32dc..00000000000 --- a/yarn-project/simulator/src/avm/opcodes/commitment.test.ts +++ /dev/null @@ -1,120 +0,0 @@ -import { pedersenCommit } from '@aztec/foundation/crypto'; - -import { type AvmContext } from '../avm_context.js'; -import { Field, Uint32 } from '../avm_memory_types.js'; -import { initContext, randomMemoryFields } from '../fixtures/index.js'; -import { Addressing, AddressingMode } from './addressing_mode.js'; -import { PedersenCommitment } from './commitment.js'; - -describe('Commitment Opcode', () => { - let context: AvmContext; - - beforeEach(async () => { - context = initContext(); - }); - - describe('Pedersen Commitment', () => { - it('Should (de)serialize correctly', () => { - const buf = Buffer.from([ - PedersenCommitment.opcode, // opcode - 1, // indirect - ...Buffer.from('23456789', 'hex'), // inputOffset - ...Buffer.from('3456789a', 'hex'), // inputSizeOffset - ...Buffer.from('12345678', 'hex'), // outputOffset - ...Buffer.from('00000000', 'hex'), // genIndexOffset - ]); - const inst = new PedersenCommitment( - /*indirect=*/ 1, - /*inputOffset=*/ 0x23456789, - /*inputSizeOffset=*/ 0x3456789a, - /*outputOffset=*/ 0x12345678, - /*genIndexOffset=*/ 0, - ); - - expect(PedersenCommitment.deserialize(buf)).toEqual(inst); - expect(inst.serialize()).toEqual(buf); - }); - - it('Should commit correctly - direct', async () => { - const args = randomMemoryFields(10); - const inputOffset = 0; - const inputSizeOffset = 20; - const outputOffset = 50; - const indirect = 0; - const generatorIndexOffset = 10; - - context.machineState.memory.setSlice(inputOffset, args); - context.machineState.memory.set(inputSizeOffset, new Uint32(args.length)); - context.machineState.memory.set(generatorIndexOffset, new Uint32(0)); - - const expectedCommitment = pedersenCommit(args.map(f => f.toBuffer())).map(f => new Field(f)); - await new PedersenCommitment(indirect, inputOffset, outputOffset, inputSizeOffset, generatorIndexOffset).execute( - context, - ); - - const result = context.machineState.memory.getSlice(outputOffset, 2); - expect(result).toEqual(expectedCommitment); - // Check Inf - expect(0).toEqual(context.machineState.memory.get(outputOffset + 2).toNumber()); - }); - - it('Should commit correctly with a different gen - direct', async () => { - const args = randomMemoryFields(10); - const inputOffset = 0; - const inputSizeOffset = 20; - const outputOffset = 50; - const indirect = 0; - const generatorIndex = 40; - const generatorIndexOffset = 100; - - context.machineState.memory.setSlice(inputOffset, args); - context.machineState.memory.set(inputSizeOffset, new Uint32(args.length)); - context.machineState.memory.set(generatorIndexOffset, new Uint32(generatorIndex)); - - const expectedCommitment = pedersenCommit( - args.map(f => f.toBuffer()), - generatorIndex, - ).map(f => new Field(f)); - await new PedersenCommitment(indirect, inputOffset, outputOffset, inputSizeOffset, generatorIndexOffset).execute( - context, - ); - - const result = context.machineState.memory.getSlice(outputOffset, 2); - expect(result).toEqual(expectedCommitment); - // Check Inf - expect(0).toEqual(context.machineState.memory.get(outputOffset + 2).toNumber()); - }); - - it('Should commit correctly - indirect', async () => { - const args = randomMemoryFields(10); - const indirect = new Addressing([ - /*inputOffset=*/ AddressingMode.INDIRECT, - /*outputOffset*/ AddressingMode.INDIRECT, - /*inputSizeOffset=*/ AddressingMode.DIRECT, - /*generatorIndexOffset=*/ AddressingMode.DIRECT, - ]).toWire(); - const inputOffset = 0; - const inputSizeOffset = 20; - const outputOffset = 50; - const realOutputOffset = 100; - const realInputOffset = 200; - const generatorIndexOffset = 51; - - context.machineState.memory.set(outputOffset, new Uint32(realOutputOffset)); - context.machineState.memory.set(inputOffset, new Uint32(realInputOffset)); - context.machineState.memory.setSlice(realInputOffset, args); - context.machineState.memory.set(inputSizeOffset, new Uint32(args.length)); - context.machineState.memory.set(generatorIndexOffset, new Uint32(0)); - - const expectedCommitment = pedersenCommit(args.map(f => f.toBuffer())).map(f => new Field(f)); - await new PedersenCommitment(indirect, inputOffset, outputOffset, inputSizeOffset, generatorIndexOffset).execute( - context, - ); - - const result = context.machineState.memory.getSlice(realOutputOffset, 2); - expect(result).toEqual(expectedCommitment); - // Check Inf - expect(0).toEqual(context.machineState.memory.get(realOutputOffset + 2).toNumber()); - }); - }); -}); diff --git a/yarn-project/simulator/src/avm/opcodes/commitment.ts b/yarn-project/simulator/src/avm/opcodes/commitment.ts deleted file mode 100644 index a98a21abec2..00000000000 --- a/yarn-project/simulator/src/avm/opcodes/commitment.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { pedersenCommit } from '@aztec/foundation/crypto'; - -import { type AvmContext } from '../avm_context.js'; -import { Field, TypeTag, Uint8 } from '../avm_memory_types.js'; -import { Opcode, OperandType } from '../serialization/instruction_serialization.js'; -import { Addressing } from './addressing_mode.js'; -import { Instruction } from './instruction.js'; - -export class PedersenCommitment extends Instruction { - static type: string = 'PEDERSENCOMMITMENT'; - static readonly opcode: Opcode = Opcode.PEDERSENCOMMITMENT; - - // Informs (de)serialization. See Instruction.deserialize. - static readonly wireFormat: OperandType[] = [ - OperandType.UINT8 /* Opcode */, - OperandType.UINT8 /* Indirect */, - OperandType.UINT32 /* Input Offset*/, - OperandType.UINT32 /* Dst Offset */, - OperandType.UINT32 /* Input Size Offset */, - OperandType.UINT32 /* Generator Index Offset */, - ]; - - constructor( - private indirect: number, - private inputOffset: number, - private outputOffset: number, - private inputSizeOffset: number, - private genIndexOffset: number, - ) { - super(); - } - - public async execute(context: AvmContext): Promise { - const memory = context.machineState.memory.track(this.type); - - const operands = [this.inputOffset, this.outputOffset, this.inputSizeOffset, this.genIndexOffset]; - const addressing = Addressing.fromWire(this.indirect, operands.length); - const [inputOffset, outputOffset, inputSizeOffset, genIndexOffset] = addressing.resolve(operands, memory); - - const inputSize = memory.get(inputSizeOffset).toNumber(); - memory.checkTag(TypeTag.UINT32, inputSizeOffset); - - const inputs = memory.getSlice(inputOffset, inputSize); - memory.checkTagsRange(TypeTag.FIELD, inputOffset, inputSize); - - const generatorIndex = memory.get(genIndexOffset).toNumber(); - memory.checkTag(TypeTag.UINT32, genIndexOffset); - - context.machineState.consumeGas(this.gasCost(inputSize)); - - const inputBuffer: Buffer[] = inputs.map(input => input.toBuffer()); - // TODO: Add the generate index to the pedersenCommit function - const commitment = pedersenCommit(inputBuffer, generatorIndex).map(f => new Field(f)); - // The function doesnt include a flag if the output point is infinity, come back to this - // for now we just check if theyre zero - until we know how bb encodes them - const isInfinity = commitment[0].equals(new Field(0)) && commitment[1].equals(new Field(0)); - - memory.set(outputOffset, commitment[0]); // Field typed - memory.set(outputOffset + 1, commitment[1]); // Field typed - memory.set(outputOffset + 2, new Uint8(isInfinity ? 1 : 0)); // U8 typed - - memory.assert({ reads: inputSize + 2, writes: 3, addressing }); - context.machineState.incrementPc(); - } -} diff --git a/yarn-project/simulator/src/avm/opcodes/hashing.test.ts b/yarn-project/simulator/src/avm/opcodes/hashing.test.ts index ddca0874f6f..26020a6e0c7 100644 --- a/yarn-project/simulator/src/avm/opcodes/hashing.test.ts +++ b/yarn-project/simulator/src/avm/opcodes/hashing.test.ts @@ -1,10 +1,10 @@ -import { keccak256, keccakf1600, pedersenHash, sha256Compression } from '@aztec/foundation/crypto'; +import { keccakf1600, sha256Compression } from '@aztec/foundation/crypto'; import { type AvmContext } from '../avm_context.js'; -import { Field, type Uint8, Uint32, Uint64 } from '../avm_memory_types.js'; -import { initContext, randomMemoryBytes, randomMemoryFields, randomMemoryUint32s } from '../fixtures/index.js'; +import { Field, Uint32, Uint64 } from '../avm_memory_types.js'; +import { initContext, randomMemoryUint32s } from '../fixtures/index.js'; import { Addressing, AddressingMode } from './addressing_mode.js'; -import { Keccak, KeccakF1600, Pedersen, Poseidon2, Sha256Compression } from './hashing.js'; +import { KeccakF1600, Poseidon2, Sha256Compression } from './hashing.js'; describe('Hashing Opcodes', () => { let context: AvmContext; @@ -67,75 +67,6 @@ describe('Hashing Opcodes', () => { }); }); - describe('Keccak', () => { - it('Should (de)serialize correctly', () => { - const buf = Buffer.from([ - Keccak.opcode, // opcode - 1, // indirect - ...Buffer.from('12345678', 'hex'), // dstOffset - ...Buffer.from('23456789', 'hex'), // messageOffset - ...Buffer.from('3456789a', 'hex'), // messageSizeOffset - ]); - const inst = new Keccak( - /*indirect=*/ 1, - /*dstOffset=*/ 0x12345678, - /*messageOffset=*/ 0x23456789, - /*messageSizeOffset=*/ 0x3456789a, - ); - - expect(Keccak.deserialize(buf)).toEqual(inst); - expect(inst.serialize()).toEqual(buf); - }); - - it('Should hash correctly - direct', async () => { - const args = randomMemoryBytes(10); - const indirect = 0; - const messageOffset = 0; - const messageSizeOffset = 15; - const dstOffset = 20; - context.machineState.memory.set(messageSizeOffset, new Uint32(args.length)); - context.machineState.memory.setSlice(messageOffset, args); - - await new Keccak(indirect, dstOffset, messageOffset, messageSizeOffset).execute(context); - - const resultBuffer = Buffer.concat( - context.machineState.memory.getSliceAs(dstOffset, 32).map(byte => byte.toBuffer()), - ); - const inputBuffer = Buffer.concat(args.map(byte => byte.toBuffer())); - const expectedHash = keccak256(inputBuffer); - expect(resultBuffer).toEqual(expectedHash); - }); - - it('Should hash correctly - indirect', async () => { - const args = randomMemoryBytes(10); - const indirect = new Addressing([ - /*dstOffset=*/ AddressingMode.INDIRECT, - /*messageOffset*/ AddressingMode.INDIRECT, - /*messageSizeOffset*/ AddressingMode.INDIRECT, - ]).toWire(); - const messageOffset = 0; - const messageOffsetReal = 10; - const messageSizeOffset = 1; - const messageSizeOffsetReal = 100; - const dstOffset = 2; - const dstOffsetReal = 30; - context.machineState.memory.set(messageOffset, new Uint32(messageOffsetReal)); - context.machineState.memory.set(dstOffset, new Uint32(dstOffsetReal)); - context.machineState.memory.set(messageSizeOffset, new Uint32(messageSizeOffsetReal)); - context.machineState.memory.set(messageSizeOffsetReal, new Uint32(args.length)); - context.machineState.memory.setSlice(messageOffsetReal, args); - - await new Keccak(indirect, dstOffset, messageOffset, messageSizeOffset).execute(context); - - const resultBuffer = Buffer.concat( - context.machineState.memory.getSliceAs(dstOffsetReal, 32).map(byte => byte.toBuffer()), - ); - const inputBuffer = Buffer.concat(args.map(byte => byte.toBuffer())); - const expectedHash = keccak256(inputBuffer); - expect(resultBuffer).toEqual(expectedHash); - }); - }); - describe('Keccakf1600', () => { it('Should (de)serialize correctly', () => { const buf = Buffer.from([ @@ -257,77 +188,4 @@ describe('Hashing Opcodes', () => { expect(outputArray).toEqual(expectedOutput); }); }); - - describe('Pedersen', () => { - it('Should (de)serialize correctly', () => { - const buf = Buffer.from([ - Pedersen.opcode, // opcode - 1, // indirect - ...Buffer.from('02345678', 'hex'), // genIndexOffset - ...Buffer.from('12345678', 'hex'), // dstOffset - ...Buffer.from('23456789', 'hex'), // messageOffset - ...Buffer.from('3456789a', 'hex'), // hashSize - ]); - const inst = new Pedersen( - /*indirect=*/ 1, - /*genIndexOffset=*/ 0x02345678, - /*dstOffset=*/ 0x12345678, - /*messageOffset=*/ 0x23456789, - /*hashSizeOffset=*/ 0x3456789a, - ); - - expect(Pedersen.deserialize(buf)).toEqual(inst); - expect(inst.serialize()).toEqual(buf); - }); - - it('Should hash correctly - direct', async () => { - const args = randomMemoryFields(10); - const messageOffset = 0; - const sizeOffset = 20; - const genIndexOffset = 30; - const indirect = 0; - const genIndex = 20; - - context.machineState.memory.setSlice(messageOffset, args); - context.machineState.memory.set(sizeOffset, new Uint32(args.length)); - context.machineState.memory.set(genIndexOffset, new Uint32(genIndex)); - - const dstOffset = 3; - - const expectedHash = pedersenHash(args, genIndex); - await new Pedersen(indirect, genIndexOffset, dstOffset, messageOffset, sizeOffset).execute(context); - - const result = context.machineState.memory.get(dstOffset); - expect(result).toEqual(new Field(expectedHash)); - }); - - it('Should hash correctly - indirect', async () => { - const args = randomMemoryFields(10); - const indirect = new Addressing([ - /*genIndexOffset=*/ AddressingMode.DIRECT, - /*dstOffset=*/ AddressingMode.DIRECT, - /*messageOffset*/ AddressingMode.INDIRECT, - /*messageSizeOffset*/ AddressingMode.INDIRECT, - ]).toWire(); - const messageOffset = 0; - const sizeOffset = 20; - const realLocation = 4; - const realSizeLocation = 21; - const genIndexOffset = 50; - - context.machineState.memory.set(messageOffset, new Uint32(realLocation)); - context.machineState.memory.set(sizeOffset, new Uint32(realSizeLocation)); - context.machineState.memory.setSlice(realLocation, args); - context.machineState.memory.set(realSizeLocation, new Uint32(args.length)); - context.machineState.memory.set(genIndexOffset, new Uint32(0)); - - const dstOffset = 300; - - const expectedHash = pedersenHash(args); - await new Pedersen(indirect, genIndexOffset, dstOffset, messageOffset, sizeOffset).execute(context); - - const result = context.machineState.memory.get(dstOffset); - expect(result).toEqual(new Field(expectedHash)); - }); - }); }); diff --git a/yarn-project/simulator/src/avm/opcodes/hashing.ts b/yarn-project/simulator/src/avm/opcodes/hashing.ts index a055d0a135e..92e7bfb2a71 100644 --- a/yarn-project/simulator/src/avm/opcodes/hashing.ts +++ b/yarn-project/simulator/src/avm/opcodes/hashing.ts @@ -1,15 +1,9 @@ -import { - keccak256, - keccakf1600, - pedersenHash, - poseidon2Permutation, - sha256Compression, -} from '@aztec/foundation/crypto'; +import { keccakf1600, poseidon2Permutation, sha256Compression } from '@aztec/foundation/crypto'; import { strict as assert } from 'assert'; import { type AvmContext } from '../avm_context.js'; -import { Field, TypeTag, Uint8, Uint32, Uint64 } from '../avm_memory_types.js'; +import { Field, TypeTag, Uint32, Uint64 } from '../avm_memory_types.js'; import { Opcode, OperandType } from '../serialization/instruction_serialization.js'; import { Addressing } from './addressing_mode.js'; import { Instruction } from './instruction.js'; @@ -52,52 +46,6 @@ export class Poseidon2 extends Instruction { } } -export class Keccak extends Instruction { - static type: string = 'KECCAK'; - static readonly opcode: Opcode = Opcode.KECCAK; - - // Informs (de)serialization. See Instruction.deserialize. - static readonly wireFormat: OperandType[] = [ - OperandType.UINT8, - OperandType.UINT8, - OperandType.UINT32, - OperandType.UINT32, - OperandType.UINT32, - ]; - - constructor( - private indirect: number, - private dstOffset: number, - private messageOffset: number, - private messageSizeOffset: number, - ) { - super(); - } - - // pub fn keccak256(input: [u8], message_size: u32) -> [u8; 32] - public async execute(context: AvmContext): Promise { - const memory = context.machineState.memory.track(this.type); - const operands = [this.dstOffset, this.messageOffset, this.messageSizeOffset]; - const addressing = Addressing.fromWire(this.indirect, operands.length); - const [dstOffset, messageOffset, messageSizeOffset] = addressing.resolve(operands, memory); - memory.checkTag(TypeTag.UINT32, messageSizeOffset); - const messageSize = memory.get(messageSizeOffset).toNumber(); - context.machineState.consumeGas(this.gasCost(messageSize)); - - memory.checkTagsRange(TypeTag.UINT8, messageOffset, messageSize); - - const messageData = Buffer.concat(memory.getSlice(messageOffset, messageSize).map(word => word.toBuffer())); - const hashBuffer = keccak256(messageData); - - // We need to convert the hashBuffer because map doesn't work as expected on an Uint8Array (Buffer). - const res = [...hashBuffer].map(byte => new Uint8(byte)); - memory.setSlice(dstOffset, res); - - memory.assert({ reads: messageSize + 1, writes: 32, addressing }); - context.machineState.incrementPc(); - } -} - export class KeccakF1600 extends Instruction { static type: string = 'KECCAKF1600'; static readonly opcode: Opcode = Opcode.KECCAKF1600; @@ -193,53 +141,3 @@ export class Sha256Compression extends Instruction { context.machineState.incrementPc(); } } - -export class Pedersen extends Instruction { - static type: string = 'PEDERSEN'; - static readonly opcode: Opcode = Opcode.PEDERSEN; - - // Informs (de)serialization. See Instruction.deserialize. - static readonly wireFormat: OperandType[] = [ - OperandType.UINT8, - OperandType.UINT8, - OperandType.UINT32, - OperandType.UINT32, - OperandType.UINT32, - OperandType.UINT32, - ]; - - constructor( - private indirect: number, - private genIndexOffset: number, - private dstOffset: number, - private messageOffset: number, - private messageSizeOffset: number, - ) { - super(); - } - - public async execute(context: AvmContext): Promise { - const memory = context.machineState.memory.track(this.type); - const operands = [this.genIndexOffset, this.dstOffset, this.messageOffset, this.messageSizeOffset]; - const addressing = Addressing.fromWire(this.indirect, operands.length); - const [genIndexOffset, dstOffset, messageOffset, messageSizeOffset] = addressing.resolve(operands, memory); - - // We hash a set of field elements - const genIndex = Number(memory.get(genIndexOffset).toBigInt()); - memory.checkTag(TypeTag.UINT32, genIndexOffset); - const messageSize = Number(memory.get(messageSizeOffset).toBigInt()); - memory.checkTag(TypeTag.UINT32, messageSizeOffset); - const hashData = memory.getSlice(messageOffset, messageSize); - - context.machineState.consumeGas(this.gasCost(messageSize)); - - memory.checkTagsRange(TypeTag.FIELD, messageOffset, messageSize); - - // No domain sep for now - const hash = pedersenHash(hashData, genIndex); - memory.set(dstOffset, new Field(hash)); - - memory.assert({ reads: messageSize + 2, writes: 1, addressing }); - context.machineState.incrementPc(); - } -} diff --git a/yarn-project/simulator/src/avm/opcodes/index.ts b/yarn-project/simulator/src/avm/opcodes/index.ts index 9ae06bd08c0..a6169cd9678 100644 --- a/yarn-project/simulator/src/avm/opcodes/index.ts +++ b/yarn-project/simulator/src/avm/opcodes/index.ts @@ -13,4 +13,3 @@ export * from './environment_getters.js'; export * from './accrued_substate.js'; export * from './hashing.js'; export * from './ec_add.js'; -export * from './commitment.js'; diff --git a/yarn-project/simulator/src/avm/serialization/bytecode_serialization.ts b/yarn-project/simulator/src/avm/serialization/bytecode_serialization.ts index 879a25279cb..9528a0553b2 100644 --- a/yarn-project/simulator/src/avm/serialization/bytecode_serialization.ts +++ b/yarn-project/simulator/src/avm/serialization/bytecode_serialization.ts @@ -19,7 +19,6 @@ import { InternalReturn, Jump, JumpI, - Keccak, KeccakF1600, L1ToL2MessageExists, Lt, @@ -30,8 +29,6 @@ import { NoteHashExists, NullifierExists, Or, - Pedersen, - PedersenCommitment, Poseidon2, Return, Revert, @@ -141,12 +138,9 @@ const INSTRUCTION_SET = () => // Gadgets [EcAdd.opcode, Instruction.deserialize.bind(EcAdd)], - [Keccak.opcode, Instruction.deserialize.bind(Keccak)], [Poseidon2.opcode, Instruction.deserialize.bind(Poseidon2)], [Sha256Compression.opcode, Instruction.deserialize.bind(Sha256Compression)], - [Pedersen.opcode, Instruction.deserialize.bind(Pedersen)], [MultiScalarMul.opcode, Instruction.deserialize.bind(MultiScalarMul)], - [PedersenCommitment.opcode, Instruction.deserialize.bind(PedersenCommitment)], // Conversions [ToRadixLE.opcode, Instruction.deserialize.bind(ToRadixLE)], // Future Gadgets -- pending changes in noir diff --git a/yarn-project/simulator/src/avm/serialization/instruction_serialization.ts b/yarn-project/simulator/src/avm/serialization/instruction_serialization.ts index e9ea67945fd..b8a503ef438 100644 --- a/yarn-project/simulator/src/avm/serialization/instruction_serialization.ts +++ b/yarn-project/simulator/src/avm/serialization/instruction_serialization.ts @@ -76,14 +76,11 @@ export enum Opcode { // Misc DEBUGLOG, // Gadgets - KECCAK, POSEIDON2, SHA256COMPRESSION, KECCAKF1600, - PEDERSEN, // temp - may be removed, but alot of contracts rely on it ECADD, MSM, - PEDERSENCOMMITMENT, // Conversion TORADIXLE, }