22TEST(BoomerangMegaCircuitBuilder, BasicCircuit)
28 for (
size_t i = 0; i < 16; ++i) {
29 for (
size_t j = 0; j < 16; ++j) {
30 uint64_t left =
static_cast<uint64_t
>(j);
31 uint64_t right =
static_cast<uint64_t
>(i);
32 uint32_t left_idx =
builder.add_variable(
fr(left));
33 uint32_t right_idx =
builder.add_variable(
fr(right));
34 uint32_t result_idx =
builder.add_variable(
fr(left ^ right));
36 uint32_t add_idx =
builder.add_variable(
fr(left) +
fr(right) +
builder.get_variable(result_idx));
38 { left_idx, right_idx, result_idx, add_idx,
fr(1),
fr(1),
fr(1),
fr(-1),
fr(0) });
43 auto P1 = g1::affine_element::random_element();
44 auto P2 = g1::affine_element::random_element();
47 builder.queue_ecc_add_accum(P1);
48 builder.queue_ecc_mul_accum(P2, z);
52 auto connected_components = tool.find_connected_components();
53 EXPECT_EQ(connected_components.size(), 257);
54 for (
size_t i = 0; i < connected_components.size(); i++) {
55 if (connected_components[i].size() != 4) {
56 EXPECT_EQ(connected_components[i].size(), 18);
59 auto variables_in_one_gate = tool.get_variables_in_one_gate();
66TEST(BoomerangMegaCircuitBuilder, OnlyGoblinEccOpQueueUltraOps)
72 auto P1 = g1::affine_element::random_element();
73 auto P2 = g1::affine_element::random_element();
77 builder.queue_ecc_add_accum(P1);
78 builder.queue_ecc_mul_accum(P2, z);
82 auto cc = tool.find_connected_components();
83 EXPECT_EQ(cc.size(), 1);