pub struct ComplexScalar { /* private fields */ }
Expand description
A complex-valued Amplitude
which just contains two parameters representing its real and
imaginary parts.
Implementations§
Source§impl ComplexScalar
impl ComplexScalar
Sourcepub fn new(
name: &str,
re: ParameterLike,
im: ParameterLike,
) -> Box<ComplexScalar>
pub fn new( name: &str, re: ParameterLike, im: ParameterLike, ) -> Box<ComplexScalar>
Create a new ComplexScalar
with the given name, real, and imaginary part.
Trait Implementations§
Source§impl Amplitude for ComplexScalar
impl Amplitude for ComplexScalar
Source§fn register(
&mut self,
resources: &mut Resources,
) -> Result<AmplitudeID, LadduError>
fn register( &mut self, resources: &mut Resources, ) -> Result<AmplitudeID, LadduError>
This method should be used to tell the
Resources
manager about all of
the free parameters and cached values used by this Amplitude
. It should end by
returning an AmplitudeID
, which can be obtained from the
Resources::register_amplitude
method.Source§fn compute(
&self,
parameters: &Parameters<'_>,
_event: &Event,
_cache: &Cache,
) -> Complex<f64>
fn compute( &self, parameters: &Parameters<'_>, _event: &Event, _cache: &Cache, ) -> Complex<f64>
This method constitutes the main machinery of an
Amplitude
, returning the actual
calculated value for a particular Event
and set of Parameters
. See those
structs, as well as Cache
, for documentation on their available methods. For the
most part, Event
s can be interacted with via
Variable
s, while Parameters
and the
Cache
are more like key-value storage accessed by
ParameterID
s and several different types of cache
IDs.Source§fn compute_gradient(
&self,
_parameters: &Parameters<'_>,
_event: &Event,
_cache: &Cache,
gradient: &mut Matrix<Complex<f64>, Dyn, Const<1>, VecStorage<Complex<f64>, Dyn, Const<1>>>,
)
fn compute_gradient( &self, _parameters: &Parameters<'_>, _event: &Event, _cache: &Cache, gradient: &mut Matrix<Complex<f64>, Dyn, Const<1>, VecStorage<Complex<f64>, Dyn, Const<1>>>, )
This method yields the gradient of a particular
Amplitude
at a point specified
by a particular Event
and set of Parameters
. See those structs, as well as
Cache
, for documentation on their available methods. For the most part,
Event
s can be interacted with via Variable
s,
while Parameters
and the Cache
are more like key-value storage accessed by
ParameterID
s and several different types of cache
IDs. If the analytic version of the gradient is known, this method can be overwritten to
improve performance for some derivative-using methods of minimization. The default
implementation calculates a central finite difference across all parameters, regardless of
whether or not they are used in the Amplitude
. Read moreSource§fn precompute(&self, event: &Event, cache: &mut Cache)
fn precompute(&self, event: &Event, cache: &mut Cache)
Source§fn precompute_all(&self, dataset: &Dataset, resources: &mut Resources)
fn precompute_all(&self, dataset: &Dataset, resources: &mut Resources)
Source§fn central_difference_with_indices(
&self,
indices: &[usize],
parameters: &Parameters<'_>,
event: &Event,
cache: &Cache,
gradient: &mut Matrix<Complex<f64>, Dyn, Const<1>, VecStorage<Complex<f64>, Dyn, Const<1>>>,
)
fn central_difference_with_indices( &self, indices: &[usize], parameters: &Parameters<'_>, event: &Event, cache: &Cache, gradient: &mut Matrix<Complex<f64>, Dyn, Const<1>, VecStorage<Complex<f64>, Dyn, Const<1>>>, )
A helper function to implement a central difference only on indices which correspond to
free parameters in the
Amplitude
. For example, if an Amplitude
contains free
parameters registered to indices 1, 3, and 5 of the its internal parameters array, then
running this with those indices will compute a central finite difference derivative for
those coordinates only, since the rest can be safely assumed to be zero.Source§impl Clone for ComplexScalar
impl Clone for ComplexScalar
Source§fn clone(&self) -> ComplexScalar
fn clone(&self) -> ComplexScalar
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<'de> Deserialize<'de> for ComplexScalar
impl<'de> Deserialize<'de> for ComplexScalar
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<ComplexScalar, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<ComplexScalar, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl Serialize for ComplexScalar
impl Serialize for ComplexScalar
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Serialize this value into the given Serde serializer. Read more
Auto Trait Implementations§
impl Freeze for ComplexScalar
impl RefUnwindSafe for ComplexScalar
impl Send for ComplexScalar
impl Sync for ComplexScalar
impl Unpin for ComplexScalar
impl UnwindSafe for ComplexScalar
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<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.