Skip to main content

Module quantum

Module quantum 

Source
Expand description

Quantum Computing Simulation

This module provides comprehensive quantum computing simulation capabilities for NumRS2, including state vector simulation, quantum gates, circuit construction, measurements, and quantum algorithms.

§Overview

The quantum module enables:

  • State Vector Simulation: Exact simulation of quantum states using complex amplitudes
  • Quantum Gates: Complete set of single and multi-qubit gates
  • Circuit Building: Fluent API for constructing quantum circuits
  • Measurements: Computational and Pauli basis measurements with sampling
  • Quantum Algorithms: QFT, Grover’s search, VQE, and QPE implementations

§Module Organization

  • statevector: Quantum state representation and density matrices
  • gates: Standard quantum gates (Pauli, Hadamard, rotations, controlled gates)
  • circuit: Quantum circuit builder with optimization
  • measurement: Measurement operations and statistics
  • algorithms: Quantum algorithms (QFT, Grover, VQE, QPE)

§Examples

§Creating a Bell State

use numrs2::new_modules::quantum::circuit::QuantumCircuit;

// Create Bell state (|00⟩ + |11⟩)/√2
let mut circuit = QuantumCircuit::<f64>::new(2).expect("valid qubit count");
circuit.h(0).expect("valid qubit index");  // Hadamard on qubit 0
circuit.cnot(0, 1).expect("valid qubit indices");  // CNOT with control=0, target=1

let state = circuit.execute().expect("circuit execution succeeds");
use numrs2::new_modules::quantum::algorithms::GroverSearch;
use numrs2::new_modules::quantum::circuit::QuantumCircuit;

// Oracle that marks state |11⟩
let oracle = |circuit: &mut QuantumCircuit<f64>| {
    circuit.cz(0, 1)?;
    Ok(())
};

let iterations = GroverSearch::optimal_iterations(2, 1);
let result_state = GroverSearch::search(2, oracle, iterations).expect("valid Grover search");

§Quantum Fourier Transform

use numrs2::new_modules::quantum::circuit::QuantumCircuit;
use numrs2::new_modules::quantum::algorithms::QuantumFourierTransform;

let mut circuit = QuantumCircuit::<f64>::new(3).expect("valid qubit count");
QuantumFourierTransform::apply(&mut circuit).expect("valid QFT application");

let state = circuit.execute().expect("circuit execution succeeds");

§Mathematical Background

§Quantum States

A quantum state of n qubits is represented as a normalized vector in 2ⁿ-dimensional complex Hilbert space:

|ψ⟩ = Σᵢ αᵢ|i⟩ where Σᵢ|αᵢ|² = 1

§Quantum Gates

Quantum gates are unitary transformations U satisfying U†U = I. Common gates include:

  • Pauli-X: Bit flip, X|0⟩ = |1⟩, X|1⟩ = |0⟩
  • Pauli-Y: Y = iXZ
  • Pauli-Z: Phase flip, Z|0⟩ = |0⟩, Z|1⟩ = -|1⟩
  • Hadamard: Creates superposition, H|0⟩ = (|0⟩ + |1⟩)/√2
  • CNOT: Controlled-NOT, entanglement gate

§Measurement

Measurement follows the Born rule: P(outcome i) = |⟨i|ψ⟩|² = |αᵢ|²

§SCIRS2 Integration

This module strictly follows NumRS2’s SCIRS2 ecosystem policy:

  • Complex numbers via scirs2_core::Complex
  • Random number generation via scirs2_core::random
  • Array operations via NumRS2’s Array type
  • No direct external dependencies (ndarray, rand, etc.)

§Performance Considerations

  • State vector simulation is exact but memory-intensive: O(2ⁿ) for n qubits
  • Practical limit: ~20-25 qubits on typical systems
  • Gate operations: O(2ⁿ) time complexity
  • Measurement sampling: O(1) per shot after O(2ⁿ) probability computation

§References

  • Nielsen & Chuang, “Quantum Computation and Quantum Information” (2010)
  • Grover, “Quantum Mechanics Helps in Searching for a Needle in a Haystack” (1997)
  • Peruzzo et al., “A variational eigenvalue solver on a photonic quantum processor” (2014)
  • Shor, “Polynomial-Time Algorithms for Prime Factorization” (1997)

Re-exports§

pub use algorithms::GroverSearch;
pub use algorithms::QuantumFourierTransform;
pub use algorithms::QuantumPhaseEstimation;
pub use algorithms::VQE;
pub use circuit::QuantumCircuit;
pub use measurement::Measurement;
pub use measurement::MeasurementResult;
pub use measurement::MeasurementStatistics;
pub use statevector::DensityMatrix;
pub use statevector::StateVector;
pub use unitarity::create_validated_gate;
pub use unitarity::disable_runtime_validation;
pub use unitarity::enable_runtime_validation;
pub use unitarity::is_unitary;
pub use unitarity::unitarity_error;
pub use unitarity::validate_all_standard_gates;
pub use unitarity::validate_gate_unitarity;
pub use unitarity::GateValidationResult;
pub use unitarity::StandardGatesValidation;

Modules§

algorithms
Quantum Algorithms
circuit
Quantum Circuit Builder
gates
Quantum Gates
measurement
Quantum Measurement Operations
statevector
Quantum State Vector Simulation
unitarity
Quantum Gate Unitarity Verification