38 for (
size_t idx = 0; idx < NumClaims; ++idx) {
39 const bool should_skip =
40 (in.non_shifted(idx).is_zero() && in.shifted(idx).is_zero()) || in.eq(idx).is_zero();
48 template <
typename ContainerOverSubrelations,
typename AllEntities>
52 [[maybe_unused]]
const FF& scaling_factor = {})
54 static_assert(NumClaims <= RelationParameters<FF>::NUM_MULTILINEAR_BATCHING_CHALLENGES);
59 const auto& gamma_powers = relation_parameters.multilinear_batching_challenges;
60 for (
size_t idx = 0; idx < NumClaims; ++idx) {
61 const auto eq = Accumulator(in.eq(idx)) * gamma_powers[idx];
62 std::get<0>(evals) += Accumulator(in.non_shifted(idx)) * eq;
63 std::get<1>(evals) += Accumulator(in.shifted(idx)) * eq;
68template <
typename FF,
size_t NumClaims>
Relation for the multilinear batching sumcheck.
static void accumulate(ContainerOverSubrelations &evals, const AllEntities &in, const RelationParameters< FF > &relation_parameters={}, const FF &scaling_factor={})
static bool skip(const AllEntities &in)
static constexpr std::array< size_t, 2 > SUBRELATION_PARTIAL_LENGTHS
static constexpr std::array< bool, 2 > SUBRELATION_LINEARLY_INDEPENDENT
A wrapper for Relations to expose methods used by the Sumcheck prover or verifier to add the contribu...
Entry point for Barretenberg command-line interface.
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Container for parameters used by the grand product (permutation, lookup) Honk relations.