3#include "./transition_widget.hpp"
10 static constexpr size_t num_independent_relations = 4;
12 static constexpr uint8_t quotient_required_challenges = CHALLENGE_BIT_ALPHA;
14 static constexpr uint8_t update_required_challenges = CHALLENGE_BIT_ALPHA;
20 inline static std::set<PolynomialIndex>
const& get_required_polynomial_ids()
22 static const std::set<PolynomialIndex> required_polynomial_ids = {
23 PolynomialIndex::Q_SORT, PolynomialIndex::W_1, PolynomialIndex::W_2,
24 PolynomialIndex::W_3, PolynomialIndex::W_4, PolynomialIndex::Z
26 return required_polynomial_ids;
29 inline static void accumulate_contribution(PolyContainer& polynomials,
37 const Field& alpha_base = challenges.alpha_powers[0];
38 const Field& alpha = challenges.elements[ChallengeIndex::ALPHA];
40 Getters::template get_value<EvaluationType::NON_SHIFTED, PolynomialIndex::W_1>(polynomials, i);
42 Getters::template get_value<EvaluationType::NON_SHIFTED, PolynomialIndex::W_2>(polynomials, i);
44 Getters::template get_value<EvaluationType::NON_SHIFTED, PolynomialIndex::W_3>(polynomials, i);
46 Getters::template get_value<EvaluationType::NON_SHIFTED, PolynomialIndex::W_4>(polynomials, i);
47 const Field& w_1_omega =
48 Getters::template get_value<EvaluationType::SHIFTED, PolynomialIndex::W_1>(polynomials, i);
50 Getters::template get_value<EvaluationType::NON_SHIFTED, PolynomialIndex::Q_SORT>(polynomials, i);
52 Field alpha_a = alpha_base;
53 Field alpha_b = alpha_a * alpha;
54 Field alpha_c = alpha_b * alpha;
55 Field alpha_d = alpha_c * alpha;
57 Field delta_1 = w_2 - w_1;
58 Field delta_2 = w_3 - w_2;
59 Field delta_3 = w_4 - w_3;
60 Field delta_4 = w_1_omega - w_4;
63 Field T0 = delta_1.sqr();
65 Field T1 = delta_1 + minus_two;
67 T1 = delta_1 + minus_three;
69 Field range_accumulator = T0 * alpha_a;
73 T1 = delta_2 + minus_two;
75 T1 = delta_2 + minus_three;
78 range_accumulator += T0;
82 T1 = delta_3 + minus_two;
84 T1 = delta_3 + minus_three;
87 range_accumulator += T0;
91 T1 = delta_4 + minus_two;
93 T1 = delta_4 + minus_three;
96 range_accumulator += T0;
98 quotient += range_accumulator * q_sort;
104template <
typename Settings>
107template <
typename Field,
typename Group,
typename Transcript,
typename Settings>
Definition: widget.bench.cpp:13
BBERG_INLINE constexpr field sqr() const noexcept
Definition: field_impl.hpp:61