---
name: "Math::Prime::Util::ECProjectivePoint"
section: "3pm"
platform: "linux"
package: "libmath-prime-util-perl"
version: "0.73-2+b5"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Math::Prime::Util::ECProjectivePoint"
---

# Math::Prime::Util::ECProjectivePoint(3pm)

Elliptic curve operations for projective points

## NAME

Math::Prime::Util::ECProjectivePoint - Elliptic curve operations for projective points

## VERSION

Version 0.73

## SYNOPSIS

```
  # Create a point on a curve (a,b,n) with coordinates 0,1
  my $ECP = Math::Prime::Util::ECProjectivePoint->new($c, $n, 0, 1);
  # scalar multiplication by $k.
  $ECP->mul($k);
  # add two points on the same curve
  $ECP->add($ECP2);
  say "P = O" if $ECP->is_infinity();
```

## DESCRIPTION

This really should just be in Math::EllipticCurve.

To write.

## FUNCTIONS

### new

```
  $point = Math::Prime::Util::ECProjectivePoint->new(c, n, x, z);
```

Returns a new point on the curve defined by the Montgomery parameter c.

### c

### n

Returns the `"c"`, `"d"`, or `"n"` values that describe the curve.

### d

Returns the precalculated value of `"int( (c + 2) / 4 )"`.

### x

### z

Returns the `"x"` or `"z"` values that define the point on the curve.

### f

Returns a possible factor found after "normalize".

### add

Takes another point on the same curve as an argument and adds it this point.

### double

Double the current point on the curve.

### mul

Takes an integer and performs scalar multiplication of the point.

### is\_infinity

Returns true if the point is (0,1), which is the point at infinity for the affine coordinates.

### copy

Returns a copy of the point.

### normalize

Performs an extended GCD operation to make `"z=1"`.  If a factor of `"n"` is found it is put in `"f"`.

## SEE ALSO

Math::EllipticCurve::Prime

This really should just be in a Math::EllipticCurve module.

## AUTHORS

Dana Jacobsen \<dana@acm.org\>

## COPYRIGHT

Copyright 2012-2013 by Dana Jacobsen \<dana@acm.org\>

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
