pub trait VariableBaseMSM: ScalarMul {
    // Provided methods
    fn msm_unchecked(
        bases: &[Self::MulBase],
        scalars: &[Self::ScalarField],
    ) -> Self { ... }
    fn msm(
        bases: &[Self::MulBase],
        scalars: &[Self::ScalarField],
    ) -> Result<Self, usize> { ... }
    fn msm_bigint(
        bases: &[Self::MulBase],
        bigints: &[<Self::ScalarField as PrimeField>::BigInt],
    ) -> Self { ... }
    fn msm_chunks<I, J>(bases_stream: &J, scalars_stream: &I) -> Self
       where I: Iterable + ?Sized,
             I::Item: Borrow<Self::ScalarField>,
             J: Iterable,
             J::Item: Borrow<Self::MulBase> { ... }
}Provided Methods§
Sourcefn msm_unchecked(bases: &[Self::MulBase], scalars: &[Self::ScalarField]) -> Self
 
fn msm_unchecked(bases: &[Self::MulBase], scalars: &[Self::ScalarField]) -> Self
Computes an inner product between the PrimeField elements in scalars
and the corresponding group elements in bases.
If the elements have different length, it will chop the slices to the
shortest length between scalars.len() and bases.len().
Reference: VariableBaseMSM::msm
Sourcefn msm(
    bases: &[Self::MulBase],
    scalars: &[Self::ScalarField],
) -> Result<Self, usize>
 
fn msm( bases: &[Self::MulBase], scalars: &[Self::ScalarField], ) -> Result<Self, usize>
Performs multi-scalar multiplication.
§Warning
This method checks that bases and scalars have the same length.
If they are unequal, it returns an error containing
the shortest length over which the MSM can be performed.
Sourcefn msm_bigint(
    bases: &[Self::MulBase],
    bigints: &[<Self::ScalarField as PrimeField>::BigInt],
) -> Self
 
fn msm_bigint( bases: &[Self::MulBase], bigints: &[<Self::ScalarField as PrimeField>::BigInt], ) -> Self
Optimized implementation of multi-scalar multiplication.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.