# Five-qubit error correcting code

The five-qubit error correcting code is the smallest quantum error correcting code that can protect a logical qubit from any arbitrary single qubit error. In this code, 5 physical qubits are used to encode the logical qubit. With $X$ and $Z$ being Pauli matrices and $I$ the Identity matrix, this code's generators are $\langle XZZXI,IXZZX,XIXZZ,ZXIXZ\rangle$. Its logical operators are ${\bar {X}}=XXXXX$ and ${\bar {Z}}=ZZZZZ$. Once the logical qubit is encoded, errors on the physical qubits can be detected via stabilizer measurements. A lookup table that maps the results of the stabilizer measurements to the types and locations of the errors gives the control system of the quantum computer enough information to correct errors.

## Measurements

Stabilizer measurements are parity measurements that measure the stabilizers of physical qubits. For example, to measure the first stabilizer ($XZZXI$), a parity measurement of $X$ of the first qubit, $Z$ on the second, $Z$ on the third, $X$ on the fourth, and $I$ on the fifth is performed. Since there are four stabilizers, 4 ancillas will be used to measure them. The first 4 qubits in the image above are the ancillas. The resulting bits from the ancillas is the syndrome; which encodes the type of error that occurred and its location.
A logical qubit can be measured in the computational basis by performing a parity measurement on ${\bar {Z}}$. If the measured ancilla is $0$, the logical qubit is $|0_{\rm {L}}\rangle$. If the measured ancilla is $1$, the logical qubit is $|1_{\rm {L}}\rangle$.

## Error correction

It is possible to compute all the single qubit errors that can occur and how to correct them. This is done by calculating what errors commute with the stabilizers. For example, if there is an $X$ error on the first qubit and no errors on the others ($X_{1}=XIIII$), it commutes with the first stabilizer $[XIIII,XZZXI]=0$. This means that if an X error occurs on the first qubit, the first ancilla qubit will be 0. The second ancilla qubit: $[XIIII,IXZZX]=0$, the third: $[XIIII,XIXZZ]=0$ and the fourth $[XIIII,ZXIXZ]\neq 0$. So if an X error occurs on the first qubit, the syndrome will be $0001$; which is shown in the table below, to the right of $X_{1}$. Similar calculations are realized for all other possible errors to fill out the table.
| $X_{1}$ | 0001 | $Z_{1}$ | 1010 | $Y_{1}$ | 1011 |
| $X_{2}$ | 1000 | $Z_{2}$ | 0101 | $Y_{2}$ | 1101 |
| $X_{3}$ | 1100 | $Z_{3}$ | 0010 | $Y_{3}$ | 1110 |
| $X_{4}$ | 0110 | $Z_{4}$ | 1001 | $Y_{4}$ | 1111 |
| $X_{5}$ | 0011 | $Z_{5}$ | 0100 | $Y_{5}$ | 0111 |
To correct an error, the same operation is performed on the physical qubit based on its syndrome. If the syndrome is $0001$, an $X$ gate is applied to the first qubit to reverse the error.

## Encoding

The first step in executing error corrected quantum computation is to encode the computer's initial state by transforming the physical qubits into logical codewords. The logical codewords for the five qubit code are
    ${\begin{aligned}|0_{\rm {L}}\rangle ={\frac {1}{4}}[&|00000\rangle +|10010\rangle +|01001\rangle +|10100\rangle +|01010\rangle -|11011\rangle -|00110\rangle -|11000\rangle \\-&|11101\rangle -|00011\rangle -|11110\rangle -|01111\rangle -|10001\rangle -|01100\rangle -|10111\rangle +|00101\rangle ],\end{aligned}}$
    ${\begin{aligned}|1_{\rm {L}}\rangle ={\frac {1}{4}}[&|11111\rangle +|01101\rangle +|10110\rangle +|01011\rangle +|10101\rangle -|00100\rangle -|11001\rangle -|00111\rangle \\-&|00010\rangle -|11100\rangle -|00001\rangle -|10000\rangle -|01110\rangle -|10011\rangle -|01000\rangle +|11010\rangle ].\end{aligned}}$
Stabilizer measurements followed by a ${\bar {Z}}$ measurement can be used to encode a logical qubit into 5 physical qubits. To prepare $|0_{\rm {L}}\rangle$, perform stabilizer measurements and apply error correction. After error correction, the logical state is guaranteed to be a logical codeword. If the result of measuring ${\bar {Z}}$ is $0$, the logical state is $|0_{\rm {L}}\rangle$. If the result is $1$, the logical state is $|1_{\rm {L}}\rangle$ and applying ${\bar {X}}$ will transform it into $|0_{\rm {L}}\rangle$.