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

**URL:** <https://discourse.julialang.org/t/quantumclifford-jl-for-efficient-classical-simulation-of-a-subset-of-quantum-circuits-allocation-free-monte-carlo-and-symbolic-algorithms/52235>\
**Category:** Package Announcements\
**Tags:** announcement, quantum, physics\
**Created:** [December 22, 2020, 5:28pm UTC](https://discourse.julialang.org/t/quantumclifford-jl-for-efficient-classical-simulation-of-a-subset-of-quantum-circuits-allocation-free-monte-carlo-and-symbolic-algorithms/52235 "2020-12-22T17:28:39Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Krastanov](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/krastanov/32/6817_2.png) [@Krastanov](https://discourse.julialang.org/u/Krastanov)\
**Post date:** [December 22, 2020, 5:28pm UTC](https://discourse.julialang.org/t/quantumclifford-jl-for-efficient-classical-simulation-of-a-subset-of-quantum-circuits-allocation-free-monte-carlo-and-symbolic-algorithms/52235/1 "2020-12-22T17:28:39Z")

</div>

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](https://github.com/Krastanov/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](https://github.com/Krastanov/QuantumClifford.jl/blob/master/docs/src/notebooks/Noisy_Circuits_Tutorial_with_Purification_Circuits.ipynb)
- [A more low-level work where tableaux are studied in detail for the purpose of creating random quantum codes](https://github.com/Krastanov/QuantumClifford.jl/blob/master/docs/src/notebooks/Stabilizer_Codes_Based_on_Random_Circuits.ipynb)

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.
