pub struct AmplitudeDamping {
pub support: [u32; 1],
pub gamma: f64,
}Expand description
Single-qubit amplitude damping with parameter gamma.
The only noise in the built-in set with genuine fan-out > 1. Heisenberg
dual via Kraus operators E_0 = |0⟩⟨0| + √(1-γ)|1⟩⟨1| and
E_1 = √γ |0⟩⟨1|:
I → IX → √(1-γ) XY → √(1-γ) YZ → (1-γ) Z + γ I(the only fanout-2 case)
Not self-adjoint in general — the Heisenberg adjoint of amplitude damping
is not amplitude damping itself. v0.1 uses the default apply_adjoint = apply placeholder; users propagating in Direction::Heisenberg mode
with this channel should be aware of that approximation. (The
non-Heisenberg use-case is the common one and is exact.)
Fields§
§support: [u32; 1]The single qubit this channel acts on.
gamma: f64Damping parameter γ ∈ [0, 1]. The amplitude that escapes to the
|0⟩ state per application.
Trait Implementations§
Source§impl<const W: usize> Channel<W> for AmplitudeDamping
impl<const W: usize> Channel<W> for AmplitudeDamping
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 AmplitudeDamping
impl RefUnwindSafe for AmplitudeDamping
impl Send for AmplitudeDamping
impl Sync for AmplitudeDamping
impl Unpin for AmplitudeDamping
impl UnwindSafe for AmplitudeDamping
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