Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
logic.hpp
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
7#pragma once
12#include <cstdint>
13#include <functional>
14#include <utility>
15
16namespace bb::stdlib {
17
18template <typename Builder> class logic {
19 public:
22
23 public:
25 field_pt& a,
26 field_pt& b,
27 size_t num_bits,
28 bool is_xor_gate,
29 const std::function<std::pair<uint256_t, uint256_t>(uint256_t, uint256_t, size_t)>& get_chunk =
30 [](uint256_t left, uint256_t right, size_t chunk_size) {
31 uint256_t left_chunk = left & ((uint256_t(1) << chunk_size) - 1);
32 uint256_t right_chunk = right & ((uint256_t(1) << chunk_size) - 1);
33 return std::make_pair(left_chunk, right_chunk);
34 });
35};
36} // namespace bb::stdlib
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
FF a
FF b
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13