# Elliptic Curves

Little has been implemented so far.

## `ModularForm(E): CrvEll -> ModFrmElt`

## `Newform(E): CrvEll -> ModFrmElt`

The modular form associated to the elliptic curve $E$ (which must be defined over the rationals).

## `Eigenform(E, prec): CrvEll, RngIntElt -> RngSerPowElt`

## `qEigenform(E, prec): CrvEll, RngIntElt -> RngSerPowElt`

The q-expansion of the newform associated to $E$, to the specified precision.

Note: this is exactly the same as calling `qExpansion(ModularForm(E),prec)`.

## `EllipticCurve(f): ModFrmElt -> CrvEll`

An elliptic curve $E$ with associated modular form $f$, when $f$ is a weight $2$ newform on $\Gamma_0(N)$ with rational Fourier coefficients.

The Cremona database is used to identify the isogeny class. (A routine to compute the curve from scratch is implemented, and can be called with `EllipticCurve(M : Database:=false)` where $M$ is the relevant space of modular symbols; however this is not optimized for large level.)

## `Example: Elliptic Curves (ex-b1a407)`

```magma
> M := ModularForms(Gamma0(389),2);
> f := Newform(M,1);
> Degree(f);
1
> E := EllipticCurve(f);
> E;
Elliptic Curve defined by y^2 + y = x^3 + x^2 - 2*x over Rational
Field
> Conductor(E);
389
> time s := PowerSeries(f,200);  // faster because it knows the elliptic curve
Time: 0.509

```
