Package sage :: Package ellcurve :: Module ellcurve :: Class EllipticCurve
[show private | hide private]
[frames | no frames]

Type EllipticCurve

object --+
         |
        EllipticCurve

Known Subclasses:
EllipticCurve_generic

Elliptic curve.

There are several forms of this function.

    -- EllipticCurve([a1,a2,a3,a4,a6]): Elliptic curve with given
       a-invariants.  The invariants are coerced into a the parent
       of the first element.  If all are integers, they are coerced
       into the rational numbers.

    -- EllipticCurve([a4,a6]): Same as above, but a1=a2=a3=0.
    
    -- EllipticCurve(label): Returns the elliptic curve over Q
       from the Cremoa database with the given label.  The label
       is a string, such as"11A" or "37B2".

    -- EllipticCurve(R, [a1,a2,a3,a4,a6]): Create the elliptic curve
       over R with given a-invariants.  Here R can be an arbitrary
       ring.  Note that addition need not be defined.
    

EXAMPLES:
We illustrate creating elliptic curves.

    >>> EllipticCurve([0,0,1,-1,0])
    Elliptic Curve defined by y^2 + y = x^3 - x over Rational Field

    >>> EllipticCurve([GF(5)(0),0,1,-1,0])
    Elliptic Curve defined by y^2 + y = x^3 - x over Finite field of size 5

Alternatively, one can create the curve over the finite field as follows:
    >>> EllipticCurve(GF(5), [0, 0,1,-1,0])
    Elliptic Curve defined by y^2 + y = x^3 - x over Finite field of size 5

    >>> E = EllipticCurve([C(0),0,1,-1,0])
    >>> E
    Elliptic Curve defined by y^2 + y = x^3 - x over Complex Field
    >>> E.j_invariant()
    2988.97297297297297297

    
    >>> E = EllipticCurve(ZZ, [0, 0,1,-1,0])
    >>> E
    Elliptic Curve defined by y^2 + y = x^3 - x over Integer Ring

Of course, arithmetic on elliptic curves over Z need not be defined:
    >>> P = E([0,0])
    >>> P + P + P + P
    (2, -3)
    >>> P + P + P + P + P
    Traceback (most recent call last):
    ...
    ArithmeticError: Point (1/4, -5/8) is not on curve.

Method Summary
  __init__(self, *args, **kwds)
  __new__(cls, *args, **kwds)
(Static method)
    Inherited from object
  __delattr__(...)
x.__delattr__('name') <==> del x.name
  __getattribute__(...)
x.__getattribute__('name') <==> x.name
  __hash__(x)
x.__hash__() <==> hash(x)
  __reduce__(...)
helper for pickle
  __reduce_ex__(...)
helper for pickle
  __repr__(x)
x.__repr__() <==> repr(x)
  __setattr__(...)
x.__setattr__('name', value) <==> x.name = value
  __str__(x)
x.__str__() <==> str(x)

Generated by Epydoc 2.1 on Mon Jun 20 15:43:22 2005 http://epydoc.sf.net