17template <
typename Commitment,
typename FF>
18static Commitment batch_mul_native(
const std::vector<Commitment>& _points,
const std::vector<FF>& _scalars)
20 std::vector<Commitment> points;
21 std::vector<FF> scalars;
22 for (
size_t i = 0; i < _points.size(); ++i) {
23 const auto& point = _points[i];
24 const auto& scalar = _scalars[i];
27 if (!scalar.is_zero() && !point.is_point_at_infinity() && !point.y.is_zero()) {
28 points.emplace_back(point);
29 scalars.emplace_back(scalar);
34 return Commitment::infinity();
37 auto result = points[0] * scalars[0];
38 for (
size_t idx = 1; idx < scalars.size(); ++idx) {
39 result = result + points[idx] * scalars[idx];
48template <
typename FF>
static FF linear_combination(
const std::vector<FF>& as,
const std::vector<FF>& bs)
50 FF result = as[0] * bs[0];
51 for (
size_t idx = 1; idx < as.size(); ++idx) {
52 result += as[idx] * bs[idx];
Entry point for Barretenberg command-line interface.