pub struct DecompositionValidator { /* private fields */ }Expand description
Decomposition validator
Implementations§
Source§impl DecompositionValidator
impl DecompositionValidator
Sourcepub fn validate(
&self,
original: &dyn GateOp,
decomposed: &[DecomposedGate],
) -> QuantRS2Result<bool>
pub fn validate( &self, original: &dyn GateOp, decomposed: &[DecomposedGate], ) -> QuantRS2Result<bool>
Validate that a decomposition is equivalent to original gate.
Reconstructs the product unitary of the decomposed native gates and
compares it to the original gate’s matrix (up to a global phase). Returns
true iff the two unitaries agree within self.tolerance.
Sourcepub fn calculate_fidelity(
&self,
original: &dyn GateOp,
decomposed: &[DecomposedGate],
) -> QuantRS2Result<f64>
pub fn calculate_fidelity( &self, original: &dyn GateOp, decomposed: &[DecomposedGate], ) -> QuantRS2Result<f64>
Calculate the (global-phase-invariant) gate fidelity between the original gate and the product of its decomposition.
For a d-dimensional Hilbert space the average-gate-fidelity-equivalent
quantity used here is |Tr(U_orig† · U_decomp)|² / d², which equals 1
exactly when the two unitaries are identical up to a global phase.
Returns an honest QuantRS2Error::UnsupportedOperation when the
decomposition uses a native gate this validator cannot reconstruct a
matrix for (rather than fabricating a high fidelity).
Auto Trait Implementations§
impl Freeze for DecompositionValidator
impl RefUnwindSafe for DecompositionValidator
impl Send for DecompositionValidator
impl Sync for DecompositionValidator
impl Unpin for DecompositionValidator
impl UnsafeUnpin for DecompositionValidator
impl UnwindSafe for DecompositionValidator
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
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> ⓘ
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> ⓘ
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.