199 const size_t NUM_SUBTABLES = 2;
200 for (
size_t i = 0; i < NUM_SUBTABLES; ++i) {
201 op_queue->initialize_new_subtable();
204 if (i == NUM_SUBTABLES - 1) {
209 op_queue->merge(settings);
214 const size_t ultra_fixed_offset = op_queue->get_ultra_ops_table_num_rows() + 20;
217 op_queue->merge(settings, ultra_fixed_offset);
232 auto P1 = G1::random_element();
234 identity.self_set_infinity();
245 auto P1 = G1::random_element();
247 identity.self_set_infinity();
259 auto P1 = G1::random_element();
272 auto P1 = G1::random_element();
273 auto P2 = G1::random_element();
293 auto P1 = G1::random_element();
294 auto P2 = G1::random_element();
297 op_queue->add_accumulate(P1);
298 op_queue->mul_accumulate(P2, z);
303 op_queue->append_hiding_op(hiding_x, hiding_y);
305 op_queue->eq_and_reset();
309 const auto& eccvm_ops = op_queue->get_eccvm_ops();
310 const auto& ultra_ops = op_queue->get_ultra_ops();
314 const auto& eccvm_hiding_op = eccvm_ops[0];
315 EXPECT_TRUE(eccvm_hiding_op.op_code.eq);
316 EXPECT_TRUE(eccvm_hiding_op.op_code.reset);
317 EXPECT_EQ(eccvm_hiding_op.base_point.x, hiding_x);
318 EXPECT_EQ(eccvm_hiding_op.base_point.y, hiding_y);
326 constexpr size_t EXPECTED_HIDING_OP_ULTRA_IDX = 2;
327 ASSERT_GT(ultra_ops.size(), EXPECTED_HIDING_OP_ULTRA_IDX);
329 const auto& ultra_hiding_op = ultra_ops[EXPECTED_HIDING_OP_ULTRA_IDX];
330 EXPECT_TRUE(ultra_hiding_op.op_code.eq) <<
"Hiding op at index 2 should have eq=true";
331 EXPECT_TRUE(ultra_hiding_op.op_code.reset) <<
"Hiding op at index 2 should have reset=true";
332 const size_t CHUNK_SIZE = 2 * stdlib::NUM_LIMB_BITS_IN_FIELD_SIMULATION;
336 EXPECT_EQ(
Fq(ultra_x), eccvm_hiding_op.base_point.x);
337 EXPECT_EQ(
Fq(ultra_y), eccvm_hiding_op.base_point.y);
340 EXPECT_EQ(ultra_hiding_op.op_code.eq, eccvm_hiding_op.op_code.eq);
341 EXPECT_EQ(ultra_hiding_op.op_code.reset, eccvm_hiding_op.op_code.reset);
static void check_table_column_polynomials(const std::shared_ptr< bb::ECCOpQueue > &op_queue, MergeSettings settings, std::optional< size_t > ultra_fixed_offset=std::nullopt)
Check that the table column polynomials reconstructed by the op queue have the correct relationship.