159 const size_t NUM_SUBTABLES_THROUGH_TAIL = 3;
160 for (
size_t i = 0; i < NUM_SUBTABLES_THROUGH_TAIL; ++i) {
161 op_queue->initialize_new_subtable();
166 op_queue->construct_zk_columns();
169 const size_t ultra_fixed_offset = op_queue->get_ultra_ops_table_num_rows() + 20;
171 op_queue->merge_fixed_append(ultra_fixed_offset);
172 auto table_up_to_tail = op_queue->construct_table_columns_up_to_tail();
173 EXPECT_EQ(table_up_to_tail[0].size(),
189 auto P1 = G1::random_element();
191 identity.self_set_infinity();
202 auto P1 = G1::random_element();
204 identity.self_set_infinity();
216 auto P1 = G1::random_element();
229 auto P1 = G1::random_element();
230 auto P2 = G1::random_element();
250 auto P1 = G1::random_element();
251 auto P2 = G1::random_element();
254 op_queue->add_accumulate(P1);
255 op_queue->mul_accumulate(P2, z);
260 op_queue->append_hiding_op(hiding_x, hiding_y);
262 op_queue->eq_and_reset();
267 const auto& eccvm_ops = op_queue->get_eccvm_ops();
268 const auto& ultra_ops = op_queue->get_no_zk_reconstructed_ultra_ops();
272 const auto& eccvm_hiding_op = eccvm_ops[0];
273 EXPECT_TRUE(eccvm_hiding_op.op_code.eq);
274 EXPECT_TRUE(eccvm_hiding_op.op_code.reset);
275 EXPECT_EQ(eccvm_hiding_op.base_point.x, hiding_x);
276 EXPECT_EQ(eccvm_hiding_op.base_point.y, hiding_y);
284 constexpr size_t EXPECTED_HIDING_OP_ULTRA_IDX = 2;
285 ASSERT_GT(ultra_ops.size(), EXPECTED_HIDING_OP_ULTRA_IDX);
287 const auto& ultra_hiding_op = ultra_ops[EXPECTED_HIDING_OP_ULTRA_IDX];
288 EXPECT_TRUE(ultra_hiding_op.op_code.eq) <<
"Hiding op at index 2 should have eq=true";
289 EXPECT_TRUE(ultra_hiding_op.op_code.reset) <<
"Hiding op at index 2 should have reset=true";
290 const size_t CHUNK_SIZE = 2 * stdlib::NUM_LIMB_BITS_IN_FIELD_SIMULATION;
294 EXPECT_EQ(
Fq(ultra_x), eccvm_hiding_op.base_point.x);
295 EXPECT_EQ(
Fq(ultra_y), eccvm_hiding_op.base_point.y);
298 EXPECT_EQ(ultra_hiding_op.op_code.eq, eccvm_hiding_op.op_code.eq);
299 EXPECT_EQ(ultra_hiding_op.op_code.reset, eccvm_hiding_op.op_code.reset);