From 664293fa20c52e01fbc7d53f0b66e56c697a704e Mon Sep 17 00:00:00 2001 From: lucasxia01 Date: Wed, 9 Oct 2024 05:53:24 +0000 Subject: [PATCH] wip attempt at using polynomial spans in pippenger --- .../scalar_multiplication.cpp | 16 ++++++++-------- .../scalar_multiplication.hpp | 7 ++++--- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.cpp b/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.cpp index b4a3866d2d0..d954f626373 100644 --- a/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.cpp +++ b/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.cpp @@ -201,7 +201,7 @@ template void compute_wnaf_states(uint64_t* point_schedule, bool* input_skew_table, uint64_t* round_counts, - const std::span scalars, + PolynomialSpan scalars, const size_t num_initial_points) { using Fr = typename Curve::ScalarField; @@ -876,7 +876,7 @@ typename Curve::Element evaluate_pippenger_rounds(pippenger_runtime_state template typename Curve::Element pippenger_internal(std::span points, - std::span scalars, + PolynomialSpan scalars, const size_t num_initial_points, pippenger_runtime_state& state, bool handle_edge_cases) @@ -890,7 +890,7 @@ typename Curve::Element pippenger_internal(std::span -typename Curve::Element pippenger(std::span scalars, +typename Curve::Element pippenger(PolynomialSpan scalars, std::span points, pippenger_runtime_state& state, bool handle_edge_cases) @@ -943,7 +943,7 @@ Pippenger above can behavely poorly with numbers with many bits set.*/ template typename Curve::Element pippenger_unsafe_optimized_for_non_dyadic_polys( - std::span scalars, + PolynomialSpan scalars, std::span points, pippenger_runtime_state& state) { @@ -977,7 +977,7 @@ typename Curve::Element pippenger_unsafe_optimized_for_non_dyadic_polys( * **/ template -typename Curve::Element pippenger_unsafe(std::span scalars, +typename Curve::Element pippenger_unsafe(PolynomialSpan scalars, std::span points, pippenger_runtime_state& state) { @@ -1017,7 +1017,7 @@ template void evaluate_addition_chains(affine_product_runtime_stat const size_t max_bucket_bits, bool handle_edge_cases); template curve::BN254::Element pippenger_internal(std::span points, - std::span scalars, + PolynomialSpan scalars, const size_t num_initial_points, pippenger_runtime_state& state, bool handle_edge_cases); @@ -1032,12 +1032,12 @@ template curve::BN254::AffineElement* reduce_buckets(affine_produc bool first_round = true, bool handle_edge_cases = false); -template curve::BN254::Element pippenger(std::span scalars, +template curve::BN254::Element pippenger(PolynomialSpan scalars, std::span points, pippenger_runtime_state& state, bool handle_edge_cases = true); -template curve::BN254::Element pippenger_unsafe(std::span scalars, +template curve::BN254::Element pippenger_unsafe(PolynomialSpan scalars, std::span points, pippenger_runtime_state& state); diff --git a/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.hpp b/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.hpp index 3dffd18474f..8c9554ec297 100644 --- a/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.hpp +++ b/barretenberg/cpp/src/barretenberg/ecc/scalar_multiplication/scalar_multiplication.hpp @@ -3,6 +3,7 @@ #include "./runtime_states.hpp" #include "barretenberg/ecc/curves/bn254/bn254.hpp" #include "barretenberg/ecc/curves/grumpkin/grumpkin.hpp" +#include "barretenberg/polynomials/polynomial.hpp" #include #include @@ -135,7 +136,7 @@ void evaluate_addition_chains(affine_product_runtime_state& state, bool handle_edge_cases); template typename Curve::Element pippenger_internal(typename Curve::AffineElement* points, - std::span scalars, + PolynomialSpan scalars, size_t num_initial_points, pippenger_runtime_state& state, bool handle_edge_cases); @@ -151,12 +152,12 @@ typename Curve::AffineElement* reduce_buckets(affine_product_runtime_state -typename Curve::Element pippenger(std::span scalars, +typename Curve::Element pippenger(PolynomialSpan scalars, std::span points, pippenger_runtime_state& state, bool handle_edge_cases = true); template -typename Curve::Element pippenger_unsafe(std::span scalars, +typename Curve::Element pippenger_unsafe(PolynomialSpan scalars, std::span points, pippenger_runtime_state& state);