Skip to content

Commit d947ebf

Browse files
committed
annoying changes
1 parent 5d74c12 commit d947ebf

File tree

10 files changed

+74
-43
lines changed

10 files changed

+74
-43
lines changed

barretenberg/cpp/src/barretenberg/eccvm/eccvm_flavor.hpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include "barretenberg/flavor/flavor_macros.hpp"
99
#include "barretenberg/flavor/relation_definitions.hpp"
1010
#include "barretenberg/flavor/repeated_commitments_data.hpp"
11+
#include "barretenberg/numeric/bitop/division.hpp"
1112
#include "barretenberg/polynomials/polynomial.hpp"
1213
#include "barretenberg/polynomials/univariate.hpp"
1314
#include "barretenberg/relations/ecc_vm/ecc_bools_relation.hpp"
@@ -715,7 +716,7 @@ class ECCVMFlavor {
715716
PartiallyEvaluatedMultivariates(const ProverPolynomials& full_polynomials, size_t circuit_size)
716717
{
717718
for (auto [poly, full_poly] : zip_view(get_all(), full_polynomials.get_all())) {
718-
poly = Polynomial((full_poly.end_index() + 1) / 2, circuit_size / 2);
719+
poly = Polynomial(numeric::div_ceil<size_t>(full_poly.end_index(), 2), circuit_size / 2);
719720
}
720721
}
721722
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#pragma once
2+
3+
namespace bb::numeric {
4+
5+
template <typename T> constexpr inline T div_ceil(T a, T b)
6+
{
7+
return (a + b - 1) / b;
8+
}
9+
10+
} // namespace bb::numeric

barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/mega_flavor.hpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include "barretenberg/flavor/flavor_macros.hpp"
66
#include "barretenberg/flavor/relation_definitions.hpp"
77
#include "barretenberg/flavor/repeated_commitments_data.hpp"
8+
#include "barretenberg/numeric/bitop/division.hpp"
89
#include "barretenberg/polynomials/univariate.hpp"
910
#include "barretenberg/relations/auxiliary_relation.hpp"
1011
#include "barretenberg/relations/databus_lookup_relation.hpp"
@@ -632,7 +633,7 @@ class MegaFlavor {
632633
PartiallyEvaluatedMultivariates(const ProverPolynomials& full_polynomials, size_t circuit_size)
633634
{
634635
for (auto [poly, full_poly] : zip_view(get_all(), full_polynomials.get_all())) {
635-
poly = Polynomial((full_poly.end_index() + 1) / 2, circuit_size / 2);
636+
poly = Polynomial(numeric::div_ceil<size_t>(full_poly.end_index(), 2), circuit_size / 2);
636637
}
637638
}
638639
};

barretenberg/cpp/src/barretenberg/stdlib_circuit_builders/ultra_flavor.hpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include "barretenberg/flavor/flavor.hpp"
55
#include "barretenberg/flavor/flavor_macros.hpp"
66
#include "barretenberg/flavor/repeated_commitments_data.hpp"
7+
#include "barretenberg/numeric/bitop/division.hpp"
78
#include "barretenberg/plonk_honk_shared/library/grand_product_delta.hpp"
89
#include "barretenberg/plonk_honk_shared/library/grand_product_library.hpp"
910
#include "barretenberg/polynomials/barycentric.hpp"
@@ -508,7 +509,7 @@ class UltraFlavor {
508509
{
509510
PROFILE_THIS_NAME("PartiallyEvaluatedMultivariates constructor");
510511
for (auto [poly, full_poly] : zip_view(get_all(), full_polynomials.get_all())) {
511-
poly = Polynomial((full_poly.end_index() + 1) / 2, circuit_size / 2);
512+
poly = Polynomial(numeric::div_ceil<size_t>(full_poly.end_index(), 2), circuit_size / 2);
512513
}
513514
}
514515
};

barretenberg/cpp/src/barretenberg/sumcheck/partial_evaluation.test.cpp

+36-25
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include "barretenberg/stdlib_circuit_builders/ultra_flavor.hpp"
22
#include "barretenberg/sumcheck/sumcheck.hpp"
33

4+
#include <cstddef>
45
#include <gtest/gtest.h>
56

67
using namespace bb;
@@ -43,6 +44,7 @@ TYPED_TEST(PartialEvaluationTests, TwoRoundsSpecial)
4344
{
4445
using Flavor = TypeParam;
4546
using FF = typename Flavor::FF;
47+
using Polynomial = typename Flavor::Polynomial;
4648
using Transcript = typename Flavor::Transcript;
4749

4850
// values here are chosen to check another test
@@ -54,9 +56,10 @@ TYPED_TEST(PartialEvaluationTests, TwoRoundsSpecial)
5456
FF v01 = 0;
5557
FF v11 = 0;
5658

57-
std::array<FF, 4> f0 = { v00, v10, v01, v11 };
59+
Polynomial f0(4);
60+
f0.template copy_vector<FF>({ v00, v10, v01, v11 });
5861

59-
auto full_polynomials = std::array<std::span<FF>, 1>({ f0 });
62+
auto full_polynomials = std::array<Polynomial, 1>({ f0 });
6063
auto transcript = Transcript::prover_init_empty();
6164
auto sumcheck = SumcheckProver<Flavor>(multivariate_n, transcript);
6265

@@ -66,7 +69,7 @@ TYPED_TEST(PartialEvaluationTests, TwoRoundsSpecial)
6669
FF expected_hi = v01 * (FF(1) - round_challenge_0) + v11 * round_challenge_0;
6770

6871
sumcheck.partially_evaluated_polynomials = typename Flavor::PartiallyEvaluatedMultivariates(multivariate_n);
69-
sumcheck.partially_evaluate(full_polynomials, multivariate_n, round_challenge_0);
72+
sumcheck.partially_evaluate(full_polynomials, 0, round_challenge_0);
7073

7174
auto& first_polynomial = sumcheck.partially_evaluated_polynomials.get_all()[0];
7275
EXPECT_EQ(first_polynomial[0], round_challenge_0);
@@ -75,14 +78,15 @@ TYPED_TEST(PartialEvaluationTests, TwoRoundsSpecial)
7578
FF round_challenge_1 = 2;
7679
FF expected_val = expected_lo * (FF(1) - round_challenge_1) + expected_hi * round_challenge_1;
7780

78-
sumcheck.partially_evaluate(sumcheck.partially_evaluated_polynomials, multivariate_n >> 1, round_challenge_1);
81+
sumcheck.partially_evaluate(sumcheck.partially_evaluated_polynomials, 1, round_challenge_1);
7982
EXPECT_EQ(first_polynomial[0], expected_val);
8083
}
8184

8285
TYPED_TEST(PartialEvaluationTests, TwoRoundsGeneric)
8386
{
8487
using Flavor = TypeParam;
8588
using FF = typename Flavor::FF;
89+
using Polynomial = typename Flavor::Polynomial;
8690
using Transcript = typename Flavor::Transcript;
8791

8892
const size_t multivariate_d(2);
@@ -93,9 +97,10 @@ TYPED_TEST(PartialEvaluationTests, TwoRoundsGeneric)
9397
FF v01 = FF::random_element();
9498
FF v11 = FF::random_element();
9599

96-
std::array<FF, 4> f0 = { v00, v10, v01, v11 };
100+
Polynomial f0(4);
101+
f0.template copy_vector<FF>({ v00, v10, v01, v11 });
97102

98-
auto full_polynomials = std::array<std::span<FF>, 1>({ f0 });
103+
auto full_polynomials = std::array<Polynomial, 1>({ f0 });
99104
auto transcript = Transcript::prover_init_empty();
100105
auto sumcheck = SumcheckProver<Flavor>(multivariate_n, transcript);
101106

@@ -104,15 +109,15 @@ TYPED_TEST(PartialEvaluationTests, TwoRoundsGeneric)
104109
FF expected_hi = v01 * (FF(1) - round_challenge_0) + v11 * round_challenge_0;
105110

106111
sumcheck.partially_evaluated_polynomials = typename Flavor::PartiallyEvaluatedMultivariates(multivariate_n);
107-
sumcheck.partially_evaluate(full_polynomials, multivariate_n, round_challenge_0);
112+
sumcheck.partially_evaluate(full_polynomials, 0, round_challenge_0);
108113
auto& first_polynomial = sumcheck.partially_evaluated_polynomials.get_all()[0];
109114

110115
EXPECT_EQ(first_polynomial[0], expected_lo);
111116
EXPECT_EQ(first_polynomial[1], expected_hi);
112117

113118
FF round_challenge_1 = FF::random_element();
114119
FF expected_val = expected_lo * (FF(1) - round_challenge_1) + expected_hi * round_challenge_1;
115-
sumcheck.partially_evaluate(sumcheck.partially_evaluated_polynomials, multivariate_n >> 1, round_challenge_1);
120+
sumcheck.partially_evaluate(sumcheck.partially_evaluated_polynomials, 1, round_challenge_1);
116121
EXPECT_EQ(first_polynomial[0], expected_val);
117122
}
118123

@@ -142,6 +147,7 @@ TYPED_TEST(PartialEvaluationTests, ThreeRoundsSpecial)
142147
{
143148
using Flavor = TypeParam;
144149
using FF = typename Flavor::FF;
150+
using Polynomial = typename Flavor::Polynomial;
145151
using Transcript = typename Flavor::Transcript;
146152

147153
const size_t multivariate_d(3);
@@ -156,9 +162,10 @@ TYPED_TEST(PartialEvaluationTests, ThreeRoundsSpecial)
156162
FF v011 = 7;
157163
FF v111 = 8;
158164

159-
std::array<FF, 8> f0 = { v000, v100, v010, v110, v001, v101, v011, v111 };
165+
Polynomial f0(8);
166+
f0.template copy_vector<FF>({ v000, v100, v010, v110, v001, v101, v011, v111 });
160167

161-
auto full_polynomials = std::array<std::span<FF>, 1>({ f0 });
168+
auto full_polynomials = std::array<Polynomial, 1>({ f0 });
162169
auto transcript = Transcript::prover_init_empty();
163170
auto sumcheck = SumcheckProver<Flavor>(multivariate_n, transcript);
164171

@@ -169,7 +176,7 @@ TYPED_TEST(PartialEvaluationTests, ThreeRoundsSpecial)
169176
FF expected_q4 = v011 * (FF(1) - round_challenge_0) + v111 * round_challenge_0; // 8
170177

171178
sumcheck.partially_evaluated_polynomials = typename Flavor::PartiallyEvaluatedMultivariates(multivariate_n);
172-
sumcheck.partially_evaluate(full_polynomials, multivariate_n, round_challenge_0);
179+
sumcheck.partially_evaluate(full_polynomials, 0, round_challenge_0);
173180

174181
auto& first_polynomial = sumcheck.partially_evaluated_polynomials.get_all()[0];
175182
EXPECT_EQ(first_polynomial[0], expected_q1);
@@ -181,20 +188,21 @@ TYPED_TEST(PartialEvaluationTests, ThreeRoundsSpecial)
181188
FF expected_lo = expected_q1 * (FF(1) - round_challenge_1) + expected_q2 * round_challenge_1; // 6
182189
FF expected_hi = expected_q3 * (FF(1) - round_challenge_1) + expected_q4 * round_challenge_1; // 10
183190

184-
sumcheck.partially_evaluate(sumcheck.partially_evaluated_polynomials, multivariate_n >> 1, round_challenge_1);
191+
sumcheck.partially_evaluate(sumcheck.partially_evaluated_polynomials, 0, round_challenge_1);
185192
EXPECT_EQ(first_polynomial[0], expected_lo);
186193
EXPECT_EQ(first_polynomial[1], expected_hi);
187194

188195
FF round_challenge_2 = 3;
189196
FF expected_val = expected_lo * (FF(1) - round_challenge_2) + expected_hi * round_challenge_2; // 18
190-
sumcheck.partially_evaluate(sumcheck.partially_evaluated_polynomials, multivariate_n >> 2, round_challenge_2);
197+
sumcheck.partially_evaluate(sumcheck.partially_evaluated_polynomials, 1, round_challenge_2);
191198
EXPECT_EQ(first_polynomial[0], expected_val);
192199
}
193200

194201
TYPED_TEST(PartialEvaluationTests, ThreeRoundsGeneric)
195202
{
196203
using Flavor = TypeParam;
197204
using FF = typename Flavor::FF;
205+
using Polynomial = typename Flavor::Polynomial;
198206
using Transcript = typename Flavor::Transcript;
199207

200208
const size_t multivariate_d(3);
@@ -209,9 +217,10 @@ TYPED_TEST(PartialEvaluationTests, ThreeRoundsGeneric)
209217
FF v011 = FF::random_element();
210218
FF v111 = FF::random_element();
211219

212-
std::array<FF, 8> f0 = { v000, v100, v010, v110, v001, v101, v011, v111 };
220+
Polynomial f0(8);
221+
f0.template copy_vector<FF>({ v000, v100, v010, v110, v001, v101, v011, v111 });
213222

214-
auto full_polynomials = std::array<std::span<FF>, 1>({ f0 });
223+
auto full_polynomials = std::array<Polynomial, 1>({ f0 });
215224
auto transcript = Transcript::prover_init_empty();
216225
auto sumcheck = SumcheckProver<Flavor>(multivariate_n, transcript);
217226

@@ -223,7 +232,7 @@ TYPED_TEST(PartialEvaluationTests, ThreeRoundsGeneric)
223232

224233
sumcheck.partially_evaluated_polynomials = typename Flavor::PartiallyEvaluatedMultivariates(multivariate_n);
225234
auto& first_polynomial = sumcheck.partially_evaluated_polynomials.get_all()[0];
226-
sumcheck.partially_evaluate(full_polynomials, multivariate_n, round_challenge_0);
235+
sumcheck.partially_evaluate(full_polynomials, 0, round_challenge_0);
227236

228237
EXPECT_EQ(first_polynomial[0], expected_q1);
229238
EXPECT_EQ(first_polynomial[1], expected_q2);
@@ -234,20 +243,21 @@ TYPED_TEST(PartialEvaluationTests, ThreeRoundsGeneric)
234243
FF expected_lo = expected_q1 * (FF(1) - round_challenge_1) + expected_q2 * round_challenge_1;
235244
FF expected_hi = expected_q3 * (FF(1) - round_challenge_1) + expected_q4 * round_challenge_1;
236245

237-
sumcheck.partially_evaluate(sumcheck.partially_evaluated_polynomials, multivariate_n >> 1, round_challenge_1);
246+
sumcheck.partially_evaluate(sumcheck.partially_evaluated_polynomials, 0, round_challenge_1);
238247
EXPECT_EQ(first_polynomial[0], expected_lo);
239248
EXPECT_EQ(first_polynomial[1], expected_hi);
240249

241250
FF round_challenge_2 = FF::random_element();
242251
FF expected_val = expected_lo * (FF(1) - round_challenge_2) + expected_hi * round_challenge_2;
243-
sumcheck.partially_evaluate(sumcheck.partially_evaluated_polynomials, multivariate_n >> 2, round_challenge_2);
252+
sumcheck.partially_evaluate(sumcheck.partially_evaluated_polynomials, 1, round_challenge_2);
244253
EXPECT_EQ(first_polynomial[0], expected_val);
245254
}
246255

247256
TYPED_TEST(PartialEvaluationTests, ThreeRoundsGenericMultiplePolys)
248257
{
249258
using Flavor = TypeParam;
250259
using FF = typename Flavor::FF;
260+
using Polynomial = typename Flavor::Polynomial;
251261
using Transcript = typename Flavor::Transcript;
252262

253263
const size_t multivariate_d(3);
@@ -271,11 +281,12 @@ TYPED_TEST(PartialEvaluationTests, ThreeRoundsGenericMultiplePolys)
271281
v011[i] = FF::random_element();
272282
v111[i] = FF::random_element();
273283
}
274-
std::array<FF, 8> f0 = { v000[0], v100[0], v010[0], v110[0], v001[0], v101[0], v011[0], v111[0] };
275-
std::array<FF, 8> f1 = { v000[1], v100[1], v010[1], v110[1], v001[1], v101[1], v011[1], v111[1] };
276-
std::array<FF, 8> f2 = { v000[2], v100[2], v010[2], v110[2], v001[2], v101[2], v011[2], v111[2] };
284+
Polynomial f0(8), f1(8), f2(8);
285+
f0.template copy_vector<FF>({ v000[0], v100[0], v010[0], v110[0], v001[0], v101[0], v011[0], v111[0] });
286+
f1.template copy_vector<FF>({ v000[1], v100[1], v010[1], v110[1], v001[1], v101[1], v011[1], v111[1] });
287+
f2.template copy_vector<FF>({ v000[2], v100[2], v010[2], v110[2], v001[2], v101[2], v011[2], v111[2] });
277288

278-
auto full_polynomials = std::array<std::span<FF>, 3>{ f0, f1, f2 };
289+
auto full_polynomials = std::array<Polynomial, 3>{ f0, f1, f2 };
279290
auto transcript = Transcript::prover_init_empty();
280291
auto sumcheck = SumcheckProver<Flavor>(multivariate_n, transcript);
281292

@@ -292,7 +303,7 @@ TYPED_TEST(PartialEvaluationTests, ThreeRoundsGenericMultiplePolys)
292303
}
293304

