# [−][src]Struct irmaseal_curve::G1Projective

pub struct G1Projective { /* fields omitted */ }

This is an element of $\mathbb{G}_1$ represented in the projective coordinate space.

## Methods

### impl G1Projective[src]

#### pub fn identity() -> G1Projective[src]

Returns the identity of the group: the point at infinity.

#### pub fn generator() -> G1Projective[src]

Returns a fixed generator of the group. See notes::design for how this generator is chosen.

#### pub fn double(&self) -> G1Projective[src]

Computes the doubling of this point.

#### pub fn add(&self, rhs: &G1Projective) -> G1Projective[src]

Adds this point to another point.

#### pub fn add_mixed(&self, rhs: &G1Affine) -> G1Projective[src]

Adds this point to another point in the affine model.

#### pub fn clear_cofactor(&self) -> G1Projective[src]

Multiplies by $(1 - z)$, where $z$ is the parameter of BLS12-381, which suffices to clear the cofactor and map elliptic curve points to elements of $\mathbb{G}_1$.

#### pub fn batch_normalize(p: &[Self], q: &mut [G1Affine])[src]

Converts a batch of G1Projective elements into G1Affine elements. This function will panic if p.len() != q.len().

#### pub fn is_identity(&self) -> Choice[src]

Returns true if this element is the identity (the point at infinity).

#### pub fn is_on_curve(&self) -> Choice[src]

Returns true if this point is on the curve. This should always return true unless an "unchecked" API was used.

## Trait Implementations

### impl<'a, 'b> Add<&'b G1Affine> for &'a G1Projective[src]

#### type Output = G1Projective

The resulting type after applying the + operator.

### impl<'b> Add<&'b G1Affine> for G1Projective[src]

#### type Output = G1Projective

The resulting type after applying the + operator.

### impl<'a, 'b> Add<&'b G1Projective> for &'a G1Affine[src]

#### type Output = G1Projective

The resulting type after applying the + operator.

### impl<'b> Add<&'b G1Projective> for G1Affine[src]

#### type Output = G1Projective

The resulting type after applying the + operator.

### impl<'a, 'b> Add<&'b G1Projective> for &'a G1Projective[src]

#### type Output = G1Projective

The resulting type after applying the + operator.

### impl<'b> Add<&'b G1Projective> for G1Projective[src]

#### type Output = G1Projective

The resulting type after applying the + operator.

### impl<'a> Add<G1Affine> for &'a G1Projective[src]

#### type Output = G1Projective

The resulting type after applying the + operator.

### impl Add<G1Affine> for G1Projective[src]

#### type Output = G1Projective

The resulting type after applying the + operator.

### impl<'a> Add<G1Projective> for &'a G1Affine[src]

#### type Output = G1Projective

The resulting type after applying the + operator.

### impl Add<G1Projective> for G1Affine[src]

#### type Output = G1Projective

The resulting type after applying the + operator.

### impl<'a> Add<G1Projective> for &'a G1Projective[src]

#### type Output = G1Projective

The resulting type after applying the + operator.

### impl Add<G1Projective> for G1Projective[src]

#### type Output = G1Projective

The resulting type after applying the + operator.

### impl<'a, 'b> Mul<&'b Scalar> for &'a G1Projective[src]

#### type Output = G1Projective

The resulting type after applying the * operator.

### impl<'b> Mul<&'b Scalar> for G1Projective[src]

#### type Output = G1Projective

The resulting type after applying the * operator.

### impl<'a> Mul<Scalar> for &'a G1Projective[src]

#### type Output = G1Projective

The resulting type after applying the * operator.

### impl Mul<Scalar> for G1Projective[src]

#### type Output = G1Projective

The resulting type after applying the * operator.

### impl<'a> Neg for &'a G1Projective[src]

#### type Output = G1Projective

The resulting type after applying the - operator.

### impl Neg for G1Projective[src]

#### type Output = G1Projective

The resulting type after applying the - operator.

### impl<'a, 'b> Sub<&'b G1Affine> for &'a G1Projective[src]

#### type Output = G1Projective

The resulting type after applying the - operator.

### impl<'b> Sub<&'b G1Affine> for G1Projective[src]

#### type Output = G1Projective

The resulting type after applying the - operator.

### impl<'a, 'b> Sub<&'b G1Projective> for &'a G1Affine[src]

#### type Output = G1Projective

The resulting type after applying the - operator.

### impl<'b> Sub<&'b G1Projective> for G1Affine[src]

#### type Output = G1Projective

The resulting type after applying the - operator.

### impl<'a, 'b> Sub<&'b G1Projective> for &'a G1Projective[src]

#### type Output = G1Projective

The resulting type after applying the - operator.

### impl<'b> Sub<&'b G1Projective> for G1Projective[src]

#### type Output = G1Projective

The resulting type after applying the - operator.

### impl<'a> Sub<G1Affine> for &'a G1Projective[src]

#### type Output = G1Projective

The resulting type after applying the - operator.

### impl Sub<G1Affine> for G1Projective[src]

#### type Output = G1Projective

The resulting type after applying the - operator.

### impl<'a> Sub<G1Projective> for &'a G1Affine[src]

#### type Output = G1Projective

The resulting type after applying the - operator.

### impl Sub<G1Projective> for G1Affine[src]

#### type Output = G1Projective

The resulting type after applying the - operator.

### impl<'a> Sub<G1Projective> for &'a G1Projective[src]

#### type Output = G1Projective

The resulting type after applying the - operator.

### impl Sub<G1Projective> for G1Projective[src]

#### type Output = G1Projective

The resulting type after applying the - operator.

## Blanket Implementations

### impl<T> ToOwned for T where    T: Clone, [src]

#### type Owned = T

The resulting type after obtaining ownership.

### impl<T, U> TryFrom<U> for T where    U: Into<T>, [src]

#### type Error = Infallible

The type returned in the event of a conversion error.

### impl<T, U> TryInto<U> for T where    U: TryFrom<T>, [src]

#### type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.