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 ofOpenQASM
3.0 (https://openqasm.com/versions/3.0/index.html)
Structs§
- Qubit
Layer - The main abstraction of quantum circuit simulation.
Contains the complex values of each possible state.
Enums§
- Quantum
Op - Supported quantum operations, equivalent to quantum gates in a circuit.
Operations with ‘Par’ suffix are experimental multi-threaded implementations, not guaranteed to improve performance.