Crate quantum_state_sim

Source
Expand description

Quantum circuit simulator

Provides an abstraction for quantum circuit simulations.
Uses the state vector simulation method.
Memory consumption is 2 * 8 * 2num_qubits bytes. For example, simulating 25 qubits cost ~537 MB.

§Example

use quantum_state_sim::{QubitLayer, QuantumOp};

let mut q_layer: QubitLayer = QubitLayer::new(20);

let instructions = vec![
    (QuantumOp::PauliX, 0),
    (QuantumOp::PauliY, 1),
    (QuantumOp::PauliZ, 2),
    (QuantumOp::Hadamard, 3),
];

if let Err(e) = q_layer.execute(instructions) {
    panic!("Failed to execute instructions! Error: {e}");
}

let measured_qubits = q_layer.measure_qubits();
println!("{:?}", measured_qubits);

// Check if the first qubit has flipped to 1 due to the Pauli X operation
assert_eq!(1.0, measured_qubits[0].round()); // measures might come with floating-point precision loss

Modules§

qasm_parser
Quantum Assembly parser module.
Supports a simple subset of OpenQASM 3.0 (https://openqasm.com/versions/3.0/index.html)

Structs§

QubitLayer
The main abstraction of quantum circuit simulation.
Contains the complex values of each possible state.

Enums§

QuantumOp
Supported quantum operations, equivalent to quantum gates in a circuit.
Operations with ‘Par’ suffix are experimental multi-threaded implementations, not guaranteed to improve performance.

Type Aliases§

MeasuredQubits
TargetQubit