Skip to main content

oxirs_stream/quantum_processing/
quantum_config.rs

1//! Quantum processor configuration and basic types
2
3use serde::{Deserialize, Serialize};
4
5/// Quantum processor configuration
6#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct QuantumConfig {
8    pub available_qubits: u32,
9    pub coherence_time_microseconds: f64,
10    pub gate_fidelity: f64,
11    pub measurement_fidelity: f64,
12    pub topology: QuantumTopology,
13    pub supported_gates: Vec<QuantumGate>,
14    pub error_correction_code: ErrorCorrectionCode,
15    pub quantum_volume: u64,
16    pub max_circuit_depth: u32,
17    pub classical_control_overhead_ns: f64,
18}
19
20impl Default for QuantumConfig {
21    fn default() -> Self {
22        Self {
23            available_qubits: 20,
24            coherence_time_microseconds: 100.0,
25            gate_fidelity: 0.999,
26            measurement_fidelity: 0.985,
27            topology: QuantumTopology::Grid2D,
28            supported_gates: vec![
29                QuantumGate::PauliX,
30                QuantumGate::PauliY,
31                QuantumGate::PauliZ,
32                QuantumGate::Hadamard,
33                QuantumGate::CNOT,
34                QuantumGate::CZ,
35                QuantumGate::RZ(0.0),
36            ],
37            error_correction_code: ErrorCorrectionCode::Surface,
38            quantum_volume: 64,
39            max_circuit_depth: 200,
40            classical_control_overhead_ns: 1000.0,
41        }
42    }
43}
44
45/// Quantum processor topology
46#[derive(Debug, Clone, Serialize, Deserialize)]
47pub enum QuantumTopology {
48    Linear,
49    Ring,
50    Grid2D,
51    CompleteGraph,
52    IonTrap,
53    Superconducting,
54    PhotonicMesh,
55    Custom(String),
56}
57
58/// Quantum gates supported
59#[derive(Debug, Clone, Serialize, Deserialize)]
60pub enum QuantumGate {
61    // Single-qubit gates
62    PauliX,
63    PauliY,
64    PauliZ,
65    Hadamard,
66    Phase,
67    SPhase,
68    TGate,
69    RX(f64),
70    RY(f64),
71    RZ(f64),
72    U3(f64, f64, f64),
73
74    // Two-qubit gates
75    CNOT,
76    CZ,
77    SWAP,
78    CRX(f64),
79    CRY(f64),
80    CRZ(f64),
81
82    // Multi-qubit gates
83    Toffoli,
84    Fredkin,
85    CSwap,
86
87    // Specialized gates
88    QFT,
89    InverseQFT,
90    GroverDiffusion,
91    Custom(String),
92}
93
94/// Error correction codes
95#[derive(Debug, Clone, Serialize, Deserialize)]
96pub enum ErrorCorrectionCode {
97    None,
98    Repetition,
99    Shor,
100    Steane,
101    Surface,
102    ColorCode,
103    ToricCode,
104    Concatenated,
105}