quantrs2_anneal/quantum_error_correction/
codes.rs

1//! Error Correction Code Types
2
3/// Error correction code types
4#[derive(Debug, Clone, PartialEq, Eq)]
5pub enum ErrorCorrectionCode {
6    /// Surface code
7    SurfaceCode,
8    /// Color code
9    ColorCode,
10    /// Repetition code
11    RepetitionCode,
12    /// Steane code
13    SteaneCode,
14    /// Shor code
15    ShorCode,
16    /// CSS codes
17    CSSCode,
18    /// Stabilizer codes
19    StabilizerCode,
20    /// Topological codes
21    TopologicalCode,
22    /// LDPC codes
23    LDPCCode,
24}
25
26/// Code parameters
27#[derive(Debug, Clone)]
28pub struct CodeParameters {
29    /// Distance of the code
30    pub distance: usize,
31    /// Number of logical qubits
32    pub num_logical_qubits: usize,
33    /// Number of physical qubits
34    pub num_physical_qubits: usize,
35    /// Number of ancilla qubits
36    pub num_ancilla_qubits: usize,
37    /// Code rate
38    pub code_rate: f64,
39    /// Threshold probability
40    pub threshold_probability: f64,
41}
42
43impl Default for CodeParameters {
44    fn default() -> Self {
45        Self {
46            distance: 3,
47            num_logical_qubits: 1,
48            num_physical_qubits: 9,
49            num_ancilla_qubits: 4,
50            code_rate: 0.11,
51            threshold_probability: 0.01,
52        }
53    }
54}