Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
graph_description_megacircuitbuilder.test.cpp
Go to the documentation of this file.
8
9using namespace bb;
10using namespace cdg;
11
16
17namespace {
19}
20namespace bb {
21
22TEST(BoomerangMegaCircuitBuilder, BasicCircuit)
23{
25 fr a = fr::one();
26 builder.add_public_variable(a);
27
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));
35
36 uint32_t add_idx = builder.add_variable(fr(left) + fr(right) + builder.get_variable(result_idx));
37 builder.create_big_add_gate(
38 { left_idx, right_idx, result_idx, add_idx, fr(1), fr(1), fr(1), fr(-1), fr(0) });
39 }
40 }
41
42 // Compute a simple point accumulation natively
43 auto P1 = g1::affine_element::random_element();
44 auto P2 = g1::affine_element::random_element();
45 auto z = fr::random_element();
46
47 builder.queue_ecc_add_accum(P1);
48 builder.queue_ecc_mul_accum(P2, z);
49 builder.queue_ecc_eq();
50
51 auto tool = MegaStaticAnalyzer(builder);
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);
57 }
58 }
59 auto variables_in_one_gate = tool.get_variables_in_one_gate();
60}
61
66TEST(BoomerangMegaCircuitBuilder, OnlyGoblinEccOpQueueUltraOps)
67{
68 // Construct a simple circuit with op gates
70
71 // Compute a simple point accumulation natively
72 auto P1 = g1::affine_element::random_element();
73 auto P2 = g1::affine_element::random_element();
74 auto z = fr::random_element();
75
76 // Add gates corresponding to the above operations
77 builder.queue_ecc_add_accum(P1);
78 builder.queue_ecc_mul_accum(P2, z);
79 builder.queue_ecc_eq();
80
81 auto tool = MegaStaticAnalyzer(builder);
82 auto cc = tool.find_connected_components();
83 EXPECT_EQ(cc.size(), 1);
84}
85} // namespace bb
AluTraceBuilder builder
Definition alu.test.cpp:123
FF a
RNG & get_debug_randomness(bool reset, std::uint_fast64_t seed)
Definition engine.cpp:190
Entry point for Barretenberg command-line interface.
field< Bn254FrParams > fr
Definition fr.hpp:174
TEST(BoomerangMegaCircuitBuilder, BasicCircuit)
MegaCircuitBuilder_< field< Bn254FrParams > > MegaCircuitBuilder
Definition graph.cpp:12
StaticAnalyzer_< bb::fr, bb::MegaCircuitBuilder > MegaStaticAnalyzer
Definition graph.hpp:183
static constexpr field one()
static field random_element(numeric::RNG *engine=nullptr) noexcept