Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
range_check_impl.hpp
Go to the documentation of this file.
1// AUTOGENERATED FILE
2#pragma once
3
6
7namespace bb::avm2 {
8
9template <typename FF_>
10template <typename ContainerOverSubrelations, typename AllEntities>
11void range_checkImpl<FF_>::accumulate(ContainerOverSubrelations& evals,
12 const AllEntities& in,
13 [[maybe_unused]] const RelationParameters<FF_>&,
14 [[maybe_unused]] const FF_& scaling_factor)
15{
16 using C = ColumnAndShifts;
17
18 const auto range_check_PX_0 = FF(0);
19 const auto range_check_R7_0 = in.get(C::range_check_u16_r7);
20 const auto range_check_PX_1 = in.get(C::range_check_u16_r0);
21 const auto range_check_R7_1 = range_check_R7_0 * FF(65536);
22 const auto range_check_PX_2 = range_check_PX_1 + in.get(C::range_check_u16_r1) * FF(65536);
23 const auto range_check_R7_2 = range_check_R7_1 * FF(65536);
24 const auto range_check_PX_3 = range_check_PX_2 + in.get(C::range_check_u16_r2) * FF(4294967296UL);
25 const auto range_check_R7_3 = range_check_R7_2 * FF(65536);
26 const auto range_check_PX_4 = range_check_PX_3 + in.get(C::range_check_u16_r3) * FF(281474976710656UL);
27 const auto range_check_R7_4 = range_check_R7_3 * FF(65536);
28 const auto range_check_PX_5 =
29 range_check_PX_4 + in.get(C::range_check_u16_r4) * FF(uint256_t{ 0UL, 1UL, 0UL, 0UL });
30 const auto range_check_R7_5 = range_check_R7_4 * FF(65536);
31 const auto range_check_PX_6 =
32 range_check_PX_5 + in.get(C::range_check_u16_r5) * FF(uint256_t{ 0UL, 65536UL, 0UL, 0UL });
33 const auto range_check_R7_6 = range_check_R7_5 * FF(65536);
34 const auto range_check_PX_7 =
35 range_check_PX_6 + in.get(C::range_check_u16_r6) * FF(uint256_t{ 0UL, 4294967296UL, 0UL, 0UL });
36 const auto range_check_R7_7 = range_check_R7_6 * FF(65536);
37 const auto range_check_RESULT = in.get(C::range_check_is_lte_u16) * (range_check_PX_0 + range_check_R7_0) +
38 in.get(C::range_check_is_lte_u32) * (range_check_PX_1 + range_check_R7_1) +
39 in.get(C::range_check_is_lte_u48) * (range_check_PX_2 + range_check_R7_2) +
40 in.get(C::range_check_is_lte_u64) * (range_check_PX_3 + range_check_R7_3) +
41 in.get(C::range_check_is_lte_u80) * (range_check_PX_4 + range_check_R7_4) +
42 in.get(C::range_check_is_lte_u96) * (range_check_PX_5 + range_check_R7_5) +
43 in.get(C::range_check_is_lte_u112) * (range_check_PX_6 + range_check_R7_6) +
44 in.get(C::range_check_is_lte_u128) * (range_check_PX_7 + range_check_R7_7);
45 const auto range_check_CUM_LTE_128 = in.get(C::range_check_is_lte_u128);
46 const auto range_check_CUM_LTE_112 = in.get(C::range_check_is_lte_u112) + range_check_CUM_LTE_128;
47 const auto range_check_CUM_LTE_96 = in.get(C::range_check_is_lte_u96) + range_check_CUM_LTE_112;
48 const auto range_check_CUM_LTE_80 = in.get(C::range_check_is_lte_u80) + range_check_CUM_LTE_96;
49 const auto range_check_CUM_LTE_64 = in.get(C::range_check_is_lte_u64) + range_check_CUM_LTE_80;
50 const auto range_check_CUM_LTE_48 = in.get(C::range_check_is_lte_u48) + range_check_CUM_LTE_64;
51 const auto range_check_CUM_LTE_32 = in.get(C::range_check_is_lte_u32) + range_check_CUM_LTE_48;
52
53 {
54 using View = typename std::tuple_element_t<0, ContainerOverSubrelations>::View;
55 auto tmp =
56 static_cast<View>(in.get(C::range_check_sel)) * (FF(1) - static_cast<View>(in.get(C::range_check_sel)));
57 std::get<0>(evals) += (tmp * scaling_factor);
58 }
59 {
60 using View = typename std::tuple_element_t<1, ContainerOverSubrelations>::View;
61 auto tmp = static_cast<View>(in.get(C::range_check_sel_keccak)) *
62 (FF(1) - static_cast<View>(in.get(C::range_check_sel_keccak)));
63 std::get<1>(evals) += (tmp * scaling_factor);
64 }
65 {
66 using View = typename std::tuple_element_t<2, ContainerOverSubrelations>::View;
67 auto tmp = static_cast<View>(in.get(C::range_check_sel_gt)) *
68 (FF(1) - static_cast<View>(in.get(C::range_check_sel_gt)));
69 std::get<2>(evals) += (tmp * scaling_factor);
70 }
71 {
72 using View = typename std::tuple_element_t<3, ContainerOverSubrelations>::View;
73 auto tmp = static_cast<View>(in.get(C::range_check_sel_memory)) *
74 (FF(1) - static_cast<View>(in.get(C::range_check_sel_memory)));
75 std::get<3>(evals) += (tmp * scaling_factor);
76 }
77 {
78 using View = typename std::tuple_element_t<4, ContainerOverSubrelations>::View;
79 auto tmp = static_cast<View>(in.get(C::range_check_sel_alu)) *
80 (FF(1) - static_cast<View>(in.get(C::range_check_sel_alu)));
81 std::get<4>(evals) += (tmp * scaling_factor);
82 }
83 {
84 using View = typename std::tuple_element_t<5, ContainerOverSubrelations>::View;
85 auto tmp = static_cast<View>(in.get(C::range_check_sel_sha256)) *
86 (FF(1) - static_cast<View>(in.get(C::range_check_sel_sha256)));
87 std::get<5>(evals) += (tmp * scaling_factor);
88 }
89 {
90 using View = typename std::tuple_element_t<6, ContainerOverSubrelations>::View;
91 auto tmp =
92 (static_cast<View>(in.get(C::range_check_sel_keccak)) + static_cast<View>(in.get(C::range_check_sel_gt)) +
93 static_cast<View>(in.get(C::range_check_sel_memory)) + static_cast<View>(in.get(C::range_check_sel_alu)) +
94 static_cast<View>(in.get(C::range_check_sel_sha256))) *
95 (FF(1) - static_cast<View>(in.get(C::range_check_sel)));
96 std::get<6>(evals) += (tmp * scaling_factor);
97 }
98 {
99 using View = typename std::tuple_element_t<7, ContainerOverSubrelations>::View;
100 auto tmp = static_cast<View>(in.get(C::range_check_is_lte_u16)) *
101 (FF(1) - static_cast<View>(in.get(C::range_check_is_lte_u16)));
102 std::get<7>(evals) += (tmp * scaling_factor);
103 }
104 {
105 using View = typename std::tuple_element_t<8, ContainerOverSubrelations>::View;
106 auto tmp = static_cast<View>(in.get(C::range_check_is_lte_u32)) *
107 (FF(1) - static_cast<View>(in.get(C::range_check_is_lte_u32)));
108 std::get<8>(evals) += (tmp * scaling_factor);
109 }
110 {
111 using View = typename std::tuple_element_t<9, ContainerOverSubrelations>::View;
112 auto tmp = static_cast<View>(in.get(C::range_check_is_lte_u48)) *
113 (FF(1) - static_cast<View>(in.get(C::range_check_is_lte_u48)));
114 std::get<9>(evals) += (tmp * scaling_factor);
115 }
116 {
117 using View = typename std::tuple_element_t<10, ContainerOverSubrelations>::View;
118 auto tmp = static_cast<View>(in.get(C::range_check_is_lte_u64)) *
119 (FF(1) - static_cast<View>(in.get(C::range_check_is_lte_u64)));
120 std::get<10>(evals) += (tmp * scaling_factor);
121 }
122 {
123 using View = typename std::tuple_element_t<11, ContainerOverSubrelations>::View;
124 auto tmp = static_cast<View>(in.get(C::range_check_is_lte_u80)) *
125 (FF(1) - static_cast<View>(in.get(C::range_check_is_lte_u80)));
126 std::get<11>(evals) += (tmp * scaling_factor);
127 }
128 {
129 using View = typename std::tuple_element_t<12, ContainerOverSubrelations>::View;
130 auto tmp = static_cast<View>(in.get(C::range_check_is_lte_u96)) *
131 (FF(1) - static_cast<View>(in.get(C::range_check_is_lte_u96)));
132 std::get<12>(evals) += (tmp * scaling_factor);
133 }
134 {
135 using View = typename std::tuple_element_t<13, ContainerOverSubrelations>::View;
136 auto tmp = static_cast<View>(in.get(C::range_check_is_lte_u112)) *
137 (FF(1) - static_cast<View>(in.get(C::range_check_is_lte_u112)));
138 std::get<13>(evals) += (tmp * scaling_factor);
139 }
140 {
141 using View = typename std::tuple_element_t<14, ContainerOverSubrelations>::View;
142 auto tmp = static_cast<View>(in.get(C::range_check_is_lte_u128)) *
143 (FF(1) - static_cast<View>(in.get(C::range_check_is_lte_u128)));
144 std::get<14>(evals) += (tmp * scaling_factor);
145 }
146 { // IS_LTE_MUTUALLY_EXCLUSIVE
147 using View = typename std::tuple_element_t<15, ContainerOverSubrelations>::View;
148 auto tmp = ((static_cast<View>(in.get(C::range_check_is_lte_u16)) +
149 static_cast<View>(in.get(C::range_check_is_lte_u32)) +
150 static_cast<View>(in.get(C::range_check_is_lte_u48)) +
151 static_cast<View>(in.get(C::range_check_is_lte_u64)) +
152 static_cast<View>(in.get(C::range_check_is_lte_u80)) +
153 static_cast<View>(in.get(C::range_check_is_lte_u96)) +
154 static_cast<View>(in.get(C::range_check_is_lte_u112)) +
155 static_cast<View>(in.get(C::range_check_is_lte_u128))) -
156 static_cast<View>(in.get(C::range_check_sel)));
157 std::get<15>(evals) += (tmp * scaling_factor);
158 }
159 { // CHECK_RECOMPOSITION
160 using View = typename std::tuple_element_t<16, ContainerOverSubrelations>::View;
161 auto tmp = static_cast<View>(in.get(C::range_check_sel)) *
162 (CView(range_check_RESULT) - static_cast<View>(in.get(C::range_check_value)));
163 std::get<16>(evals) += (tmp * scaling_factor);
164 }
165 {
166 using View = typename std::tuple_element_t<17, ContainerOverSubrelations>::View;
167 auto tmp = (static_cast<View>(in.get(C::range_check_dyn_rng_chk_bits)) -
168 (((((((static_cast<View>(in.get(C::range_check_rng_chk_bits)) -
169 static_cast<View>(in.get(C::range_check_is_lte_u32)) * FF(16)) -
170 static_cast<View>(in.get(C::range_check_is_lte_u48)) * FF(32)) -
171 static_cast<View>(in.get(C::range_check_is_lte_u64)) * FF(48)) -
172 static_cast<View>(in.get(C::range_check_is_lte_u80)) * FF(64)) -
173 static_cast<View>(in.get(C::range_check_is_lte_u96)) * FF(80)) -
174 static_cast<View>(in.get(C::range_check_is_lte_u112)) * FF(96)) -
175 static_cast<View>(in.get(C::range_check_is_lte_u128)) * FF(112)));
176 std::get<17>(evals) += (tmp * scaling_factor);
177 }
178 {
179 using View = typename std::tuple_element_t<18, ContainerOverSubrelations>::View;
180 auto tmp = static_cast<View>(in.get(C::range_check_sel)) *
181 (static_cast<View>(in.get(C::range_check_dyn_diff)) -
182 ((static_cast<View>(in.get(C::range_check_dyn_rng_chk_pow_2)) -
183 static_cast<View>(in.get(C::range_check_u16_r7))) -
184 FF(1)));
185 std::get<18>(evals) += (tmp * scaling_factor);
186 }
187 {
188 using View = typename std::tuple_element_t<19, ContainerOverSubrelations>::View;
189 auto tmp = (static_cast<View>(in.get(C::range_check_sel_r0_16_bit_rng_lookup)) - CView(range_check_CUM_LTE_32));
190 std::get<19>(evals) += (tmp * scaling_factor);
191 }
192 {
193 using View = typename std::tuple_element_t<20, ContainerOverSubrelations>::View;
194 auto tmp = (static_cast<View>(in.get(C::range_check_sel_r1_16_bit_rng_lookup)) - CView(range_check_CUM_LTE_48));
195 std::get<20>(evals) += (tmp * scaling_factor);
196 }
197 {
198 using View = typename std::tuple_element_t<21, ContainerOverSubrelations>::View;
199 auto tmp = (static_cast<View>(in.get(C::range_check_sel_r2_16_bit_rng_lookup)) - CView(range_check_CUM_LTE_64));
200 std::get<21>(evals) += (tmp * scaling_factor);
201 }
202 {
203 using View = typename std::tuple_element_t<22, ContainerOverSubrelations>::View;
204 auto tmp = (static_cast<View>(in.get(C::range_check_sel_r3_16_bit_rng_lookup)) - CView(range_check_CUM_LTE_80));
205 std::get<22>(evals) += (tmp * scaling_factor);
206 }
207 {
208 using View = typename std::tuple_element_t<23, ContainerOverSubrelations>::View;
209 auto tmp = (static_cast<View>(in.get(C::range_check_sel_r4_16_bit_rng_lookup)) - CView(range_check_CUM_LTE_96));
210 std::get<23>(evals) += (tmp * scaling_factor);
211 }
212 {
213 using View = typename std::tuple_element_t<24, ContainerOverSubrelations>::View;
214 auto tmp =
215 (static_cast<View>(in.get(C::range_check_sel_r5_16_bit_rng_lookup)) - CView(range_check_CUM_LTE_112));
216 std::get<24>(evals) += (tmp * scaling_factor);
217 }
218 {
219 using View = typename std::tuple_element_t<25, ContainerOverSubrelations>::View;
220 auto tmp =
221 (static_cast<View>(in.get(C::range_check_sel_r6_16_bit_rng_lookup)) - CView(range_check_CUM_LTE_128));
222 std::get<25>(evals) += (tmp * scaling_factor);
223 }
224}
225
226} // namespace bb::avm2
static void accumulate(ContainerOverSubrelations &evals, const AllEntities &in, const RelationParameters< FF > &, const FF &scaling_factor)
AvmFlavorSettings::FF FF
Definition field.hpp:10
ColumnAndShifts
Definition columns.hpp:35
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13
#define CView(v)
Container for parameters used by the grand product (permutation, lookup) Honk relations.