Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
logic_constraint.cpp
Go to the documentation of this file.
1// === AUDIT STATUS ===
2// internal: { status: not started, auditors: [], date: YYYY-MM-DD }
3// external_1: { status: not started, auditors: [], date: YYYY-MM-DD }
4// external_2: { status: not started, auditors: [], date: YYYY-MM-DD }
5// =====================
6
9
10namespace acir_format {
11
12template <typename Builder>
16 const uint32_t result,
17 const size_t num_bits,
18 const bool is_xor_gate)
19{
21
23 field_ct right = to_field_ct(b, builder);
24
25 field_ct res = bb::stdlib::logic<Builder>::create_logic_constraint(left, right, num_bits, is_xor_gate);
27 res.assert_equal(our_res);
28}
29
33 const uint32_t result,
34 const size_t num_bits,
35 const bool is_xor_gate);
39 const uint32_t result,
40 const size_t num_bits,
41 const bool is_xor_gate);
42
43} // namespace acir_format
void assert_equal(const field_t &rhs, std::string const &msg="field_t::assert_equal") const
Copy constraint: constrain that *this field is equal to rhs element.
Definition field.cpp:929
static field_t from_witness_index(Builder *ctx, uint32_t witness_index)
Definition field.cpp:59
static field_pt create_logic_constraint(field_pt &a, field_pt &b, size_t num_bits, bool is_xor_gate, const std::function< std::pair< uint256_t, uint256_t >(uint256_t, uint256_t, size_t)> &get_chunk=[](uint256_t left, uint256_t right, size_t chunk_size) { uint256_t left_chunk=left &((uint256_t(1)<< chunk_size) - 1);uint256_t right_chunk=right &((uint256_t(1)<< chunk_size) - 1);return std::make_pair(left_chunk, right_chunk);})
A logical AND or XOR over a variable number of bits.
Definition logic.cpp:32
AluTraceBuilder builder
Definition alu.test.cpp:123
FF a
FF b
template void create_logic_gate< bb::UltraCircuitBuilder >(bb::UltraCircuitBuilder &builder, const WitnessOrConstant< bb::fr > a, const WitnessOrConstant< bb::fr > b, const uint32_t result, const size_t num_bits, const bool is_xor_gate)
bb::stdlib::field_t< Builder > to_field_ct(const WitnessOrConstant< FF > &input, Builder &builder)
template void create_logic_gate< bb::MegaCircuitBuilder >(bb::MegaCircuitBuilder &builder, const WitnessOrConstant< bb::fr > a, const WitnessOrConstant< bb::fr > b, const uint32_t result, const size_t num_bits, const bool is_xor_gate)
void create_logic_gate(Builder &builder, const WitnessOrConstant< bb::fr > a, const WitnessOrConstant< bb::fr > b, const uint32_t result, const size_t num_bits, const bool is_xor_gate)