Basics
Creation
elliptic_curve Function
elliptic_curve([K::Field], x::Vector; check::Bool = true) -> EllipticCurve
Construct an elliptic curve with Weierstrass equation specified by the coefficients in x
, which must have either length 2 or 5.
Per default, it is checked whether the discriminant is non-zero. This can be disabled by setting check = false
.
Examples
julia> elliptic_curve(QQ, [1, 2, 3, 4, 5])
Elliptic curve with equation
y^2 + x*y + 3*y = x^3 + 2*x^2 + 4*x + 5
julia> elliptic_curve(GF(3), [1, 1])
Elliptic curve with equation
y^2 = x^3 + x + 1
elliptic_curve_from_j_invariant Function
elliptic_curve_from_j_invariant(j::FieldElem) -> EllipticCurve
Return an elliptic curve with the given
Examples
julia> K = GF(3)
Prime field of characteristic 3
julia> elliptic_curve_from_j_invariant(K(2))
Elliptic curve with equation
y^2 + x*y = x^3 + 1
Basic properties
base_field Method
base_field(E::EllipticCurve) -> Field
Return the base field over which E
is defined.
base_field(C::HypellCrv) -> Field
Return the base field over which C
is defined.
base_change Method
base_change(K::Field, E::EllipticCurve) -> EllipticCurve
Return the base change of the elliptic curve
base_change Method
base_change(f, E::EllipticCurve) -> EllipticCurve
Return the base change of the elliptic curve
coefficients Method
coefficients(E::EllipticCurve{T}) -> Tuple{T, T, T, T, T}
Return the Weierstrass coefficients of
a_invariants Method
a_invariants(E::EllipticCurve{T}) -> Tuple{T, T, T, T, T}
Return the Weierstrass coefficients of
b_invariants Method
b_invariants(E::EllipticCurve{T}) -> Tuple{T, T, T, T}
Return the b-invariants of
c_invariants Method
c_invariants(E::EllipticCurve{T}) -> Tuple{T, T}
Return the c-invariants of $E as a tuple
discriminant Method
discriminant(E::EllipticCurve) -> FieldElem
Return the discriminant of
discriminant(C::HypellCrv{T}) -> T
Compute the discriminant of
discriminant(O::AlgssRelOrd)
Returns the discriminant of
equation Method
equation([R::MPolyRing,] E::EllipticCurve) -> MPolyRingElem
Return the equation defining the elliptic curve
Examples
julia> E = elliptic_curve(QQ, [1, 2, 3, 4, 5]);
julia> equation(E)
-x^3 - 2*x^2 + x*y - 4*x + y^2 + 3*y - 5
hyperelliptic_polynomials Method
hyperelliptic_polynomials([R::PolyRing,] E::EllipticCurve) -> PolyRingElem, PolyRingElem
Return univariate polynomials
Examples
julia> E = elliptic_curve(QQ, [1, 2, 3, 4, 5]);
julia> hyperelliptic_polynomials(E)
(x^3 + 2*x^2 + 4*x + 5, x + 3)
Points
(E::EllipticCurve)(coords::Vector; check::Bool = true)
Return the point coords
, which can be either affine coordinates (length(coords) == 2
) or projective coordinates (length(coords) == 3
).
Per default, it is checked whether the point lies on check = false
.
Examples
julia> E = elliptic_curve(QQ, [1, 2]);
julia> E([1, -2])
Point (1 : -2 : 1) of Elliptic curve with equation
y^2 = x^3 + x + 2
julia> E([2, -4, 2])
Point (1 : -2 : 1) of Elliptic curve with equation
y^2 = x^3 + x + 2
infinity Method
infinity(E::EllipticCurve) -> EllipticCurvePoint
Return the point at infinity with project coordinates
parent Method
parent(P::EllipticCurvePoint) -> EllipticCurve
Return the elliptic curve on which
Examples
julia> E = elliptic_curve(QQ, [1, 2]);
julia> P = E([1, -2]);
julia> E == parent(P)
true
is_on_curve Method
is_on_curve(E::EllipticCurve, coords::Vector) -> Bool
Return true if coords
defines a point on coords
must have length 2.
Examples
julia> E = elliptic_curve(QQ, [1, 2]);
julia> is_on_curve(E, [1, -2])
true
julia> is_on_curve(E, [1, -1])
false
+ Method
+(P::EllipticCurvePoint, Q::EllipticCurvePoint) -> EllipticCurvePoint
Add two points on an elliptic curve.
Examples
julia> E = elliptic_curve(QQ, [1, 2]);
julia> P = E([1, -2]);
julia> P + P
Point (-1 : 0 : 1) of Elliptic curve with equation
y^2 = x^3 + x + 2
division_points Method
division_points(P::EllipticCurvePoint, m::Int) -> EllipticCurvePoint
Compute the set of points
Examples
julia> E = elliptic_curve(QQ, [1, 2]);
julia> division_points(infinity(E), 2)
2-element Vector{EllipticCurvePoint{QQFieldElem}}:
Point (0 : 1 : 0) of Elliptic curve with equation
y^2 = x^3 + x + 2
Point (-1 : 0 : 1) of Elliptic curve with equation
y^2 = x^3 + x + 2