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

# Struct EmbeddedCurvePoint

Module: `noir_aztec::protocol::point`

```rust
pub struct EmbeddedCurvePoint {
    pub x: Field,
    pub y: Field,
}
```

A point on the embedded elliptic curve By definition, the base field of the embedded curve is the scalar field of the proof system curve, i.e the Noir Field. x and y denotes the Weierstrass coordinates of the point.

## Fields

```rust
x: Field
```

```rust
y: Field
```

## Implementations

```rust
impl EmbeddedCurvePoint
```

```rust
pub fn new(x: Field, y: Field) -> Self
```

Create a new point using the provided (x, y) pair

```rust
pub fn double(self) -> Self
```

Elliptic curve point doubling operation returns the doubled point of a point P, i.e P+P

```rust
pub fn point_at_infinity() -> Self
```

Returns the null element of the curve; 'the point at infinity'

```rust
pub fn generator() -> Self
```

Returns the curve's generator point.

```rust
pub fn is_infinite(self) -> bool
```

True if this point is the point at infinity

## Trait implementations

```rust
impl Add for EmbeddedCurvePoint
```

```rust
pub fn add(self, other: Self) -> Self
```

Adds two points P+Q, using the curve addition formula, and also handles point at infinity

```rust
impl Eq for EmbeddedCurvePoint
```

```rust
pub fn eq(self, b: Self) -> bool
```

Checks whether two points are equal

```rust
impl Hash for EmbeddedCurvePoint
```

```rust
pub fn hash<H>(self, state: &mut H)
where
    H: Hasher
```

```rust
impl Neg for EmbeddedCurvePoint
```

```rust
pub fn neg(self) -> Self
```

Negates a point P, i.e returns -P, by negating the y coordinate. If the point is at infinity, then the result is also at infinity.

```rust
impl Sub for EmbeddedCurvePoint
```

```rust
pub fn sub(self, other: Self) -> Self
```

Points subtraction operation, using addition and negation
