[@IP15] that the equivalent problem is in \#P-complete. This in effect means that decoding must often resort to heuristic, suboptimal methods, see, e.g., [@WHP03; @BSV14; @DP10; @P08]. The decoding algorithm for concatenated codes described in is a rare exception where an optimal, efficient decoding can be realized [@P06; @F08]. In the context of fault-tolerant quantum computation, it is clear that a fast decoding algorithm is required since it has to be executed in real time [@CTV17], so only efficient decoding algorithms are of interest.

The upshot is that, while optimal decoding algorithms can be numerically intractable, the decoding problem is not a bottleneck in numerical simulations since the decoding has to be efficient for any practical scheme. In other words, the goal of the numerical simulations is to study the behaviour of a noise model in a complete fault-tolerant scheme – including its potentially sub-optimal decoding algorithm. We do not really care to know if a logical fault results from a code failure or a decoding failure. Thus, no matter what practical fault-tolerant protocol we simulate, it will have a fast decoding algorithm.

Simulating quantum mechanics
----------------------------

The two difficult parts of a numerical simulation are 1) sampling a syndrome, 