47 const auto run_case = [](
const InputElements&
inputs,
const SumcheckArrayOfValuesOverSubrelations& seed) {
48 SumcheckArrayOfValuesOverSubrelations accumulator = seed;
49 SumcheckArrayOfValuesOverSubrelations expected = seed;
51 expected[0] +=
inputs.w_non_shifted_accumulator *
inputs.w_evaluations_accumulator;
52 expected[1] +=
inputs.w_shifted_accumulator *
inputs.w_evaluations_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.w_non_shifted_instance *
inputs.w_evaluations_instance;
73 expected[1] +=
inputs.w_shifted_instance *
inputs.w_evaluations_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_evaluations.w_evaluations_accumulator =
FF(0);
99 EXPECT_TRUE(Relation::skip(zero_evaluations));
103 zero_accumulators.w_non_shifted_accumulator =
FF(0);
105 zero_accumulators.w_shifted_accumulator =
FF(0);
110 EXPECT_TRUE(Relation::skip(zero_accumulators));
114 non_zero_case.w_non_shifted_accumulator =
FF(1);
118 non_zero_case.w_evaluations_accumulator =
FF(1);
121 EXPECT_FALSE(Relation::skip(non_zero_case));
132 zero_evaluations.w_evaluations_accumulator =
FF(0);
133 zero_evaluations.w_evaluations_instance =
FF(0);
135 EXPECT_TRUE(Relation::skip(zero_evaluations));
139 zero_all_shifted.w_non_shifted_accumulator =
FF(0);
140 zero_all_shifted.w_non_shifted_instance =
FF(0);
141 zero_all_shifted.w_shifted_accumulator =
FF(0);
142 zero_all_shifted.w_shifted_instance =
FF(0);
146 EXPECT_TRUE(Relation::skip(zero_all_shifted));
154 accumulator_eval_zero.w_evaluations_accumulator =
FF(0);
155 accumulator_eval_zero.w_evaluations_instance =
FF(1);
157 EXPECT_FALSE(Relation::skip(accumulator_eval_zero));
165 instance_eval_zero.w_evaluations_accumulator =
FF(1);
166 instance_eval_zero.w_evaluations_instance =
FF(0);
168 EXPECT_FALSE(Relation::skip(instance_eval_zero));
172 all_non_zero.w_non_shifted_accumulator =
FF(1);
173 all_non_zero.w_non_shifted_instance =
FF(1);
174 all_non_zero.w_shifted_accumulator =
FF(1);
175 all_non_zero.w_shifted_instance =
FF(1);
176 all_non_zero.w_evaluations_accumulator =
FF(1);
177 all_non_zero.w_evaluations_instance =
FF(1);
179 EXPECT_FALSE(Relation::skip(all_non_zero));