Crates.io | q1tsim |
lib.rs | q1tsim |
version | 0.5.0 |
source | src |
created_at | 2019-01-30 16:05:25.834686 |
updated_at | 2019-09-13 08:45:14.251526 |
description | A simple, efficient, quantum computer simulator. |
homepage | |
repository | https://github.com/Q1tBV/q1tsim |
max_upload_size | |
id | 111650 |
size | 560,434 |
A simple, efficient, quantum computer simulator.
q1tsim is a simulator library for a quantum computer, written in Rust. Its goal is to be an easy to use, efficient simulator for the development and testing of quantum algorithms.
X
, Y
, or Z
basisTo use q1tsim in your Rust application, add the following to your Cargo.toml
file:
[dependencies]
q1tsim = "0.4"
As an example, here is a 3-qubit quantum Fourier transform of the |000⟩ quantum state:
extern crate q1tsim;
use q1tsim::{circuit, gates};
fn main()
{
// The number of times this circuit is evaluated
let nr_runs = 8192;
// Create a quantum circuit with 3 quantum bits and 3 classical (measurement)
// bits. The circuit starts by default with all quantum bits in the |0⟩ state,
// so in this case |000⟩.
let mut circuit = circuit::Circuit::new(3, 3);
// Set up a 3-qubit quantum Fourier transform
// There is no predefined method on Circuit that implements a controlled
// `S` or `T` gate, so we use the `add_gate()` method for those.
circuit.h(2);
circuit.add_gate(gates::CS::new(), &[1, 2]);
circuit.add_gate(gates::CT::new(), &[0, 2]);
circuit.h(1);
circuit.add_gate(gates::CS::new(), &[0, 1]);
circuit.h(0);
circuit.add_gate(gates::Swap::new(), &[0, 2]);
// Measure all quantum bits in the Pauli `Z` basis
circuit.measure_all(&[0, 1, 2]);
// Actually calculate the resulting quantum state and perform the measurements,
// averaging over `nr_runs` runs.
circuit.execute(nr_runs);
// And print the results.
let hist = circuit.histogram_string().unwrap();
for (bits, count) in hist
{
println!("{}: {}", bits, count);
}
}
The result should be a more or less equal distribution over the eight possible states (000, 001, ..., 111).
Read the complete API documentation on docs.rs.