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.

Shor code, error IZIIIIIII

Corrected

The decoder named ZIIIIIIII rather than IZIIIIIII, but the two differ by a stabilizer, which acts as the identity on the code space. A complete success: the logical state is restored even though the guess was not the error.

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 Shor code against the error IZIIIIIII, showing which qubits contribute to each syndrome bit and the resulting bit.
Generatorq0q1q2q3q4q5q6q7q8MarksBit
Error·Z·······weight 1
ZZIIIIIIIZZ·······00
IZZIIIIII·ZZ······00
IIIZZIIII···ZZ····00
IIIIZZIII····ZZ···00
IIIIIIZZI······ZZ·00
IIIIIIIZZ·······ZZ00
XXXXXXIIIX[X]XXXX···11
IIIXXXXXX···XXXXXX00

Syndrome 00000010 — 1 of 8 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 appliedIZIIIIIIIweight 1; never observed by the decoder
Syndrome measured00000010the only thing the decoder sees
Correction inferredZIIIIIIIIa different operator with the same syndrome
ResidualZZIIIIIIIa 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 Shor code, classified by outcome. Computed exhaustively, not sampled.
WeightErrorsCorrectedMiscorrectedUndetectedTrivial
12727000
23243627909

“Trivial” counts operators that are themselves stabilizers — they act as the identity, so there is nothing to detect. This code is degenerate: 22 distinct syndromes cover more errors than that, so some single-qubit errors are indistinguishable — and are corrected anyway.

The decoder’s lookup table

The lowest-weight error consistent with each syndrome the Shor 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
00000000IIIIIIIII0
00000001IIIIIIZII1
00000010← measuredZIIIIIIII1
00000011IIIZIIIII1
00000100IIIIIIIIX1
00000101IIIIIIIIY1
00001000IIIIIIXII1
00001001IIIIIIYII1
00001100IIIIIIIXI1
00001101IIIIIIIYI1
00010000IIIIIXIII1
00010011IIIIIYIII1
00100000IIIXIIIII1
00100011IIIYIIIII1
00110000IIIIXIIII1
00110011IIIIYIIII1
01000000IIXIIIIII1
01000010IIYIIIIII1
10000000XIIIIIIII1
10000010YIIIIIIII1
11000000IXIIIIIII1
11000010IYIIIIIII1

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.