Crate quantrs2

Crate quantrs2 

Source
Expand description

Β§QuantRS2 - High-Performance Quantum Computing Framework for Rust

QuantRS2 (/kwΙ’ntΙ™rz tu:/) is a comprehensive, production-ready quantum computing framework built on Rust’s zero-cost abstractions and the SciRS2 scientific computing ecosystem.

Crates.io Documentation License


§🌟 Overview

QuantRS2 provides a unified, modular toolkit for quantum computing that spans:

  • Quantum Circuit Design with expressive DSLs and visual representations
  • Multiple Simulation Backends (state-vector, tensor-network, stabilizer, GPU-accelerated)
  • Real Hardware Integration (IBM Quantum, Azure Quantum, AWS Braket)
  • Quantum Machine Learning (QNNs, QGANs, VQE, QAOA)
  • Quantum Annealing (D-Wave integration, QUBO/Ising solvers)
  • Symbolic Quantum Computation with SymEngine integration
  • Python Bindings via PyO3 for seamless interoperability

Built on the SciRS2 scientific computing foundation, QuantRS2 leverages battle-tested linear algebra, automatic differentiation, and optimization libraries, ensuring both correctness and performance for quantum algorithm development.


Β§πŸ“¦ Installation

Β§Basic Installation

Add QuantRS2 to your Cargo.toml:

[dependencies]
quantrs2 = "0.1.0-beta.2"

Β§Feature Flags

Enable specific modules as needed:

# Full installation with all features
quantrs2 = { version = "0.1.0-beta.2", features = ["full"] }

# Selective installation
quantrs2 = { version = "0.1.0-beta.2", features = ["circuit", "sim", "ml"] }

Available Features:

  • core (always enabled) - Core quantum types and traits
  • circuit - Quantum circuit representation and DSL
  • sim - Quantum simulators (state-vector, tensor-network, stabilizer)
  • device - Real quantum hardware integration (IBM, Azure, AWS)
  • ml - Quantum machine learning (QNNs, VQE, QAOA)
  • anneal - Quantum annealing and optimization
  • tytan - High-level annealing library (Tytan API)
  • symengine - Symbolic computation with SymEngine
  • full - All features enabled

Β§πŸš€ Quick Start

Β§Example 1: Bell State Circuit

Create and simulate a Bell state (maximally entangled 2-qubit state):

β“˜
// This example demonstrates basic quantum circuit creation and simulation
// Requires: quantrs2 = { version = "0.1.0-beta.2", features = ["circuit", "sim"] }

use quantrs2_circuit::Circuit;
use quantrs2_sim::StateVectorSimulator;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Create a 2-qubit circuit
    let mut circuit = Circuit::<2>::new();

    // Apply Hadamard gate to qubit 0
    circuit.h(0);

    // Apply CNOT gate (control: 0, target: 1)
    circuit.cnot(0, 1);

    // Simulate the circuit
    let simulator = StateVectorSimulator::new();
    let result = simulator.run(&circuit, 1000)?;

    // Print measurement statistics
    println!("Bell state measurements: {:?}", result.counts());
    // Expected: ~50% |00⟩, ~50% |11⟩

    Ok(())
}

Β§Example 2: Variational Quantum Eigensolver (VQE)

Compute the ground state energy of a molecular Hamiltonian:

β“˜
// This example demonstrates VQE usage with the quantum ML module
// Requires: quantrs2 = { version = "0.1.0-beta.2", features = ["ml"] }

// Define H2 molecule Hamiltonian
let hamiltonian = MolecularHamiltonian::h2_sto3g(0.74)?;

// Create parameterized ansatz circuit
let ansatz = ParameterizedCircuit::hardware_efficient(4, 2);

// Configure VQE with Adam optimizer
let vqe = VQE::builder()
    .hamiltonian(hamiltonian)
    .ansatz(ansatz)
    .optimizer(Adam::default())
    .max_iterations(100)
    .build()?;

// Run optimization
let result = vqe.optimize()?;

println!("Ground state energy: {:.6} Ha", result.energy);
println!("Optimal parameters: {:?}", result.parameters);

