pub trait ScalarMul: Group + Add<Self::MulBase, Output = Self> + AddAssign<Self::MulBase> + for<'a> Add<&'a Self::MulBase, Output = Self> + for<'a> AddAssign<&'a Self::MulBase> + Sub<Self::MulBase, Output = Self> + SubAssign<Self::MulBase> + for<'a> Sub<&'a Self::MulBase, Output = Self> + for<'a> SubAssign<&'a Self::MulBase> + From<Self::MulBase> {
    type MulBase: Send + Sync + Copy + Eq + Hash + Mul<Self::ScalarField, Output = Self> + for<'a> Mul<&'a Self::ScalarField, Output = Self> + Neg<Output = Self::MulBase>;

    const NEGATION_IS_CHEAP: bool;

    // Required method
    fn batch_convert_to_mul_base(bases: &[Self]) -> Vec<Self::MulBase>;
}

Required Associated Types§

source

type MulBase: Send + Sync + Copy + Eq + Hash + Mul<Self::ScalarField, Output = Self> + for<'a> Mul<&'a Self::ScalarField, Output = Self> + Neg<Output = Self::MulBase>

Required Associated Constants§

Required Methods§

Implementors§

source§

impl<P: SWCurveConfig> ScalarMul for ark_ec::models::short_weierstrass::Projective<P>

source§

impl<P: TECurveConfig> ScalarMul for ark_ec::models::twisted_edwards::Projective<P>

source§

impl<P: Pairing> ScalarMul for PairingOutput<P>

§

type MulBase = PairingOutput<P>

source§

const NEGATION_IS_CHEAP: bool = <P::TargetField>::INVERSE_IS_FAST