pub struct GaussianState {
pub mean: Vec<f64>,
pub covariance: Vec<Vec<f64>>,
pub num_modes: usize,
}Expand description
Gaussian state representation in phase space
Fields§
§mean: Vec<f64>Mean vector (displacement vector)
covariance: Vec<Vec<f64>>Covariance matrix
num_modes: usizeNumber of modes
Implementations§
Source§impl GaussianState
impl GaussianState
Sourcepub fn coherent(alpha: Complex, mode: usize, num_modes: usize) -> CVResult<Self>
pub fn coherent(alpha: Complex, mode: usize, num_modes: usize) -> CVResult<Self>
Create coherent state with displacement alpha
Sourcepub fn squeezed_vacuum(
r: f64,
phi: f64,
mode: usize,
num_modes: usize,
) -> CVResult<Self>
pub fn squeezed_vacuum( r: f64, phi: f64, mode: usize, num_modes: usize, ) -> CVResult<Self>
Create squeezed vacuum state
Sourcepub fn thermal(n_bar: f64, mode: usize, num_modes: usize) -> CVResult<Self>
pub fn thermal(n_bar: f64, mode: usize, num_modes: usize) -> CVResult<Self>
Create thermal state
Sourcepub fn displace(&mut self, alpha: Complex, mode: usize) -> CVResult<()>
pub fn displace(&mut self, alpha: Complex, mode: usize) -> CVResult<()>
Apply displacement operation
Sourcepub fn squeeze(&mut self, r: f64, phi: f64, mode: usize) -> CVResult<()>
pub fn squeeze(&mut self, r: f64, phi: f64, mode: usize) -> CVResult<()>
Apply squeezing operation
Sourcepub fn two_mode_squeeze(
&mut self,
r: f64,
phi: f64,
mode1: usize,
mode2: usize,
) -> CVResult<()>
pub fn two_mode_squeeze( &mut self, r: f64, phi: f64, mode1: usize, mode2: usize, ) -> CVResult<()>
Apply two-mode squeezing operation
Sourcepub fn beamsplitter(
&mut self,
theta: f64,
phi: f64,
mode1: usize,
mode2: usize,
) -> CVResult<()>
pub fn beamsplitter( &mut self, theta: f64, phi: f64, mode1: usize, mode2: usize, ) -> CVResult<()>
Apply beamsplitter operation
Sourcepub fn fidelity(&self, other: &Self) -> CVResult<f64>
pub fn fidelity(&self, other: &Self) -> CVResult<f64>
Calculate fidelity with another Gaussian state
Sourcepub fn average_photon_number(&self, mode: usize) -> CVResult<f64>
pub fn average_photon_number(&self, mode: usize) -> CVResult<f64>
Get average photon number for a mode
Sourcepub fn squeezing_parameter(&self, mode: usize) -> CVResult<f64>
pub fn squeezing_parameter(&self, mode: usize) -> CVResult<f64>
Get squeezing parameter for a mode
Trait Implementations§
Source§impl Clone for GaussianState
impl Clone for GaussianState
Source§fn clone(&self) -> GaussianState
fn clone(&self) -> GaussianState
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 moreSource§impl Debug for GaussianState
impl Debug for GaussianState
Source§impl<'de> Deserialize<'de> for GaussianState
impl<'de> Deserialize<'de> for GaussianState
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for GaussianState
impl RefUnwindSafe for GaussianState
impl Send for GaussianState
impl Sync for GaussianState
impl Unpin for GaussianState
impl UnwindSafe for GaussianState
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> 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>
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<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> Serialize for T
impl<T> Serialize for T
fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<(), Error>
fn do_erased_serialize( &self, serializer: &mut dyn Serializer, ) -> Result<(), ErrorImpl>
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.