30 static fr hash(
const std::vector<fr>& inputs)
60 while (layer.size() > 1) {
62 for (
size_t i = 0; i < next_layer.size(); ++i) {
77 while (layer.size() > 1) {
79 for (
size_t i = 0; i < next_layer.size(); ++i) {
81 tree.push_back(next_layer[i]);
#define ASSERT(expression,...)
static Fq hash(const std::vector< Fq > &inputs, GeneratorContext context={})
Given a vector of fields, generate a pedersen hash using generators from context.
std::vector< bb::fr > compute_tree_native(std::vector< bb::fr > const &input)
bb::fr hash_native(std::vector< bb::fr > const &inputs)
bb::fr compute_tree_root_native(std::vector< bb::fr > const &input)
bb::fr hash_pair_native(bb::fr const &lhs, bb::fr const &rhs)
constexpr bool is_power_of_two(uint64_t x)
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
static fr hash_pair(const fr &lhs, const fr &rhs)
static fr hash(const std::vector< fr > &inputs)
static fr hash_pair(const fr &lhs, const fr &rhs)
static fr hash(const std::vector< fr > &inputs)
static constexpr field zero()