@@ -199,7 +199,7 @@ template <typename Curve>
199
199
void compute_wnaf_states (uint64_t * point_schedule,
200
200
bool * input_skew_table,
201
201
uint64_t * round_counts,
202
- const typename Curve::ScalarField* scalars,
202
+ const std::span< const typename Curve::ScalarField> scalars,
203
203
const size_t num_initial_points)
204
204
{
205
205
using Fr = typename Curve::ScalarField;
@@ -857,7 +857,7 @@ typename Curve::Element evaluate_pippenger_rounds(pippenger_runtime_state<Curve>
857
857
858
858
template <typename Curve>
859
859
typename Curve::Element pippenger_internal (typename Curve::AffineElement* points,
860
- typename Curve::ScalarField* scalars,
860
+ std::span< const typename Curve::ScalarField> scalars,
861
861
const size_t num_initial_points,
862
862
pippenger_runtime_state<Curve>& state,
863
863
bool handle_edge_cases)
@@ -871,7 +871,7 @@ typename Curve::Element pippenger_internal(typename Curve::AffineElement* points
871
871
}
872
872
873
873
template <typename Curve>
874
- typename Curve::Element pippenger (typename Curve::ScalarField* scalars,
874
+ typename Curve::Element pippenger (std::span< const typename Curve::ScalarField> scalars,
875
875
typename Curve::AffineElement* points,
876
876
const size_t num_initial_points,
877
877
pippenger_runtime_state<Curve>& state,
@@ -910,10 +910,9 @@ typename Curve::Element pippenger(typename Curve::ScalarField* scalars,
910
910
const auto num_slice_points = static_cast <size_t >(1ULL << slice_bits);
911
911
912
912
Element result = pippenger_internal (points, scalars, num_slice_points, state, handle_edge_cases);
913
-
914
913
if (num_slice_points != num_initial_points) {
915
914
const uint64_t leftover_points = num_initial_points - num_slice_points;
916
- return result + pippenger (scalars + num_slice_points,
915
+ return result + pippenger (scalars. subspan ( num_slice_points) ,
917
916
points + static_cast <size_t >(num_slice_points * 2 ),
918
917
static_cast <size_t >(leftover_points),
919
918
state,
@@ -938,7 +937,7 @@ typename Curve::Element pippenger(typename Curve::ScalarField* scalars,
938
937
*
939
938
**/
940
939
template <typename Curve>
941
- typename Curve::Element pippenger_unsafe (typename Curve::ScalarField* scalars,
940
+ typename Curve::Element pippenger_unsafe (std::span< const typename Curve::ScalarField> scalars,
942
941
typename Curve::AffineElement* points,
943
942
const size_t num_initial_points,
944
943
pippenger_runtime_state<Curve>& state)
@@ -947,10 +946,11 @@ typename Curve::Element pippenger_unsafe(typename Curve::ScalarField* scalars,
947
946
}
948
947
949
948
template <typename Curve>
950
- typename Curve::Element pippenger_without_endomorphism_basis_points (typename Curve::ScalarField* scalars,
951
- typename Curve::AffineElement* points,
952
- const size_t num_initial_points,
953
- pippenger_runtime_state<Curve>& state)
949
+ typename Curve::Element pippenger_without_endomorphism_basis_points (
950
+ std::span<const typename Curve::ScalarField> scalars,
951
+ typename Curve::AffineElement* points,
952
+ const size_t num_initial_points,
953
+ pippenger_runtime_state<Curve>& state)
954
954
{
955
955
std::vector<typename Curve::AffineElement> G_mod (num_initial_points * 2 );
956
956
bb::scalar_multiplication::generate_pippenger_point_table<Curve>(points, &G_mod[0 ], num_initial_points);
@@ -978,7 +978,7 @@ template void evaluate_addition_chains<curve::BN254>(affine_product_runtime_stat
978
978
const size_t max_bucket_bits,
979
979
bool handle_edge_cases);
980
980
template curve::BN254::Element pippenger_internal<curve::BN254>(curve::BN254::AffineElement* points,
981
- curve::BN254::ScalarField* scalars,
981
+ std::span< const curve::BN254::ScalarField> scalars,
982
982
const size_t num_initial_points,
983
983
pippenger_runtime_state<curve::BN254>& state,
984
984
bool handle_edge_cases);
@@ -992,19 +992,19 @@ template curve::BN254::AffineElement* reduce_buckets<curve::BN254>(affine_produc
992
992
bool first_round = true ,
993
993
bool handle_edge_cases = false );
994
994
995
- template curve::BN254::Element pippenger<curve::BN254>(curve::BN254::ScalarField* scalars,
995
+ template curve::BN254::Element pippenger<curve::BN254>(std::span< const curve::BN254::ScalarField> scalars,
996
996
curve::BN254::AffineElement* points,
997
997
const size_t num_points,
998
998
pippenger_runtime_state<curve::BN254>& state,
999
999
bool handle_edge_cases = true );
1000
1000
1001
- template curve::BN254::Element pippenger_unsafe<curve::BN254>(curve::BN254::ScalarField* scalars,
1001
+ template curve::BN254::Element pippenger_unsafe<curve::BN254>(std::span< const curve::BN254::ScalarField> scalars,
1002
1002
curve::BN254::AffineElement* points,
1003
1003
const size_t num_initial_points,
1004
1004
pippenger_runtime_state<curve::BN254>& state);
1005
1005
1006
1006
template curve::BN254::Element pippenger_without_endomorphism_basis_points<curve::BN254>(
1007
- curve::BN254::ScalarField* scalars,
1007
+ std::span< const curve::BN254::ScalarField> scalars,
1008
1008
curve::BN254::AffineElement* points,
1009
1009
const size_t num_initial_points,
1010
1010
pippenger_runtime_state<curve::BN254>& state);
@@ -1028,11 +1028,12 @@ template void add_affine_points_with_edge_cases<curve::Grumpkin>(curve::Grumpkin
1028
1028
template void evaluate_addition_chains<curve::Grumpkin>(affine_product_runtime_state<curve::Grumpkin>& state,
1029
1029
const size_t max_bucket_bits,
1030
1030
bool handle_edge_cases);
1031
- template curve::Grumpkin::Element pippenger_internal<curve::Grumpkin>(curve::Grumpkin::AffineElement* points,
1032
- curve::Grumpkin::ScalarField* scalars,
1033
- const size_t num_initial_points,
1034
- pippenger_runtime_state<curve::Grumpkin>& state,
1035
- bool handle_edge_cases);
1031
+ template curve::Grumpkin::Element pippenger_internal<curve::Grumpkin>(
1032
+ curve::Grumpkin::AffineElement* points,
1033
+ std::span<const curve::Grumpkin::ScalarField> scalars,
1034
+ const size_t num_initial_points,
1035
+ pippenger_runtime_state<curve::Grumpkin>& state,
1036
+ bool handle_edge_cases);
1036
1037
1037
1038
template curve::Grumpkin::Element evaluate_pippenger_rounds<curve::Grumpkin>(
1038
1039
pippenger_runtime_state<curve::Grumpkin>& state,
@@ -1043,19 +1044,20 @@ template curve::Grumpkin::Element evaluate_pippenger_rounds<curve::Grumpkin>(
1043
1044
template curve::Grumpkin::AffineElement* reduce_buckets<curve::Grumpkin>(
1044
1045
affine_product_runtime_state<curve::Grumpkin>& state, bool first_round = true , bool handle_edge_cases = false );
1045
1046
1046
- template curve::Grumpkin::Element pippenger<curve::Grumpkin>(curve::Grumpkin::ScalarField* scalars,
1047
+ template curve::Grumpkin::Element pippenger<curve::Grumpkin>(std::span< const curve::Grumpkin::ScalarField> scalars,
1047
1048
curve::Grumpkin::AffineElement* points,
1048
1049
const size_t num_points,
1049
1050
pippenger_runtime_state<curve::Grumpkin>& state,
1050
1051
bool handle_edge_cases = true );
1051
1052
1052
- template curve::Grumpkin::Element pippenger_unsafe<curve::Grumpkin>(curve::Grumpkin::ScalarField* scalars,
1053
- curve::Grumpkin::AffineElement* points,
1054
- const size_t num_initial_points,
1055
- pippenger_runtime_state<curve::Grumpkin>& state);
1053
+ template curve::Grumpkin::Element pippenger_unsafe<curve::Grumpkin>(
1054
+ std::span<const curve::Grumpkin::ScalarField> scalars,
1055
+ curve::Grumpkin::AffineElement* points,
1056
+ const size_t num_initial_points,
1057
+ pippenger_runtime_state<curve::Grumpkin>& state);
1056
1058
1057
1059
template curve::Grumpkin::Element pippenger_without_endomorphism_basis_points<curve::Grumpkin>(
1058
- curve::Grumpkin::ScalarField* scalars,
1060
+ std::span< const curve::Grumpkin::ScalarField> scalars,
1059
1061
curve::Grumpkin::AffineElement* points,
1060
1062
const size_t num_initial_points,
1061
1063
pippenger_runtime_state<curve::Grumpkin>& state);
0 commit comments