QuantumClifford.jl for efficient classical simulation of a subset of quantum circuits (allocation free, Monte Carlo, and symbolic algorithms)

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.

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.