Elliptic Curves Are Doughnuts

A lattice in the complex plane rolls up into a torus, and the torus is secretly a cubic curve

Elliptic Curves Are Doughnuts

The cubic y² = x³ + ax + b comes with a strange chord-and-tangent rule for adding points. The secret: the curve is a doughnut, and that rule is ordinary addition, wrapped around.

Rolling Up the Plane

The plane, a lattice of points m + nτ, and a rule: points that differ by a lattice vector count as the same. Press play and watch the plane roll up into a torus.

A flat parallelogram — one tile of the lattice

Take the complex plane and a lattice — all the points m + nτ for whole numbers m and n. Declare two complex numbers to be the same if they differ by a lattice vector, and the entire plane collapses onto a single tile with its opposite edges glued. The yellow and cyan curves are those two glued edge pairs; on the finished doughnut they are the two loops you cannot shrink away.

One honest caveat: a flat torus cannot be bent smoothly into 3-space without stretching (only an infinitely crinkled embedding avoids it), so the round doughnut cannot carry the true flat metric. τ genuinely controls the tile and the doughnut’s proportions — the roundness is the price of drawing it here.

The Weierstrass Map

Drag a point around the torus on the left and watch its image travel along the cubic on the right. The yellow circles land on the curve’s two real branches.

0
the torus C/Λ — drag the point
the cubic y² = 4x³ − g₂x − g₃
g₂
146.486
g₃
207.208
℘(z₁)
2.169
℘′(z₁)
-0.002

Off the yellow lines, ℘(z) and ℘′(z) are genuinely complex, and the marker shows only their real parts — the true image has left the page. Drag onto a yellow line to land back on the real curve.

The map z ↦ (℘(z), ℘′(z)) sends the torus onto the cubic, and it is a perfect one-to-one correspondence once the single point z = 0 is sent to the point at infinity. Because ℘ satisfies the differential equation (℘′)² = 4℘³ − g₂℘ − g₃, every point of the torus lands exactly on the curve — the equation of the cubic is not imposed, it is a theorem about the lattice.

Go deeper:From a Doughnut to an Equation

The torus C/Λ is a lovely object but it comes with no polynomial. To find one we need functions on it — that is, functions on C that are unchanged when you shift by any lattice vector. Such doubly periodic functions are hard to come by: a non-constant one must have poles, because a holomorphic function that is bounded on the whole plane is constant.

Weierstrass’s solution was to build one by brute force. Sum 1/(z − ω)² over every lattice vector ω, with a correction term to make the sum converge:

℘(z) = 1/z² + Σ [ 1/(z − ω)² − 1/ω² ]

The result is doubly periodic by construction, with a double pole at each lattice point. And now the miracle: ℘ and its derivative ℘′ are not independent. They satisfy

(℘′)² = 4℘³ − g₂℘ − g₃

where g₂ and g₃ are numbers computed from the lattice alone. That is a cubic equation. Setting x = ℘(z) and y = ℘′(z) sends every point of the torus onto the curve y² = 4x³ − g₂x − g₃, and the map is a perfect one-to-one correspondence once z = 0 is sent to the point at infinity. The equation was not chosen; it was forced by the lattice.

Go deeper:Why Chords and Tangents Compute Addition

On the torus, addition is unambiguous: z₁ and z₂ are complex numbers, so add them and wrap the result back into the tile. The claim is that this matches the geometric rule on the cubic — draw the line through two points, find the third intersection, reflect it.

The reason is a counting theorem about doubly periodic functions: the zeros minus the poles of such a function, counted with multiplicity over one tile, always sum to a lattice vector. A straight line ax + by + c = 0 pulls back to the function a℘(z) + b℘′(z) + c on the torus, which has exactly three zeros and a pole of order three at the origin. Subtracting the triple pole at z = 0 costs nothing, so the three zeros z₁, z₂, z₃ must satisfy z₁ + z₂ + z₃ = 0.

In other words: three points of the cubic are collinear exactly when they sum to zero on the torus. That is the whole group law, and it is a statement about addition of complex numbers. The chord-and-tangent construction is explored in its own right in the Algebraic Geometry module’s Elliptic Curves & the Group Law lesson.

The Space of All Doughnuts

Drag τ around the upper half-plane. Outside the shaded region, a cyan marker shows the equivalent τ inside it; the j-invariant says which curve you are on.

upper half-plane — drag τ
j-invariant — the curve’s fingerprint
j = 1871.2
reduced τ = 0.1800 + 1.2500i
g₂
134.962 + 10.966i
g₃
261.583 + -50.979i
Drag τ outside the shaded region and a cyan marker appears at the equivalent τ inside it. The two lattices look completely different, but they are the same lattice — and the j-invariant does not budge.

Every complex elliptic curve is C/Λ for some lattice, and rescaling lets us take Λ = Z + Zτ with τ in the upper half-plane. But different τ can give the same lattice: τ and τ + 1 obviously do, and so do τ and −1/τ. Those two moves generate the group SL₂(Z), and the shaded region is one exact copy of the quotient — the moduli space of elliptic curves. The j-invariant is the coordinate on it: same j, same curve, no matter how different the parallelograms look.

Key Takeaways

  • A complex elliptic curve is a torus: the plane modulo a lattice.
  • The Weierstrass ℘-function turns the torus into a cubic equation.
  • Three points on the cubic are collinear exactly when they sum to zero on the torus.
  • The j-invariant tells curves apart: same j, same curve.

Spot a mistake or have an idea?

Search