58 const auto run_case = [](
const InputElements&
inputs,
const SumcheckArrayOfValuesOverSubrelations& seed) {
59 SumcheckArrayOfValuesOverSubrelations accumulator = seed;
60 SumcheckArrayOfValuesOverSubrelations expected = seed;
67 for (
size_t idx = 0; idx < NUM_CLAIMS; ++idx) {
68 expected[0] += gamma_pow *
inputs.non_shifted(idx) *
inputs.eq(idx);
69 expected[1] += gamma_pow *
inputs.shifted(idx) *
inputs.eq(idx);
73 Relation::accumulate(accumulator,
inputs, parameters);
75 EXPECT_EQ(accumulator, expected);
78 SumcheckArrayOfValuesOverSubrelations zero_seed{
FF(0),
FF(0) };
79 run_case(InputElements::special(), zero_seed);
82 run_case(InputElements::random(), random_seed);
89 for (
size_t idx = 0; idx < NUM_CLAIMS; ++idx) {
90 zero_eq.eq_values[idx] =
FF(0);
92 EXPECT_TRUE(Relation::skip(zero_eq));
96 for (
size_t idx = 0; idx < NUM_CLAIMS; ++idx) {
97 zero_witnesses.non_shifted_values[idx] =
FF(0);
98 zero_witnesses.shifted_values[idx] =
FF(0);
100 EXPECT_TRUE(Relation::skip(zero_witnesses));
104 mixed_zero.eq_values[0] =
FF(0);
105 mixed_zero.non_shifted_values[1] =
FF(0);
106 mixed_zero.shifted_values[1] =
FF(0);
107 mixed_zero.non_shifted_values[2] =
FF(0);
108 mixed_zero.shifted_values[2] =
FF(0);
109 mixed_zero.eq_values[2] =
FF(0);
110 EXPECT_TRUE(Relation::skip(mixed_zero));
114 non_shifted_active.non_shifted_values[NUM_CLAIMS - 1] =
FF(1);
115 non_shifted_active.eq_values[NUM_CLAIMS - 1] =
FF(1);
116 EXPECT_FALSE(Relation::skip(non_shifted_active));
120 shifted_active.shifted_values[0] =
FF(1);
121 shifted_active.eq_values[0] =
FF(1);
122 EXPECT_FALSE(Relation::skip(shifted_active));
125 EXPECT_FALSE(Relation::skip(InputElements::special()));