项目作者: hajifkd

项目描述 :
Quantum computing simulator in Rust
高级语言: Rust
项目地址: git://github.com/hajifkd/rusq.git
创建时间: 2018-02-01T13:50:58Z
项目社区:https://github.com/hajifkd/rusq

开源协议:MIT License

下载


Rusq

crates.io
docs.rs
Build Status

Quantum computing simulator in Rust

Overview

Rusq is a library to simulate a gate-type quantum computer written purely in Rust.

The Rusq design is highly inspired by Q#. Basically, only “physically safe” operation is implemented - no non-physical information like the amplitude of a wavefunction can be obtained by default.

Feature

  • Measurement and projection
  • Basic quantum gates
    • $X, Y, Z$, Hadamard, identity, CNOT, CCNOT

How to use

First, add the following to Cargo.toml

  1. [dependencies]
  2. rusq = "0.1"

For example codes, check out the following section.

Examples

For instance, you can make EPR pair like this:

  1. extern crate rusq;
  2. use rusq::prelude::*;
  3. fn set(sim: &mut QuantumSimulator, qubit: &Qubit, r: MeasuredResult) {
  4. if sim.measure(qubit) != r {
  5. sim.X(qubit);
  6. }
  7. }
  8. fn main() {
  9. let mut sim = QuantumSimulator::new(2);
  10. let qubits = sim.get_qubits();
  11. let measure_count = 10000;
  12. for _ in 0..measure_count {
  13. set(&mut sim, &qubits[0], MeasuredResult::Zero);
  14. set(&mut sim, &qubits[1], MeasuredResult::Zero);
  15. sim.H(&qubits[0]);
  16. sim.CNOT(&qubits[0], &qubits[1]);
  17. assert_eq!(sim.measure(&qubits[0]), sim.measure(&qubits[1]));
  18. }
  19. }

For other kinds of examples, check tests directory. Pull requests to implement another examples of quantum computation is welcome.

License

MIT