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

# NAME

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

# VERSION

Version 0.69

# 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

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.