🚧 quantr 🚧

Static
Badge cargo
test cargo test
(dev)

This crate is not production ready and so should not be considered stable, nor produce correct answers. It is still under heavy development and requires many more optimisations. Hence, it's likely that near future updates will induce breaking changes. Please always check answers with other simulations if you are intending to use quantr for projects.

A Rust library crate that builds and simulates a quantum computer.

This crate allows the user to build a quantum circuit by adding columns of gates through various methods. Once the circuit has been built, then it can be simulated which attaches the register |00..0> to the circuit, resulting in a superposition that can be measured.

For a brief example of using quantr, see the quick start guide which walks through an implementation of the Grover's algorithm.

Defining features

Limitations (currently)

Conventions

The ordering of the wires labelling the product states in the computational basis is defined as:

text |a⟩ ──── |b⟩ ──── ⟺ |a,b,c,⋯⟩ ≡ |a⟩⊗|b⟩⊗|c⟩⊗⋯ |c⟩ ──── ⋮ ⋮

When defining a custom function that depends on the position of control nodes to define gates (such as the CNot and Toffoli gates), it must be defined so that the most far right state of the product state, is assumed to be the gate that is 'activated'. In general, it is better to assume that the custom function doesn't define control nodes, but rather it extends the dimension of the function's domain.

Documentation

The Quantr Book is planned to serve as extended documentation to quantr, such as explaining the motivations behind chosen algorithms. For now, it only contains the start guide.

For the online code documentation, please refer to crates.io. This can also be built and opened in your favourite web browser locally by cloning the project, moving into the directory, and running cargo doc --open.

Other quantum computer simulators

As of 27th July 2023, the website Are We Quantum Yet lists all things quantum computing in Rust.

A useful and very practical simulator for learning quantum computing is Quirk. It's a real-time online simulator that interfaces via drag-and-drop gates. Note that Quirk uses the reverse ordering of labelling their states from the quantum circuit as defined here.

Licence

Quantr is licensed under the EUPL-1.2 or later. You may obtain a copy of the licence at https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12. A copy of the EUPL-1.2 licence in English is given in LICENCE.txt which is found in the root of this repository. Details of the licenses of third party software, and the quantr project, can be found in COPYRIGHT.txt.