-
Notifications
You must be signed in to change notification settings - Fork 333
/
Copy pathcircuit_builder.hpp.hbs
40 lines (28 loc) · 1.11 KB
/
circuit_builder.hpp.hbs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// AUTOGENERATED FILE
#pragma once
#include <vector>
#include "barretenberg/vm/{{snakeCase name}}/generated/full_row.hpp"
#include "barretenberg/vm/{{snakeCase name}}/generated/flavor.hpp"
namespace bb {
class {{name}}CircuitBuilder {
public:
using Flavor = bb::{{name}}Flavor;
using FF = Flavor::FF;
using Row = {{name}}FullRow<FF>;
// TODO: template
using Polynomial = Flavor::Polynomial;
using ProverPolynomials = Flavor::ProverPolynomials;
std::vector<Row> rows;
void set_trace(std::vector<Row>&& trace) { rows = std::move(trace); }
ProverPolynomials compute_polynomials() const;
bool check_circuit() const;
size_t get_num_gates() const { return rows.size(); }
size_t get_circuit_subgroup_size() const
{
const size_t num_rows = get_num_gates();
const auto num_rows_log2 = static_cast<size_t>(numeric::get_msb64(num_rows));
size_t num_rows_pow2 = 1UL << (num_rows_log2 + (1UL << num_rows_log2 == num_rows ? 0 : 1));
return num_rows_pow2;
}
};
} // namespace bb