pub struct VirtualDistillation {
pub num_copies: usize,
pub use_symmetrization: bool,
/* private fields */
}Expand description
Virtual Distillation error mitigation technique
Virtual Distillation uses multiple copies of a quantum state to create a “purified” version that suppresses errors. This technique is particularly effective for variational algorithms.
Reference: Koczor, B. (2021). “Exponential Error Suppression for Near-Term Quantum Devices”
Fields§
§num_copies: usizeNumber of state copies to use
use_symmetrization: boolPermutation group for symmetrization
Implementations§
Source§impl VirtualDistillation
impl VirtualDistillation
Sourcepub fn mitigate_expectation(
&mut self,
raw_results: &[f64],
observable: &Array1<Complex64>,
) -> Result<f64, QuantRS2Error>
pub fn mitigate_expectation( &mut self, raw_results: &[f64], observable: &Array1<Complex64>, ) -> Result<f64, QuantRS2Error>
Sourcepub const fn error_suppression_factor(&self, base_error: f64) -> f64
pub const fn error_suppression_factor(&self, base_error: f64) -> f64
Estimate error suppression factor
Virtual distillation provides exponential error suppression: ε_suppressed ≈ ε^n where n is the number of copies
Trait Implementations§
Source§impl Clone for VirtualDistillation
impl Clone for VirtualDistillation
Source§fn clone(&self) -> VirtualDistillation
fn clone(&self) -> VirtualDistillation
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for VirtualDistillation
impl RefUnwindSafe for VirtualDistillation
impl Send for VirtualDistillation
impl Sync for VirtualDistillation
impl Unpin for VirtualDistillation
impl UnwindSafe for VirtualDistillation
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
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>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
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
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.