32 for (
const auto&
event : events) {
33 const uint256_t original_num_bits =
event.num_bits;
37 uint8_t num_bits =
event.num_bits;
41 size_t index_of_most_sig_16b_chunk = 0;
42 uint16_t dynamic_slice_register = 0;
43 uint8_t dynamic_bits = 0;
46 for (
size_t i = 0; i < 8; i++) {
49 dynamic_slice_register =
static_cast<uint16_t
>(
value);
50 index_of_most_sig_16b_chunk = i;
51 dynamic_bits = num_bits;
55 fixed_slice_registers[i] =
static_cast<uint16_t
>(
value);
61 auto dynamic_diff =
static_cast<uint16_t
>((1 << dynamic_bits) - dynamic_slice_register - 1);
65 { C::range_check_sel, 1 },
67 { C::range_check_value, original_value },
69 { C::range_check_rng_chk_bits, original_num_bits },
71 { C::range_check_is_lte_u16, index_of_most_sig_16b_chunk == 0 ? 1 : 0 },
72 { C::range_check_is_lte_u32, index_of_most_sig_16b_chunk == 1 ? 1 : 0 },
73 { C::range_check_is_lte_u48, index_of_most_sig_16b_chunk == 2 ? 1 : 0 },
74 { C::range_check_is_lte_u64, index_of_most_sig_16b_chunk == 3 ? 1 : 0 },
75 { C::range_check_is_lte_u80, index_of_most_sig_16b_chunk == 4 ? 1 : 0 },
76 { C::range_check_is_lte_u96, index_of_most_sig_16b_chunk == 5 ? 1 : 0 },
77 { C::range_check_is_lte_u112, index_of_most_sig_16b_chunk == 6 ? 1 : 0 },
78 { C::range_check_is_lte_u128, index_of_most_sig_16b_chunk == 7 ? 1 : 0 },
80 { C::range_check_u16_r0, fixed_slice_registers[0] },
81 { C::range_check_u16_r1, fixed_slice_registers[1] },
82 { C::range_check_u16_r2, fixed_slice_registers[2] },
83 { C::range_check_u16_r3, fixed_slice_registers[3] },
84 { C::range_check_u16_r4, fixed_slice_registers[4] },
85 { C::range_check_u16_r5, fixed_slice_registers[5] },
86 { C::range_check_u16_r6, fixed_slice_registers[6] },
87 { C::range_check_u16_r7, dynamic_slice_register },
89 { C::range_check_dyn_rng_chk_bits, dynamic_bits },
90 { C::range_check_dyn_rng_chk_pow_2, 1 << dynamic_bits },
91 { C::range_check_dyn_diff, dynamic_diff },
93 { C::range_check_sel_r0_16_bit_rng_lookup, index_of_most_sig_16b_chunk > 0 ? 1 : 0 },
94 { C::range_check_sel_r1_16_bit_rng_lookup, index_of_most_sig_16b_chunk > 1 ? 1 : 0 },
95 { C::range_check_sel_r2_16_bit_rng_lookup, index_of_most_sig_16b_chunk > 2 ? 1 : 0 },
96 { C::range_check_sel_r3_16_bit_rng_lookup, index_of_most_sig_16b_chunk > 3 ? 1 : 0 },
97 { C::range_check_sel_r4_16_bit_rng_lookup, index_of_most_sig_16b_chunk > 4 ? 1 : 0 },
98 { C::range_check_sel_r5_16_bit_rng_lookup, index_of_most_sig_16b_chunk > 5 ? 1 : 0 },
99 { C::range_check_sel_r6_16_bit_rng_lookup, index_of_most_sig_16b_chunk > 6 ? 1 : 0 },