Four pictures of ideas that are hard to hold flat: errors that spread through time, a recipe that turns bad states into good ones, ions stuck in a line, and atoms that block each other. Every number on this page is computed in your browser and checked against a second method.
The error-correction lesson draws the surface code as a flat grid. A real decoder works on something with one more direction, because the checks are measured again and again and a measurement can be wrong too. The other three scenes show the thing that limits a hardware family: how many bad states a distillation recipe lets through, why trapped ions have to be carried around, and why neutral atoms can run a two-atom gate at all.
Everything here is a schematic built from small exact models. It claims no chip layout, no footprint, no speed and no device figure. The tables are computed, and the pictures only show what the tables say.
The 3D view loads only when you press Start 3D. On a weak phone it draws with a lighter setting, and the tables under each scene say the same thing in numbers if you would rather not load it.
Drag to turn. Scroll or pinch to zoom. Arrow keys turn it when the picture has focus.
Take the smallest rotated surface code, distance 3: nine data qubits and four checks that watch for phase flips. Measure the checks four times (three noisy rounds and then one perfect one, the way a memory experiment ends). Each round is a layer. A detection event is a check whose reading changed since the round before.
A flip on a data qubit changes the checks beside it, so it makes events in one layer: either two checks side by side, or one check next to the edge. A wrong measurement is different: the check is read wrongly once and correctly the round after, so it makes two events one layer apart. The grey lines are every place a single fault can happen, and the violet ones are the wrong-measurement lines. The red lines are the faults in the picture, the amber dots are the events they cause, and the teal lines are the decoder’s answer: the pairing of the events that explains them with the fewest faults.
The decoder here is the textbook one: minimum-weight matching with every fault counted equally, found by trying every way to pair the events up. It is the idea behind the space-time matching of Dennis, Kitaev, Landahl and Preskill (2002), not any lab’s production decoder. The check script confirms that a corrected run leaves no events behind, that every single fault and every pair of faults is corrected in the distance-5 code, and that a triple that defeats it exists.
A T gate is the expensive one. A way to get clean “magic” states for it is to distil them: take 15 noisy ones, run the checks of a small code, throw the batch away if any check complains, and keep one output if none does. The protocol is Bravyi and Kitaev’s 15-to-1. Suppose each input has a phase error with probability p. Because the code has distance 3, the smallest batch of errors that gets past every check has three of them, and there are exactly 35 such triples. So the output error is about 35p³, much smaller than p when p is small.
| Input error p | Batch kept | Output error, exact | 35 p³ |
|---|
The picture is a schematic, not a layout: fifteen blocks at the bottom (red when an error struck), four check lights (amber means a check complained) and the output block at the top (grey if the batch is thrown away, teal if the output is good, red if a bad one slipped through). “Try another” draws a new batch at p = 0.06, a deliberately bad input rate so you can see failures happen. The exact figures are from adding up all 32,768 error patterns, and the check script recomputes them from the code’s codewords instead of its checks.
In a trapped-ion machine the qubits are atoms held in a row by electric fields, and a two-qubit gate needs the two ions together in a gate zone. Ions in a line cannot swap places, so reaching a partner means carrying whole groups around. The idea of carrying ions between zones is the quantum charge-coupled device proposal of Kielpinski, Monroe and Wineland (2002).
This is a toy with four ions and three zones. The middle zone is the only place a gate can run and it holds two ions. The list of gates is on the table below. The search tries every arrangement reachable by moving one end ion into a neighbouring zone, and reports the fewest moves.
The picture steps through the shortest plan; “Try another” moves one step. One of the lessons of the toy is stated by the search itself: asking for a gate between ions 0 and 3, with 1 and 2 between them, has no plan at all, because nothing can pass. Real machines get round that with junctions and swaps, which this toy does not have.
Push a neutral atom into a very high-energy “Rydberg” level and it interacts strongly with its neighbours. Two atoms close enough have a large energy cost for both being excited at once, so a laser that would excite each atom on its own cannot take both: the second one is blockaded. The distance inside which that happens is the blockade radius, where the interaction energy equals the drive strength.
The table comes from the exact four-level evolution of two driven atoms. Far apart, each atom flips on its own and both end up excited after one pi pulse. Close together, the pair behaves like one two-level system that flips √2 times faster, between “neither excited” and an equal share of “one or the other”. In the picture the amber atom is excited, the amber shell is the blockade radius, and the red atoms are inside it and cannot join.
Units are dimensionless (drive strength 1). The shell radius is a chosen number of lattice spacings for the picture, not a measured one for any atom, and the 5×5×3 lattice is a stand-in. The check script confirms the √2 ratio by running the evolution, that the interaction energy at the blockade radius equals the drive, and the blocked count by measuring every distance.
Every figure above comes from qec3d.js, and tools/verify_qec3d.mjs recomputes each scene a second way: the surface code’s checks against the commutation rules (every Z-type stabiliser has no event and no logical effect, a row of Z flips has no event and is logical), the decoder against exhaustive fault sets, the factory from its codewords, the shuttling plan by replaying it move by move, and the Rydberg evolution against the closed forms for no interaction and for a very large one.
Low-end phones: the page draws no shadows, caps the pixel ratio, drops antialiasing on weak devices, pauses when scrolled out of view or the tab is hidden, and does not animate on its own if your device asks for reduced motion.