Β§Example 3: Quantum Approximate Optimization Algorithm (QAOA)

Solve MaxCut problem on a graph:

β“˜
// This example demonstrates QAOA usage with the quantum ML module
// Requires: quantrs2 = { version = "0.1.0-beta.2", features = ["ml"] }

// Define graph edges for MaxCut problem
let edges = vec![(0, 1), (1, 2), (2, 3), (3, 0), (0, 2)];
let graph = Graph::from_edges(&edges, 4);

// Configure QAOA with 3 layers
let qaoa = QAOA::new(graph, 3);

// Run optimization
let result = qaoa.optimize(500)?;

println!("MaxCut value: {}", result.objective);
println!("Optimal cut: {:?}", result.bitstring);

Β§Example 4: Quantum Annealing with D-Wave

β“˜
// This example demonstrates quantum annealing with D-Wave integration
// Requires: quantrs2 = { version = "0.1.0-beta.2", features = ["anneal"] }

// Define QUBO problem
let mut qubo = QUBO::new(4);
qubo.add_term(0, 0, -1.0);
qubo.add_term(1, 1, -1.0);
qubo.add_term(0, 1, 2.0);

// Connect to D-Wave
let client = DWaveClient::from_env()?;

// Submit and solve
let result = client.sample_qubo(&qubo, 1000).await?;

println!("Best solution: {:?}", result.best_sample());
println!("Energy: {:.4}", result.best_energy());

Β§πŸ—οΈ Architecture

QuantRS2 follows a modular, layered architecture:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     User Applications                       β”‚
β”‚  (Quantum Algorithms, ML Models, Research Experiments)      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                  High-Level Interfaces                      β”‚
β”‚  quantrs2-ml      quantrs2-anneal      quantrs2-tytan       β”‚
β”‚  (VQE, QAOA)      (QUBO, Ising)        (Annealing DSL)      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              Quantum Circuit & Simulation Layer             β”‚
β”‚  quantrs2-circuit            quantrs2-sim                   β”‚
β”‚  (Circuit DSL, Gates)        (Simulators, Backends)         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                Hardware & Device Integration                β”‚
β”‚  quantrs2-device           quantrs2-symengine               β”‚
β”‚  (IBM, Azure, AWS)         (Symbolic Computation)           β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     Core Foundation                         β”‚
β”‚  quantrs2-core   (Types, Traits, State Representation)      β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  SciRS2 Ecosystem (scirs2-core, scirs2-linalg, etc.)  β”‚  β”‚
β”‚  β”‚  (Complex Numbers, Linear Algebra, FFT, Optimization) β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Β§Crate Overview

CratePurposeKey Features
quantrs2-coreFoundational types and traitsQuantum states, gates, measurements, error types
quantrs2-circuitCircuit construction and manipulationDSL, gate definitions, circuit optimization
quantrs2-simQuantum simulation backendsState-vector, tensor-network, stabilizer, GPU
quantrs2-deviceReal quantum hardware integrationIBM Quantum, Azure Quantum, AWS Braket
quantrs2-mlQuantum machine learningVQE, QAOA, QNNs, QGANs, gradient computation
quantrs2-annealQuantum annealingQUBO/Ising solvers, D-Wave integration
quantrs2-tytanHigh-level annealing DSLIntuitive problem modeling, auto-compilation
quantrs2-symengineSymbolic computationParametric gates, symbolic optimization
quantrs2-pyPython bindingsPyO3-based interoperability with NumPy

Β§πŸ§ͺ Feature Comparison

Β§Simulation Backends

BackendMax QubitsMemorySpeedUse Case
State Vector30+O(2ⁿ)FastGeneral circuits, small-medium scale
Tensor Network50+O(poly)MediumLow-entanglement circuits
Stabilizer100+O(nΒ²)Very FastClifford circuits, error correction
GPU (CUDA)35+O(2ⁿ)Very FastLarge-scale batch simulations

Β§Hardware Providers

ProviderAccess MethodSupported DevicesAuthentication
IBM QuantumREST API + WebSocket100+ qubits (various topologies)API Token
Azure QuantumAzure SDKIonQ, Rigetti, HoneywellAzure Credentials
AWS BraketBoto3IonQ, Rigetti, OxfordAWS IAM

