pub struct BesselResidual {
orders: Vec<f64>,
arguments: Vec<Complex>,
kind: Bessel,
spherical: bool,
derivative: u8,
size: usize,
}Expand description
What bessel_array saves for its pullback: the orders, the arguments and the
function. Only the arguments get gradients.
Fields§
§orders: Vec<f64>§arguments: Vec<Complex>§kind: Bessel§spherical: bool§derivative: u8§size: usizeImplementations§
Source§impl BesselResidual
impl BesselResidual
Sourcepub fn new(
orders: Vec<f64>,
arguments: Vec<Complex>,
kind: Bessel,
spherical: bool,
derivative: u8,
) -> Result<Self>
pub fn new( orders: Vec<f64>, arguments: Vec<Complex>, kind: Bessel, spherical: bool, derivative: u8, ) -> Result<Self>
Keep the broadcast inputs needed by derivatives without evaluating values.
fn evaluate(&self, i: usize, derivative: u8) -> Result<Complex>
Sourcepub fn pushforward(&self, tangents: [&[Complex]; 1]) -> Result<Vec<Complex>>
pub fn pushforward(&self, tangents: [&[Complex]; 1]) -> Result<Vec<Complex>>
Directional derivative of every value with respect to its complex argument.
Sourcepub fn pullback(&self, cotangent: &[Complex]) -> Result<Vec<Complex>>
pub fn pullback(&self, cotangent: &[Complex]) -> Result<Vec<Complex>>
The gradient with respect to the arguments, given the gradient cotangent with
respect to the values: cotangent times the conjugate of the next derivative. An
argument given as one value for all elements receives the sum of its element
gradients; the orders have no gradient.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for BesselResidual
impl RefUnwindSafe for BesselResidual
impl Send for BesselResidual
impl Sync for BesselResidual
impl Unpin for BesselResidual
impl UnwindSafe for BesselResidual
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> 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 more§impl<T> Pointable for T
impl<T> Pointable for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§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 more§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).§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.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.