26 return { FF::random_element(), FF::random_element(), FF::random_element(),
48 [](
const InputElements& inputs,
const SumcheckArrayOfValuesOverSubrelations& seed,
const FF& scaling_factor) {
49 SumcheckArrayOfValuesOverSubrelations accumulator = seed;
50 SumcheckArrayOfValuesOverSubrelations expected = seed;
52 expected[0] += inputs.w_non_shifted_accumulator * inputs.w_evaluations_accumulator * scaling_factor;
53 expected[1] += inputs.w_shifted_accumulator * inputs.w_evaluations_accumulator * scaling_factor;
56 Relation::accumulate(accumulator, inputs, parameters, scaling_factor);
58 EXPECT_EQ(accumulator, expected);
61 SumcheckArrayOfValuesOverSubrelations zero_seed{
FF(0),
FF(0) };
62 run_case(InputElements::special(), zero_seed,
FF(1));
64 SumcheckArrayOfValuesOverSubrelations random_seed{ FF::random_element(), FF::random_element() };
65 run_case(InputElements::random(), random_seed, FF::random_element());
71 [](
const InputElements& inputs,
const SumcheckArrayOfValuesOverSubrelations& seed,
const FF& scaling_factor) {
72 SumcheckArrayOfValuesOverSubrelations accumulator = seed;
73 SumcheckArrayOfValuesOverSubrelations expected = seed;
75 expected[0] += inputs.w_non_shifted_instance * inputs.w_evaluations_instance * scaling_factor;
76 expected[1] += inputs.w_shifted_instance * inputs.w_evaluations_instance * scaling_factor;
79 Relation::accumulate(accumulator, inputs, parameters, scaling_factor);
81 EXPECT_EQ(accumulator, expected);
84 SumcheckArrayOfValuesOverSubrelations zero_seed{
FF(0),
FF(0) };
85 run_case(InputElements::special(), zero_seed,
FF(1));
87 SumcheckArrayOfValuesOverSubrelations random_seed{ FF::random_element(), FF::random_element() };
88 run_case(InputElements::random(), random_seed, FF::random_element());
95 zero_evaluations.w_non_shifted_accumulator = FF::random_element();
96 zero_evaluations.w_non_shifted_instance = FF::random_element();
97 zero_evaluations.w_shifted_accumulator = FF::random_element();
98 zero_evaluations.w_shifted_instance = FF::random_element();
99 zero_evaluations.w_evaluations_accumulator =
FF(0);
100 zero_evaluations.w_evaluations_instance = FF::random_element();
102 EXPECT_TRUE(Relation::skip(zero_evaluations));
106 zero_accumulators.w_non_shifted_accumulator =
FF(0);
107 zero_accumulators.w_non_shifted_instance = FF::random_element();
108 zero_accumulators.w_shifted_accumulator =
FF(0);
109 zero_accumulators.w_shifted_instance = FF::random_element();
110 zero_accumulators.w_evaluations_accumulator = FF::random_element();
111 zero_accumulators.w_evaluations_instance = FF::random_element();
113 EXPECT_TRUE(Relation::skip(zero_accumulators));
117 non_zero_case.w_non_shifted_accumulator =
FF(1);
118 non_zero_case.w_non_shifted_instance = FF::random_element();
119 non_zero_case.w_shifted_accumulator = FF::random_element();
120 non_zero_case.w_shifted_instance = FF::random_element();
121 non_zero_case.w_evaluations_accumulator =
FF(1);
122 non_zero_case.w_evaluations_instance = FF::random_element();
124 EXPECT_FALSE(Relation::skip(non_zero_case));
131 zero_evaluations.w_non_shifted_accumulator = FF::random_element();
132 zero_evaluations.w_non_shifted_instance = FF::random_element();
133 zero_evaluations.w_shifted_accumulator = FF::random_element();
134 zero_evaluations.w_shifted_instance = FF::random_element();
135 zero_evaluations.w_evaluations_accumulator =
FF(0);
136 zero_evaluations.w_evaluations_instance =
FF(0);
138 EXPECT_TRUE(Relation::skip(zero_evaluations));
142 zero_all_shifted.w_non_shifted_accumulator =
FF(0);
143 zero_all_shifted.w_non_shifted_instance =
FF(0);
144 zero_all_shifted.w_shifted_accumulator =
FF(0);
145 zero_all_shifted.w_shifted_instance =
FF(0);
146 zero_all_shifted.w_evaluations_accumulator = FF::random_element();
147 zero_all_shifted.w_evaluations_instance = FF::random_element();
149 EXPECT_TRUE(Relation::skip(zero_all_shifted));
153 accumulator_eval_zero.w_non_shifted_accumulator = FF::random_element();
154 accumulator_eval_zero.w_non_shifted_instance = FF::random_element();
155 accumulator_eval_zero.w_shifted_accumulator = FF::random_element();
156 accumulator_eval_zero.w_shifted_instance = FF::random_element();
157 accumulator_eval_zero.w_evaluations_accumulator =
FF(0);
158 accumulator_eval_zero.w_evaluations_instance =
FF(1);
160 EXPECT_FALSE(Relation::skip(accumulator_eval_zero));
164 instance_eval_zero.w_non_shifted_accumulator = FF::random_element();
165 instance_eval_zero.w_non_shifted_instance = FF::random_element();
166 instance_eval_zero.w_shifted_accumulator = FF::random_element();
167 instance_eval_zero.w_shifted_instance = FF::random_element();
168 instance_eval_zero.w_evaluations_accumulator =
FF(1);
169 instance_eval_zero.w_evaluations_instance =
FF(0);
171 EXPECT_FALSE(Relation::skip(instance_eval_zero));
175 all_non_zero.w_non_shifted_accumulator =
FF(1);
176 all_non_zero.w_non_shifted_instance =
FF(1);
177 all_non_zero.w_shifted_accumulator =
FF(1);
178 all_non_zero.w_shifted_instance =
FF(1);
179 all_non_zero.w_evaluations_accumulator =
FF(1);
180 all_non_zero.w_evaluations_instance =
FF(1);
182 EXPECT_FALSE(Relation::skip(all_non_zero));