> Aztec.nr API reference, v6.0.0 (mainnet and testnet). Index: https://docs.aztec.network/aztec-nr-api/v6.0.0/llms.txt

# Function multi_scalar_mul

Module: `std::embedded_curve_ops`

```rust
pub fn multi_scalar_mul<let N: u32>(
    points: [EmbeddedCurvePoint; N],
    scalars: [EmbeddedCurveScalar; N],
) -> EmbeddedCurvePoint
```

Computes a multi scalar multiplication over the embedded curve. For bn254, We have Grumpkin.

The embedded curve being used is decided by the underlying proof system.

IMPORTANT: Prefer `multi_scalar_mul()` over repeated `embedded_curve_add()` for adding multiple points. This is significantly more efficient. For adding exactly 2 points, use `embedded_curve_add()` directly.
