Trait snarkvm_curves::traits::group::ProjectiveCurve
source · pub trait ProjectiveCurve: CanonicalSerialize + CanonicalDeserialize + Copy + Clone + Debug + Display + Default + FromBytes + Send + Sync + 'static + Eq + Hash + Neg<Output = Self> + Uniform + Zero + Add<Self, Output = Self> + Sub<Self, Output = Self> + Mul<Self::ScalarField, Output = Self> + AddAssign<Self> + SubAssign<Self> + MulAssign<Self::ScalarField> + for<'a> Add<&'a Self, Output = Self> + for<'a> Sub<&'a Self, Output = Self> + for<'a> AddAssign<&'a Self> + for<'a> SubAssign<&'a Self> + PartialEq<Self::Affine> + Sized + ToBytes + Sum + From<Self::Affine> {
type Affine: AffineCurve<Projective = Self, ScalarField = Self::ScalarField> + From<Self> + Into<Self>;
type BaseField: Field;
type ScalarField: PrimeField + SquareRootField + Into<<Self::ScalarField as PrimeField>::BigInteger>;
fn prime_subgroup_generator() -> Self;
fn batch_normalization(v: &mut [Self]);
fn is_normalized(&self) -> bool;
fn add_assign_mixed(&mut self, other: &Self::Affine);
fn double(&self) -> Self;
fn double_in_place(&mut self);
fn to_affine(&self) -> Self::Affine;
fn batch_normalization_into_affine(v: Vec<Self>) -> Vec<Self::Affine> { ... }
fn add_mixed(&self, other: &Self::Affine) -> Self { ... }
fn sub_assign_mixed(&mut self, other: &Self::Affine) { ... }
}
Expand description
Projective representation of an elliptic curve point guaranteed to be in the prime order subgroup.
Required Associated Types§
type Affine: AffineCurve<Projective = Self, ScalarField = Self::ScalarField> + From<Self> + Into<Self>
type BaseField: Field
type ScalarField: PrimeField + SquareRootField + Into<<Self::ScalarField as PrimeField>::BigInteger>
Required Methods§
sourcefn prime_subgroup_generator() -> Self
fn prime_subgroup_generator() -> Self
Returns a fixed generator of unknown exponent.
sourcefn batch_normalization(v: &mut [Self])
fn batch_normalization(v: &mut [Self])
Normalizes a slice of projective elements so that conversion to affine is cheap.
sourcefn is_normalized(&self) -> bool
fn is_normalized(&self) -> bool
Checks if the point is already “normalized” so that cheap affine conversion is possible.
sourcefn add_assign_mixed(&mut self, other: &Self::Affine)
fn add_assign_mixed(&mut self, other: &Self::Affine)
Adds an affine element to this element.
sourcefn double_in_place(&mut self)
fn double_in_place(&mut self)
Sets self := self + self
.
Provided Methods§
sourcefn batch_normalization_into_affine(v: Vec<Self>) -> Vec<Self::Affine>
fn batch_normalization_into_affine(v: Vec<Self>) -> Vec<Self::Affine>
Normalizes a slice of projective elements and outputs a vector containing the affine equivalents.
sourcefn sub_assign_mixed(&mut self, other: &Self::Affine)
fn sub_assign_mixed(&mut self, other: &Self::Affine)
Adds an affine element to this element.