Popularity
4.5
Growing
Activity
0.0
Stable
211
11
33

Programming language: Rust
Tags: Virtualization

# quantum alternatives and similar packages

Based on the "Virtualization" category.
Alternatively, view quantum alternatives based on common mentions on social networks and blogs.

• ### unicorn-rs

Rust bindings for the unicorn CPU emulator
• ### hypervisor-rs

Rust API to the OS X Hypervisor framework for hardware-accelerated virtualization

Do you think we are missing an alternative of quantum or a related project?

## Motivation

Quantum is a quantum computer simulator written with the following design goals in mind:

1) Utility: we can simulate a 5-qubit register, enough to run interesting algorithms.

2) Efficiency: we implement all important operations from scratch using primitives

3) Educational Value: the documentation is a prose description of how to implement a quantum computer in Rust.

4) Correctness: it's entirely written in safe Rust with well-defined states.

A good place to start reading the theory behind this is the Wikipedia article, and you can follow the documentation for our implementations of gates, kets, common operations, and quantum registers.

## Usage

``````# Cargo.toml

[dependencies]
quantum = "0.1.3"
``````
``````// main.rs

use computer::QuantumComputer;
use algorithms::deutsch;
use gates;

// Let's do something simple of a 3-qubit system.
let mut c1 = QuantumComputer::new(3);
c1.initialize(5);
c1.apply(gates::identity(3));
c1.collapse();
assert_eq!(5, c1.value());

// Now let's perform a coin flip using the Hadamard transform.
let mut c2 = QuantumComputer::new(1);
c2.initialize(0);
c2.collapse();
let result = if 1 == c2.value() { "heads" } else { "tails" };
println!("coin flip: {}", result);

// Finally let's determine whether f: {0, 1} -> {0, 1} is constant
// or balanced using Deutsch's algorithm.
// (see http://physics.stackexchange.com/q/3400)
let mut c3 = QuantumComputer::new(2);
c3.initialize(1);
c3.apply(deutsch::deutsch_gate(f));
c3.collapse();
let result = if 1 == c3.value() { "constant" } else { "balanced" };
println!("f is: {}", result);
``````

## Gates

We provide the following quantum gates:

• Identity
• Pauli-X
• Pauli-Y
• Pauli-Z
• Phase Shifts
• Swap
• Sqrt(Swap)
• Controlled Not
• General Controlled-U
• Controlled-X
• Controlled-Y
• Controlled-Z
• Toffoli
• Fredkin
• Quantum Fourier Transform

## Contributing

• Create or take ownership of an issue
• Fork development branch
• Write code and tests
• `rust test`
• Commit with a reasonable message and push
• Submit a pull request

*Note that all licence references and agreements mentioned in the quantum README section above are relevant to that project's source code only.