did here, to predict the logical fault rate, but as we will explain in the next section, this is generically computationally hard except in oversimplified models as used here.

Difficulty of numerical simulations {#sec:numerics}
===================================

Numerical simulations have played a central role in our development and optimization of quantum error correcting schemes. A quantum code is specified by stabilizers $S_j$: a valid code state is one for which $S_j\ket\psi = +\ket\psi$ for all $j$. In the presence of noise, the measurement of the stabilizers can yield outcomes which differ from +1. The collection of stabilizer measurement outcomes is called the syndrome, and a syndrome which is not all $+1$ signals the presence of errors. We conventionally denote the syndrome $s\in \{0,1\}$ instead of $s'\in \{+,-\}$ with the mapping $s' = (-1)^s$. Decoding is a classical computational procedure which, given a syndrome $s$, determines the optimal recovery procedure to return the system to its initial state. The recovery is usually chosen amongst Pauli matrices, but generalizations are possible [@CWBL17].

Decoding is generically a hard problem. In the classical setting, it is well known that optimally decoding a linear code is in NP-complete [@BMT78], and in the quantum setting, we have shown 