pub struct ErrorChainComplex { /* private fields */ }Expand description
Error chain complex for a Clifford circuit with noise.
Represents the chain complex C₂ →∂₂→ C₁ →∂₁→ C₀ where:
- C₀ = F₂^m (measurement/detector space)
- C₁ = F₂^p (error location space)
- C₂ = F₂^s (stabilizer space)
- ∂₁ = E (the m×p error propagation matrix)
Implementations§
Source§impl ErrorChainComplex
impl ErrorChainComplex
Sourcepub fn build(circuit: &Circuit, noise: &NoiseModel, _seed: u64) -> Result<Self>
pub fn build(circuit: &Circuit, noise: &NoiseModel, _seed: u64) -> Result<Self>
Build the error chain complex from a Clifford circuit and noise model.
Uses backward Pauli propagation (same as the compiled noisy sampler) to determine which measurements are sensitive to each error location.
pub fn boundary_dim(&self) -> usize
pub fn homology_dim(&self) -> usize
Sourcepub fn noisy_marginals(&self, noiseless_marginals: &[f64]) -> Vec<f64>
pub fn noisy_marginals(&self, noiseless_marginals: &[f64]) -> Vec<f64>
Compute exact noisy marginals analytically. No sampling, no rank limit.
For each measurement j, the noisy probability is: p_j^noisy = p_j + (1 - 2·p_j) · (1 - f_j) / 2 where f_j = Π_{e: E(j,e)=1} (1 - 2·p_e) is the flip attenuation factor and p_j is the noiseless marginal (0, 0.5, or 1).
Cost: O(nnz(E)). Works for any qubit count.
Auto Trait Implementations§
impl Freeze for ErrorChainComplex
impl RefUnwindSafe for ErrorChainComplex
impl Send for ErrorChainComplex
impl Sync for ErrorChainComplex
impl Unpin for ErrorChainComplex
impl UnsafeUnpin for ErrorChainComplex
impl UnwindSafe for ErrorChainComplex
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more