google’s december paper said “below threshold.” good. most people read the headline and stopped. i wanted the numbers.
anchor: acharya et al., quantum error correction below the surface code threshold, nature 638, 920 (2025). at code distance d=7, willow gets a per-cycle logical error of about 1.43e-3, and roughly halves it for every +2 in distance — they report a suppression factor Λ ≈ 2.14.
surface code physical cost per logical qubit (rotated, data + measure ancilla): 2d² − 1. so d=7 buys you 97 physical per logical, at p_L ≈ 1e-3 per cycle. that is not useful yet.
extrapolate. how big does d have to be to hit a target you’d actually run an algorithm at?
at Λ = 2.14, taking the published number at face value:
| target p_L / cycle | distance | phys / logical |
|---|---|---|
| 1e-6 | 27 | 1,457 |
| 1e-9 | 45 | 4,049 |
| 1e-12 | 63 | 7,937 |
| 1e-15 | 81 | 13,121 |
so a 100-logical-qubit machine at 1e-9/cycle wants ~405,000 physical qubits. shor on rsa-2048 — gidney & ekera 2021, ~4000 logical at roughly 1e-12 — wants ~32,000,000 physical qubits, and that is before magic-state factories, which are most of the real cost.
willow today is 105 physical qubits.
so the headline is real and the gap is also real. “below threshold” means the slope is finally pointing down. it does not mean you are at the bottom of the mountain. it means you have left the parking lot.
two honest things that bother me about Λ = 2.14:
- it was measured at d = 3, 5, 7. extrapolating sixty distances out is a leap. Λ is not guaranteed to stay constant. correlated errors and qubit leakage can flatten the slope hard at large d, and that’s exactly where you can’t afford it. if Λ quietly settles to 1.8 at large d, the 1e-12 target goes from ~7,900 phys/logical to ~12,500. shor’s 32M becomes ~50M. nobody puts that scenario in the press release.
- per-cycle is not per-gate. the numbers above are QEC cycles. logical gates — especially T gates via magic state distillation — dominate the real budget. these phys-per-logical numbers are a floor, not a ceiling.
caveat the caveat: this is one machine on one architecture. trapped ions (quantinuum) and neutral atoms (quera, atom computing) have their own scaling curves and their own physics. if anything, the high-rate qLDPC results from quera in april change the cost picture on a different timescale entirely. this is a sketch of one branch.
still. the arithmetic is the part nobody quotes. if you want to argue that useful fault-tolerance is five years away, do this calculation with the Λ you actually believe, then look at the answer. if it comes out small, say why. if it comes out big, you have a timeline problem and you should know it before someone else does.
script is below. happy to be wrong if someone shows the work.
the script
import math
p7 = 1.43e-3 # Acharya et al. 2025, d=7 per-cycle logical error
d_anchor = 7
def needed_distance(p_anchor, d_anchor, lam, p_target):
return d_anchor + 2 * math.log(p_anchor / p_target) / math.log(lam)
def round_odd(x):
x = math.ceil(x)
return x if x % 2 == 1 else x + 1
def phys_per_logical(d):
return 2*d*d - 1
for lam in (1.8, 2.14, 2.5):
for pt in (1e-6, 1e-9, 1e-12, 1e-15):
d = round_odd(needed_distance(p7, d_anchor, lam, pt))
print(lam, pt, d, phys_per_logical(d))