Β§πŸ”¬ Advanced Features

Β§Automatic Differentiation for Variational Algorithms

QuantRS2 integrates with SciRS2’s automatic differentiation engine for efficient gradient computation:

β“˜
// Define parametrized quantum circuit
let params = Variable::new(vec![0.5, 1.2, 0.8]);
let circuit = ParameterizedCircuit::from_parameters(&params);

// Compute expectation value
let energy = circuit.expectation_value(&hamiltonian)?;

// Automatic gradient computation
let gradients = backward(&energy)?;

Β§Circuit Optimization and Compilation

Automatic circuit optimization reduces gate count and depth:

β“˜
let mut circuit = Circuit::<5>::new();
// ... build circuit ...

// Apply optimization passes
let optimized = optimize::pipeline()
    .add_pass(optimize::RemoveIdentityGates)
    .add_pass(optimize::MergeSingleQubitGates)
    .add_pass(optimize::CommuteCNOTs)
    .run(&circuit)?;

println!("Original depth: {}", circuit.depth());
println!("Optimized depth: {}", optimized.depth());

Β§Error Mitigation

Built-in error mitigation techniques for noisy quantum devices:

β“˜
let result = client
    .run_circuit(&circuit)
    .with_error_mitigation(ErrorMitigation::ZNE { scale_factors: vec![1.0, 1.5, 2.0] })
    .shots(10000)
    .execute()
    .await?;

Β§Tensor Network Contraction

Efficient simulation of low-entanglement quantum circuits:

β“˜
let simulator = TensorNetworkSimulator::builder()
    .strategy(ContractionStrategy::Greedy)
    .max_bond_dimension(128)
    .build();

let result = simulator.run(&circuit, 1000)?;

Β§πŸ”§ Dependencies and Integration

Β§SciRS2 Foundation

QuantRS2 is built on the SciRS2 scientific computing ecosystem:

  • scirs2-core: Complex numbers, random number generation, SIMD operations
  • scirs2-linalg: Unitary matrix operations, eigenvalue solvers
  • scirs2-autograd: Automatic differentiation for variational algorithms
  • scirs2-optimize: Optimization algorithms (Adam, L-BFGS, COBYLA)
  • scirs2-fft: Fast Fourier Transform for Quantum Fourier Transform
  • scirs2-sparse: Sparse matrix operations for large Hamiltonians
  • scirs2-neural: Neural network primitives for quantum ML

Important: QuantRS2 follows strict SciRS2 integration policies. All array operations use scirs2_core::ndarray, all complex numbers use scirs2_core::{Complex64, Complex32}, and all random number generation uses scirs2_core::random. See SCIRS2_INTEGRATION_POLICY.md for details.

Β§OptiRS Integration

Advanced optimization algorithms from OptiRS:

β“˜
let optimizer = DifferentialEvolution::default();
let result = vqe.with_optimizer(optimizer).optimize()?;

§🎯 Use Cases

Β§Quantum Chemistry

β“˜
// Define molecule geometry
let h2o = Molecule::new()
    .add_atom("O", [0.0, 0.0, 0.0])
    .add_atom("H", [0.0, 0.757, 0.586])
    .add_atom("H", [0.0, -0.757, 0.586])
    .build()?;

// Compute ground state energy
let hamiltonian = h2o.hamiltonian(BasisSet::STO3G)?;
let vqe = VQE::new(hamiltonian);
let energy = vqe.optimize()?.energy;

Β§Quantum Machine Learning

β“˜
// Build hybrid quantum-classical neural network
let qnn = QuantumNeuralNetwork::builder()
    .add_layer(QuantumLayer::new(4, 2))  // 4 qubits, 2 layers
    .add_classical_layer(Dense::new(16, 10))
    .build()?;

// Train on dataset
qnn.fit(&train_data, &train_labels, epochs: 50)?;

Β§Combinatorial Optimization

