pub struct Depolarizing {
pub support: [u32; 1],
pub p: f64,
}Expand description
Single-qubit depolarizing noise with error probability p.
In the Heisenberg picture this is just a coefficient rescaling: the
identity on the support qubit is preserved unchanged; every non-identity
Pauli on the support is multiplied by 1 - 4p/3. Self-adjoint, so the
default apply_adjoint from the trait is correct.
§Examples
use paulistrings::channel::Depolarizing;
let ch = Depolarizing { support: [3], p: 0.05 };Fields§
§support: [u32; 1]The single qubit this channel acts on.
p: f64Error probability p ∈ [0, 1].
Trait Implementations§
Source§impl<const W: usize> Channel<W> for Depolarizing
impl<const W: usize> Channel<W> for Depolarizing
Source§fn max_fanout(&self) -> usize
fn max_fanout(&self) -> usize
Maximum number of output terms produced per input term. Used by the
engine to size the scratch buffer up-front.
Source§fn support(&self) -> &[u32]
fn support(&self) -> &[u32]
Qubits this channel acts on. Outputs differ from inputs only at these
bit positions; the engine uses this for bucket layout (§5).
Source§fn apply(
&self,
input_x: &[u64; W],
input_z: &[u64; W],
coeff: Complex64,
out: &mut OutputBuffer<'_, W>,
)
fn apply( &self, input_x: &[u64; W], input_z: &[u64; W], coeff: Complex64, out: &mut OutputBuffer<'_, W>, )
Apply the channel to a single input term, writing outputs to
out.Source§fn apply_adjoint(
&self,
input_x: &[u64; W],
input_z: &[u64; W],
coeff: Complex64,
out: &mut OutputBuffer<'_, W>,
)
fn apply_adjoint( &self, input_x: &[u64; W], input_z: &[u64; W], coeff: Complex64, out: &mut OutputBuffer<'_, W>, )
Apply the channel’s adjoint to a single input term, writing outputs
to
out. Used by the engine in Direction::Heisenberg mode for
backpropagating observables. Read moreAuto Trait Implementations§
impl Freeze for Depolarizing
impl RefUnwindSafe for Depolarizing
impl Send for Depolarizing
impl Sync for Depolarizing
impl Unpin for Depolarizing
impl UnwindSafe for Depolarizing
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
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more