294305
sumcheck.partially_evaluated_polynomials = typename Flavor::PartiallyEvaluatedMultivariates(multivariate_n);
295-
sumcheck.partially_evaluate(full_polynomials, multivariate_n, round_challenge_0);
306+
sumcheck.partially_evaluate(full_polynomials, 0, round_challenge_0);
296307
auto polynomial_get_all = sumcheck.partially_evaluated_polynomials.get_all();
297308
for (size_t i = 0; i < 3; i++) {
298309
EXPECT_EQ((polynomial_get_all[i])[0], expected_q1[i]);
@@ -308,7 +319,7 @@ TYPED_TEST(PartialEvaluationTests, ThreeRoundsGenericMultiplePolys)
308319
expected_lo[i] = expected_q1[i] * (FF(1) - round_challenge_1) + expected_q2[i] * round_challenge_1;
309320
expected_hi[i] = expected_q3[i] * (FF(1) - round_challenge_1) + expected_q4[i] * round_challenge_1;
310321
}
311-
sumcheck.partially_evaluate(sumcheck.partially_evaluated_polynomials, multivariate_n >> 1, round_challenge_1);
322+
sumcheck.partially_evaluate(sumcheck.partially_evaluated_polynomials, 0, round_challenge_1);
312323
for (size_t i = 0; i < 3; i++) {
313324
EXPECT_EQ((polynomial_get_all[i])[0], expected_lo[i]);
314325
EXPECT_EQ((polynomial_get_all[i])[1], expected_hi[i]);
@@ -318,7 +329,7 @@ TYPED_TEST(PartialEvaluationTests, ThreeRoundsGenericMultiplePolys)
318329
for (size_t i = 0; i < 3; i++) {
319330
expected_val[i] = expected_lo[i] * (FF(1) - round_challenge_2) + expected_hi[i] * round_challenge_2;
320331
}
321-
sumcheck.partially_evaluate(sumcheck.partially_evaluated_polynomials, multivariate_n >> 2, round_challenge_2);
332+
sumcheck.partially_evaluate(sumcheck.partially_evaluated_polynomials, 1, round_challenge_2);
322333
for (size_t i = 0; i < 3; i++) {
323334
EXPECT_EQ((polynomial_get_all[i])[0], expected_val[i]);
324335
}

0 commit comments

Comments
 (0)