Clifford circuits, a subset of quantum circuits can be simulated efficiently with the tableaux formalism (a.k.a. stabilizer formalism, a.k.a. destabilizer formalism, a.k.a. Heisenberg representation).
QuantumClifford.jl is a package implementing these formalisms. The package is meant to remain small and well optimized, dealing with that one single problem.
- A good example of simulating circuits with Monte Carlo and with symbolic Perturbative expansion
- A more low-level work where tableaux are studied in detail for the purpose of creating random quantum codes
The package has some original implementations of methods for the simulation of noisy Clifford circuits: a standard Monte Carlo approach, but also a symbolic perturbative expansion methods for simulating noise.
The representation of qubits is well packed in memory, and the majority of algorithms are allocation free. Julia was a particularly great language in which to write a simple but very fast implementation of these algorithms. There are still low-hanging fruits for optimization in some corners of the package and ensuring efficient use of the CPU cache.