pub enum Expression {
Zero,
One,
Amp(AmplitudeID),
Add(Box<Expression>, Box<Expression>),
Sub(Box<Expression>, Box<Expression>),
Mul(Box<Expression>, Box<Expression>),
Div(Box<Expression>, Box<Expression>),
Neg(Box<Expression>),
Real(Box<Expression>),
Imag(Box<Expression>),
Conj(Box<Expression>),
NormSqr(Box<Expression>),
}
Expand description
An expression tree which contains AmplitudeID
s and operators over them.
Variants§
Zero
A expression equal to zero.
One
A expression equal to one.
Amp(AmplitudeID)
A registered Amplitude
referenced by an AmplitudeID
.
Add(Box<Expression>, Box<Expression>)
The sum of two Expression
s.
Sub(Box<Expression>, Box<Expression>)
The difference of two Expression
s.
Mul(Box<Expression>, Box<Expression>)
The product of two Expression
s.
Div(Box<Expression>, Box<Expression>)
The division of two Expression
s.
Neg(Box<Expression>)
The additive inverse of an Expression
.
Real(Box<Expression>)
The real part of an Expression
.
Imag(Box<Expression>)
The imaginary part of an Expression
.
Conj(Box<Expression>)
The complex conjugate of an Expression
.
NormSqr(Box<Expression>)
The absolute square of an Expression
.
Implementations§
Source§impl Expression
impl Expression
Sourcepub fn evaluate(&self, amplitude_values: &AmplitudeValues) -> Complex<Float>
pub fn evaluate(&self, amplitude_values: &AmplitudeValues) -> Complex<Float>
Evaluate an Expression
over a single event using calculated AmplitudeValues
This method parses the underlying Expression
but doesn’t actually calculate the values
from the Amplitude
s themselves.
Sourcepub fn evaluate_gradient(
&self,
amplitude_values: &AmplitudeValues,
gradient_values: &GradientValues,
) -> DVector<Complex<Float>>
pub fn evaluate_gradient( &self, amplitude_values: &AmplitudeValues, gradient_values: &GradientValues, ) -> DVector<Complex<Float>>
Evaluate the gradient of an Expression
over a single event using calculated AmplitudeValues
This method parses the underlying Expression
but doesn’t actually calculate the
gradient from the Amplitude
s themselves.
Sourcepub fn real(&self) -> Self
pub fn real(&self) -> Self
Takes the real part of the given Expression
.
Sourcepub fn imag(&self) -> Self
pub fn imag(&self) -> Self
Takes the imaginary part of the given Expression
.
Sourcepub fn conj(&self) -> Self
pub fn conj(&self) -> Self
Takes the complex conjugate of the given Expression
.
Sourcepub fn norm_sqr(&self) -> Self
pub fn norm_sqr(&self) -> Self
Takes the absolute square of the given Expression
.
Trait Implementations§
Source§impl Add<&AmplitudeID> for &Expression
impl Add<&AmplitudeID> for &Expression
Source§type Output = Expression
type Output = Expression
+
operator.Source§impl Add<&AmplitudeID> for Expression
impl Add<&AmplitudeID> for Expression
Source§type Output = Expression
type Output = Expression
+
operator.Source§impl Add<&Expression> for &AmplitudeID
impl Add<&Expression> for &AmplitudeID
Source§type Output = Expression
type Output = Expression
+
operator.Source§impl Add<&Expression> for &Expression
impl Add<&Expression> for &Expression
Source§type Output = Expression
type Output = Expression
+
operator.Source§impl Add<&Expression> for AmplitudeID
impl Add<&Expression> for AmplitudeID
Source§type Output = Expression
type Output = Expression
+
operator.Source§impl Add<&Expression> for Expression
impl Add<&Expression> for Expression
Source§type Output = Expression
type Output = Expression
+
operator.Source§impl Add<AmplitudeID> for &Expression
impl Add<AmplitudeID> for &Expression
Source§type Output = Expression
type Output = Expression
+
operator.Source§impl Add<AmplitudeID> for Expression
impl Add<AmplitudeID> for Expression
Source§type Output = Expression
type Output = Expression
+
operator.Source§impl Add<Expression> for &AmplitudeID
impl Add<Expression> for &AmplitudeID
Source§type Output = Expression
type Output = Expression
+
operator.Source§impl Add<Expression> for &Expression
impl Add<Expression> for &Expression
Source§type Output = Expression
type Output = Expression
+
operator.Source§impl Add<Expression> for AmplitudeID
impl Add<Expression> for AmplitudeID
Source§type Output = Expression
type Output = Expression
+
operator.Source§impl Add for Expression
impl Add for Expression
Source§type Output = Expression
type Output = Expression
+
operator.Source§impl Clone for Expression
impl Clone for Expression
Source§fn clone(&self) -> Expression
fn clone(&self) -> Expression
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for Expression
impl Debug for Expression
Source§impl Default for Expression
impl Default for Expression
Source§fn default() -> Expression
fn default() -> Expression
Source§impl<'de> Deserialize<'de> for Expression
impl<'de> Deserialize<'de> for Expression
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>,
Source§impl Display for Expression
impl Display for Expression
Source§impl Div<&AmplitudeID> for &Expression
impl Div<&AmplitudeID> for &Expression
Source§type Output = Expression
type Output = Expression
/
operator.Source§impl Div<&AmplitudeID> for Expression
impl Div<&AmplitudeID> for Expression
Source§type Output = Expression
type Output = Expression
/
operator.Source§impl Div<&Expression> for &AmplitudeID
impl Div<&Expression> for &AmplitudeID
Source§type Output = Expression
type Output = Expression
/
operator.Source§impl Div<&Expression> for &Expression
impl Div<&Expression> for &Expression
Source§type Output = Expression
type Output = Expression
/
operator.Source§impl Div<&Expression> for AmplitudeID
impl Div<&Expression> for AmplitudeID
Source§type Output = Expression
type Output = Expression
/
operator.Source§impl Div<&Expression> for Expression
impl Div<&Expression> for Expression
Source§type Output = Expression
type Output = Expression
/
operator.Source§impl Div<AmplitudeID> for &Expression
impl Div<AmplitudeID> for &Expression
Source§type Output = Expression
type Output = Expression
/
operator.Source§impl Div<AmplitudeID> for Expression
impl Div<AmplitudeID> for Expression
Source§type Output = Expression
type Output = Expression
/
operator.Source§impl Div<Expression> for &AmplitudeID
impl Div<Expression> for &AmplitudeID
Source§type Output = Expression
type Output = Expression
/
operator.Source§impl Div<Expression> for &Expression
impl Div<Expression> for &Expression
Source§type Output = Expression
type Output = Expression
/
operator.Source§impl Div<Expression> for AmplitudeID
impl Div<Expression> for AmplitudeID
Source§type Output = Expression
type Output = Expression
/
operator.Source§impl Div for Expression
impl Div for Expression
Source§type Output = Expression
type Output = Expression
/
operator.Source§impl From<AmplitudeID> for Expression
impl From<AmplitudeID> for Expression
Source§fn from(value: AmplitudeID) -> Self
fn from(value: AmplitudeID) -> Self
Source§impl Mul<&AmplitudeID> for &Expression
impl Mul<&AmplitudeID> for &Expression
Source§type Output = Expression
type Output = Expression
*
operator.Source§impl Mul<&AmplitudeID> for Expression
impl Mul<&AmplitudeID> for Expression
Source§type Output = Expression
type Output = Expression
*
operator.Source§impl Mul<&Expression> for &AmplitudeID
impl Mul<&Expression> for &AmplitudeID
Source§type Output = Expression
type Output = Expression
*
operator.Source§impl Mul<&Expression> for &Expression
impl Mul<&Expression> for &Expression
Source§type Output = Expression
type Output = Expression
*
operator.Source§impl Mul<&Expression> for AmplitudeID
impl Mul<&Expression> for AmplitudeID
Source§type Output = Expression
type Output = Expression
*
operator.Source§impl Mul<&Expression> for Expression
impl Mul<&Expression> for Expression
Source§type Output = Expression
type Output = Expression
*
operator.Source§impl Mul<AmplitudeID> for &Expression
impl Mul<AmplitudeID> for &Expression
Source§type Output = Expression
type Output = Expression
*
operator.Source§impl Mul<AmplitudeID> for Expression
impl Mul<AmplitudeID> for Expression
Source§type Output = Expression
type Output = Expression
*
operator.Source§impl Mul<Expression> for &AmplitudeID
impl Mul<Expression> for &AmplitudeID
Source§type Output = Expression
type Output = Expression
*
operator.Source§impl Mul<Expression> for &Expression
impl Mul<Expression> for &Expression
Source§type Output = Expression
type Output = Expression
*
operator.Source§impl Mul<Expression> for AmplitudeID
impl Mul<Expression> for AmplitudeID
Source§type Output = Expression
type Output = Expression
*
operator.Source§impl Mul for Expression
impl Mul for Expression
Source§type Output = Expression
type Output = Expression
*
operator.Source§impl Neg for &Expression
impl Neg for &Expression
Source§impl Neg for Expression
impl Neg for Expression
Source§impl Serialize for Expression
impl Serialize for Expression
Source§impl Sub<&AmplitudeID> for &Expression
impl Sub<&AmplitudeID> for &Expression
Source§type Output = Expression
type Output = Expression
-
operator.Source§impl Sub<&AmplitudeID> for Expression
impl Sub<&AmplitudeID> for Expression
Source§type Output = Expression
type Output = Expression
-
operator.Source§impl Sub<&Expression> for &AmplitudeID
impl Sub<&Expression> for &AmplitudeID
Source§type Output = Expression
type Output = Expression
-
operator.Source§impl Sub<&Expression> for &Expression
impl Sub<&Expression> for &Expression
Source§type Output = Expression
type Output = Expression
-
operator.Source§impl Sub<&Expression> for AmplitudeID
impl Sub<&Expression> for AmplitudeID
Source§type Output = Expression
type Output = Expression
-
operator.Source§impl Sub<&Expression> for Expression
impl Sub<&Expression> for Expression
Source§type Output = Expression
type Output = Expression
-
operator.Source§impl Sub<AmplitudeID> for &Expression
impl Sub<AmplitudeID> for &Expression
Source§type Output = Expression
type Output = Expression
-
operator.Source§impl Sub<AmplitudeID> for Expression
impl Sub<AmplitudeID> for Expression
Source§type Output = Expression
type Output = Expression
-
operator.Source§impl Sub<Expression> for &AmplitudeID
impl Sub<Expression> for &AmplitudeID
Source§type Output = Expression
type Output = Expression
-
operator.Source§impl Sub<Expression> for &Expression
impl Sub<Expression> for &Expression
Source§type Output = Expression
type Output = Expression
-
operator.Source§impl Sub<Expression> for AmplitudeID
impl Sub<Expression> for AmplitudeID
Source§type Output = Expression
type Output = Expression
-
operator.Source§impl Sub for Expression
impl Sub for Expression
Source§type Output = Expression
type Output = Expression
-
operator.Auto Trait Implementations§
impl Freeze for Expression
impl RefUnwindSafe for Expression
impl Send for Expression
impl Sync for Expression
impl Unpin for Expression
impl UnwindSafe for Expression
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
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>
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> 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>
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.