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

An elliptic curve is usually introduced as an equation: y² = x³ + ax + b, a slightly lopsided cubic drawn in the plane, with a strange rule for adding points that involves drawing lines and reflecting. It works, but it feels arbitrary. Why should drawing a chord through two points on a curve produce a group?

Here is the answer, and it is one of the most satisfying reveals in mathematics. That cubic curve is a doughnut. Not resembles one — is one. And on a doughnut, addition is the obvious thing: a torus is what you get by rolling up the complex plane, so adding points on it is just adding complex numbers, wrapped around. The chord-and-tangent rule is ordinary addition, seen from an awkward angle.

The bridge between the two pictures is the Weierstrass ℘-function, and it is worth appreciating what it does: it takes a torus, which has no equation attached to it at all, and produces a cubic equation out of thin air. The group law was never arbitrary. It was addition all along.

Interactive: Rolling Up the Plane

Take the complex plane and a lattice — all the points m + nτ for whole numbers m and n. Treat two numbers as identical when they differ by a lattice vector, and the whole infinite plane collapses onto one tile with its edges glued. Press play and watch the gluing happen.

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 into 3-space without stretching, 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.

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.

Interactive: The Weierstrass Map

Two panels, one correspondence. Drag a point around the torus on the left and watch its image travel along the cubic on the right. The yellow lines are the two circles where ℘ and ℘′ are both real — their images are exactly the two real branches of the curve, the closed oval and the unbounded arc.

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.

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 and poles of such a function, added up 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. So its 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.

Interactive: The Space of All Doughnuts

Every elliptic curve is a torus, so the space of elliptic curves is the space of torus shapes. Drag τ around the upper half-plane; when you leave the shaded region a cyan marker shows the equivalent τ inside it. The j-invariant is the single number that tells you which curve you are really 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

  • An elliptic curve is a torus: C modulo a lattice Z + Zτ is a doughnut, and every complex elliptic curve arises this way.
  • The Weierstrass ℘-function builds the equation: ℘ and ℘′ satisfy (℘′)² = 4℘³ − g₂℘ − g₃, so the torus lands exactly on a cubic curve.
  • The map is a bijection once z = 0 is sent to the point at infinity — the identity element of the group.
  • The group law is ordinary addition: three points of the cubic are collinear precisely when the corresponding complex numbers sum to zero on the torus.
  • Real branches are real cycles: for a rectangular lattice, the two circles where ℘ is real map onto the oval and the unbounded arc of the real cubic.
  • The j-invariant is the fingerprint: τ and τ + 1 and −1/τ give the same curve, and j is the coordinate on the resulting moduli space — same j, same curve.