β“˜
// Solve traveling salesman problem
let distances = vec![vec![0.0, 2.0, 3.0], vec![2.0, 0.0, 1.0], vec![3.0, 1.0, 0.0]];
let tsp = TravelingSalesman::new(distances);
let solution = tsp.solve_quantum_annealing()?;

println!("Optimal route: {:?}", solution.route);
println!("Total distance: {:.2}", solution.distance);

Β§Quantum Cryptography

β“˜
// Quantum key distribution
let alice = BB84::new_sender(1024);
let bob = BB84::new_receiver();

let (alice_key, bob_key) = BB84::exchange(&mut alice, &mut bob)?;
assert_eq!(alice_key, bob_key);

Β§πŸ“Š Performance

Β§Benchmarks (Apple M2 Max, 64GB RAM)

OperationTimeThroughput
20-qubit state vector simulation1.2 ms830 circuits/s
30-qubit state vector simulation1.8 s0.55 circuits/s
CNOT gate application (20 qubits)45 ΞΌs22k gates/s
VQE iteration (4 qubits, 10 params)3.2 ms310 iterations/s
Tensor network contraction (50 qubits)250 ms4 circuits/s

Β§Memory Usage

System SizeState VectorTensor NetworkStabilizer
20 qubits16 MB2 MB3 KB
30 qubits16 GB8 MB7 KB
50 qubits16 PB (infeasible)128 MB20 KB
100 qubits--80 KB

§🌍 Platform Support

PlatformStatusNotes
Linux (x86_64)βœ… Full SupportRecommended for production
macOS (Intel)βœ… Full SupportNative performance
macOS (Apple Silicon)βœ… Full SupportOptimized for M-series chips
Windows (x86_64)βœ… Full SupportRequires MSVC toolchain
WebAssembly🚧 ExperimentalLimited feature set
CUDA (NVIDIA GPUs)βœ… Full SupportRequires CUDA 11.8+
OpenCL🚧 ExperimentalLimited backend support

§🧰 Development Tools

Β§Command Line Tools

# Generate circuit visualization (requires graphviz)
quantrs2 viz circuit.json -o circuit.png

# Benchmark quantum algorithms
quantrs2 bench --algorithm vqe --qubits 4-12

# Validate circuit on hardware constraints
quantrs2 validate circuit.json --backend ibm_lagos

# Convert between circuit formats
quantrs2 convert circuit.qasm -o circuit.json

Β§Python Integration

import quantrs2

# Use QuantRS2 from Python
circuit = quantrs2.Circuit(num_qubits=2)
circuit.h(0)
circuit.cnot(0, 1)

simulator = quantrs2.StateVectorSimulator()
result = simulator.run(circuit, shots=1000)

print(result.counts())  # {'00': 501, '11': 499}

Β§πŸ“š Resources

Β§Documentation

Β§Community


§🀝 Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

Key areas for contribution:

  • New quantum algorithms and applications
  • Performance optimizations and benchmarks
  • Hardware backend integrations
  • Documentation and examples
  • Bug reports and feature requests

Β§πŸ“œ License

Licensed under either of:

at your option.


Β§πŸ”– Version Information

Current Version: 0.1.0-beta.2

Β§Recent Updates (v0.1.0-beta.2)

  • ✨ Refined SciRS2 v0.1.0-beta.3 integration with unified import patterns
  • πŸ“š Comprehensive policy documentation (SCIRS2_INTEGRATION_POLICY.md)
  • πŸ› οΈ Enhanced developer experience with CLAUDE.md development guidelines
  • πŸ”„ All subcrates updated with consistent SciRS2 usage patterns
  • πŸ“– Significantly improved documentation across all modules
  • πŸš€ Performance optimizations in state-vector simulator
  • πŸ› Bug fixes in circuit optimization passes

Β§Roadmap

  • v0.1.0-beta.3: Distributed quantum simulation, enhanced error correction
  • v0.1.0: Stable release with complete API stability guarantees
  • v0.2.0: Advanced quantum ML models, quantum chemistry extensions

Built with ❀️ by the QuantRS2 Contributors

Empowering quantum computing research and development with Rust’s performance and safety.

Re-exportsΒ§

pub use quantrs2_core as core;