Skip to main content
KetQat

Appearance

Syndrome explorer

A stabilizer code never looks at the state it protects — measuring it would destroy the superposition. It measures only whether each of its generators was disturbed. Apply an error below and follow what happens: which generators fire, what the decoder concludes from that alone, and whether the correction restored the logical state or silently changed it.

Steane code, error YIIIIII

Corrected

The decoder named exactly the error that occurred, and the state is restored.

What each generator measured

Each row is a stabilizer generator, each column a qubit. A cell is marked when the error and the generator disagree on that qubit in a way that costs a sign. The syndrome bit is the parity of the marked cells in that row — so two marks cancel and read 0.

Stabilizer generators of the Steane code against the error YIIIIII, showing which qubits contribute to each syndrome bit and the resulting bit.
Generatorq0q1q2q3q4q5q6MarksBit
ErrorY······weight 1
IIIZZZZ···ZZZZ00
IZZIIZZ·ZZ··ZZ00
ZIZIZIZ[Z]·Z·Z·Z11
IIIXXXX···XXXX00
IXXIIXX·XX··XX00
XIXIXIX[X]·X·X·X11

Syndrome 001001 — 2 of 6 generators were disturbed.

Decode and correct

The error applied, the syndrome measured, the correction the decoder inferred, and the operator left on the state afterwards.
Error appliedYIIIIIIweight 1; never observed by the decoder
Syndrome measured001001the only thing the decoder sees
Correction inferredYIIIIIIthe same operator that occurred
ResidualIIIIIIIa stabilizer, so it acts as the identity on the code space

Success is the residual being a stabilizer, not the decoder naming the error. Those differ: on a degenerate code the decoder routinely names a different operator and restores the state perfectly, and scoring by equality would count that as a failure.

Every error of weight 1 and 2

All Pauli errors of each weight on the Steane code, classified by outcome. Computed exhaustively, not sampled.
WeightErrorsCorrectedMiscorrectedUndetectedTrivial
12121000
2189018900

“Trivial” counts operators that are themselves stabilizers — they act as the identity, so there is nothing to detect. Every weight-1 error here has its own syndrome, so the decoder can always name the operator that occurred.

The decoder’s lookup table

The lowest-weight error consistent with each syndrome the Steane code can report. This is minimum-weight decoding done exhaustively, which is honest at this size and is not a substitute for matching on a large code.
SyndromeCorrection appliedWeight
000000IIIIIII0
000001ZIIIIII1
000010IZIIIII1
000011IIZIIII1
000100IIIZIII1
000101IIIIZII1
000110IIIIIZI1
000111IIIIIIZ1
001000XIIIIII1
001001← measuredYIIIIII1
010000IXIIIII1
010010IYIIIII1
011000IIXIIII1
011011IIYIIII1
100000IIIXIII1
100100IIIYIII1
101000IIIIXII1
101101IIIIYII1
110000IIIIIXI1
110110IIIIIYI1
111000IIIIIIX1
111111IIIIIIY1

Decoder benchmarks measured under identical conditions live in the QEC Lab. This page computes exactly and exhaustively on codes small enough for that to be honest; it is a way to see what a syndrome is, not a decoder benchmark.