oxirs_stream/quantum_processing/
quantum_config.rs1use serde::{Deserialize, Serialize};
4
5#[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#[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#[derive(Debug, Clone, Serialize, Deserialize)]
60pub enum QuantumGate {
61 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 CNOT,
76 CZ,
77 SWAP,
78 CRX(f64),
79 CRY(f64),
80 CRZ(f64),
81
82 Toffoli,
84 Fredkin,
85 CSwap,
86
87 QFT,
89 InverseQFT,
90 GroverDiffusion,
91 Custom(String),
92}
93
94#[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}