pub trait ErrorCorrection {
// Required methods
fn physical_qubits(&self) -> usize;
fn logical_qubits(&self) -> usize;
fn distance(&self) -> usize;
fn encode_circuit(
&self,
logical_qubits: &[QubitId],
ancilla_qubits: &[QubitId],
) -> Result<Circuit<16>>;
fn decode_circuit(
&self,
encoded_qubits: &[QubitId],
syndrome_qubits: &[QubitId],
) -> Result<Circuit<16>>;
}
Expand description
Trait for quantum error correction codes
Required Methods§
Sourcefn physical_qubits(&self) -> usize
fn physical_qubits(&self) -> usize
Get the number of physical qubits required
Sourcefn logical_qubits(&self) -> usize
fn logical_qubits(&self) -> usize
Get the number of logical qubits encoded
Sourcefn distance(&self) -> usize
fn distance(&self) -> usize
Get the distance of the code (minimum number of errors it can detect)
Sourcefn encode_circuit(
&self,
logical_qubits: &[QubitId],
ancilla_qubits: &[QubitId],
) -> Result<Circuit<16>>
fn encode_circuit( &self, logical_qubits: &[QubitId], ancilla_qubits: &[QubitId], ) -> Result<Circuit<16>>
Create a circuit to encode logical qubits into the error correction code
§Arguments
logical_qubits
- The qubits containing the logical information to encodeancilla_qubits
- Additional qubits used for the encoding
§Returns
A Result containing the circuit with encoding operations, or an error if insufficient qubits
Sourcefn decode_circuit(
&self,
encoded_qubits: &[QubitId],
syndrome_qubits: &[QubitId],
) -> Result<Circuit<16>>
fn decode_circuit( &self, encoded_qubits: &[QubitId], syndrome_qubits: &[QubitId], ) -> Result<Circuit<16>>
Create a circuit to decode and correct errors
§Arguments
encoded_qubits
- The qubits that contain the encoded informationsyndrome_qubits
- Additional qubits used for syndrome extraction and error correction
§Returns
A Result containing the circuit with error detection and correction operations, or an error if insufficient qubits