47 const auto run_case = [](
const InputElements&
inputs,
const SumcheckArrayOfValuesOverSubrelations& seed) {
48 SumcheckArrayOfValuesOverSubrelations accumulator = seed;
49 SumcheckArrayOfValuesOverSubrelations expected = seed;
51 expected[0] +=
inputs.batched_unshifted_accumulator *
inputs.eq_accumulator;
52 expected[1] +=
inputs.batched_shifted_accumulator *
inputs.eq_accumulator;
54 Relation::accumulate(accumulator,
inputs);
56 EXPECT_EQ(accumulator, expected);
59 SumcheckArrayOfValuesOverSubrelations zero_seed{
FF(0),
FF(0) };
60 run_case(InputElements::special(), zero_seed);
63 run_case(InputElements::random(), random_seed);
68 const auto run_case = [](
const InputElements&
inputs,
const SumcheckArrayOfValuesOverSubrelations& seed) {
69 SumcheckArrayOfValuesOverSubrelations accumulator = seed;
70 SumcheckArrayOfValuesOverSubrelations expected = seed;
72 expected[0] +=
inputs.batched_unshifted_instance *
inputs.eq_instance;
73 expected[1] +=
inputs.batched_shifted_instance *
inputs.eq_instance;
76 Relation::accumulate(accumulator,
inputs);
78 EXPECT_EQ(accumulator, expected);
81 SumcheckArrayOfValuesOverSubrelations zero_seed{
FF(0),
FF(0) };
82 run_case(InputElements::special(), zero_seed);
85 run_case(InputElements::random(), random_seed);
96 zero_eq.eq_accumulator =
FF(0);
99 EXPECT_TRUE(Relation::skip(zero_eq));
103 zero_accumulators.batched_unshifted_accumulator =
FF(0);
105 zero_accumulators.batched_shifted_accumulator =
FF(0);
110 EXPECT_TRUE(Relation::skip(zero_accumulators));
114 non_zero_case.batched_unshifted_accumulator =
FF(1);
118 non_zero_case.eq_accumulator =
FF(1);
121 EXPECT_FALSE(Relation::skip(non_zero_case));
132 zero_eq.eq_accumulator =
FF(0);
133 zero_eq.eq_instance =
FF(0);
135 EXPECT_TRUE(Relation::skip(zero_eq));
139 zero_all_batched.batched_unshifted_accumulator =
FF(0);
140 zero_all_batched.batched_unshifted_instance =
FF(0);
141 zero_all_batched.batched_shifted_accumulator =
FF(0);
142 zero_all_batched.batched_shifted_instance =
FF(0);
146 EXPECT_TRUE(Relation::skip(zero_all_batched));
154 accumulator_eq_zero.eq_accumulator =
FF(0);
155 accumulator_eq_zero.eq_instance =
FF(1);
157 EXPECT_FALSE(Relation::skip(accumulator_eq_zero));
165 instance_eq_zero.eq_accumulator =
FF(1);
166 instance_eq_zero.eq_instance =
FF(0);
168 EXPECT_FALSE(Relation::skip(instance_eq_zero));
172 all_non_zero.batched_unshifted_accumulator =
FF(1);
173 all_non_zero.batched_unshifted_instance =
FF(1);
174 all_non_zero.batched_shifted_accumulator =
FF(1);
175 all_non_zero.batched_shifted_instance =
FF(1);
176 all_non_zero.eq_accumulator =
FF(1);
177 all_non_zero.eq_instance =
FF(1);
179 EXPECT_FALSE(Relation::skip(all_non_zero));