Struct autodiff::forward_autodiff::F
source · [−]#[repr(C)]pub struct F<V, D> {
pub x: V,
pub dx: D,
}
Expand description
A generic forward differentiation Dual
number.
The derivative is generic in V
to support composition and alternative
numeric types and in D
to support higher order differentiation.
Fields
x: V
The value of the variable.
dx: D
The derivative of the variable.
Implementations
Trait Implementations
sourceimpl<V: AddAssign, D: AddAssign> AddAssign<F<V, D>> for F<V, D>
impl<V: AddAssign, D: AddAssign> AddAssign<F<V, D>> for F<V, D>
sourcefn add_assign(&mut self, rhs: F<V, D>)
fn add_assign(&mut self, rhs: F<V, D>)
Performs the +=
operation. Read more
sourceimpl<V: AddAssign, D> AddAssign<V> for F<V, D>
impl<V: AddAssign, D> AddAssign<V> for F<V, D>
sourcefn add_assign(&mut self, rhs: V)
fn add_assign(&mut self, rhs: V)
Performs the +=
operation. Read more
sourceimpl<V, D> Div<F<V, D>> for F<V, D> where
V: Clone + Div<Output = V> + Mul<Output = V>,
D: Clone + Div<V, Output = D> + Mul<V, Output = D> + Sub<Output = D>,
impl<V, D> Div<F<V, D>> for F<V, D> where
V: Clone + Div<Output = V> + Mul<Output = V>,
D: Clone + Div<V, Output = D> + Mul<V, Output = D> + Sub<Output = D>,
sourceimpl<V, D> DivAssign<F<V, D>> for F<V, D> where
V: Clone + DivAssign + Mul<Output = V> + Div<Output = V>,
D: Mul<V, Output = D> + DivAssign<V> + SubAssign,
impl<V, D> DivAssign<F<V, D>> for F<V, D> where
V: Clone + DivAssign + Mul<Output = V> + Div<Output = V>,
D: Mul<V, Output = D> + DivAssign<V> + SubAssign,
sourcefn div_assign(&mut self, rhs: F<V, D>)
fn div_assign(&mut self, rhs: F<V, D>)
Performs the /=
operation. Read more
sourceimpl<V: DivAssign + Clone, D: DivAssign<V>> DivAssign<V> for F<V, D>
impl<V: DivAssign + Clone, D: DivAssign<V>> DivAssign<V> for F<V, D>
sourcefn div_assign(&mut self, rhs: V)
fn div_assign(&mut self, rhs: V)
Performs the /=
operation. Read more
sourceimpl<V, D> Float for F<V, D> where
V: Float,
D: Debug + Float + Zero + Neg<Output = D> + Mul<Output = D> + Mul<V, Output = D> + Add<Output = D> + Div<V, Output = D> + Div<Output = D> + Sub<Output = D> + Clone + PartialOrd,
impl<V, D> Float for F<V, D> where
V: Float,
D: Debug + Float + Zero + Neg<Output = D> + Mul<Output = D> + Mul<V, Output = D> + Add<Output = D> + Div<V, Output = D> + Div<Output = D> + Sub<Output = D> + Clone + PartialOrd,
sourcefn neg_infinity() -> F<V, D>
fn neg_infinity() -> F<V, D>
Returns the negative infinite value. Read more
sourcefn min_value() -> F<V, D>
fn min_value() -> F<V, D>
Returns the smallest finite value that this type can represent. Read more
sourcefn min_positive_value() -> F<V, D>
fn min_positive_value() -> F<V, D>
Returns the smallest positive, normalized value that this type can represent. Read more
sourcefn max_value() -> F<V, D>
fn max_value() -> F<V, D>
Returns the largest finite value that this type can represent. Read more
sourcefn is_infinite(self) -> bool
fn is_infinite(self) -> bool
Returns true
if this value is positive infinity or negative infinity and
false otherwise. Read more
sourcefn classify(self) -> FpCategory
fn classify(self) -> FpCategory
Returns the floating point category of the number. If only one property is going to be tested, it is generally faster to use the specific predicate instead. Read more
sourcefn floor(self) -> F<V, D>
fn floor(self) -> F<V, D>
Returns the largest integer less than or equal to a number. Read more
sourcefn ceil(self) -> F<V, D>
fn ceil(self) -> F<V, D>
Returns the smallest integer greater than or equal to a number. Read more
sourcefn round(self) -> F<V, D>
fn round(self) -> F<V, D>
Returns the nearest integer to a number. Round half-way cases away from
0.0
. Read more
sourcefn abs(self) -> F<V, D>
fn abs(self) -> F<V, D>
Computes the absolute value of self
. Returns Float::nan()
if the
number is Float::nan()
. Read more
sourcefn is_sign_positive(self) -> bool
fn is_sign_positive(self) -> bool
Returns true
if self
is positive, including +0.0
,
Float::infinity()
, and since Rust 1.20 also Float::nan()
. Read more
sourcefn is_sign_negative(self) -> bool
fn is_sign_negative(self) -> bool
Returns true
if self
is negative, including -0.0
,
Float::neg_infinity()
, and since Rust 1.20 also -Float::nan()
. Read more
sourcefn mul_add(self, a: F<V, D>, b: F<V, D>) -> F<V, D>
fn mul_add(self, a: F<V, D>, b: F<V, D>) -> F<V, D>
Fused multiply-add. Computes (self * a) + b
with only one rounding
error, yielding a more accurate result than an unfused multiply-add. Read more
sourcefn log(self, b: F<V, D>) -> F<V, D>
fn log(self, b: F<V, D>) -> F<V, D>
Returns the logarithm of the number with respect to an arbitrary base. Read more
sourcefn hypot(self, other: F<V, D>) -> F<V, D>
fn hypot(self, other: F<V, D>) -> F<V, D>
Calculate the length of the hypotenuse of a right-angle triangle given
legs of length x
and y
. Read more
sourcefn asin(self) -> F<V, D>
fn asin(self) -> F<V, D>
Computes the arcsine of a number. Return value is in radians in the range [-pi/2, pi/2] or NaN if the number is outside the range [-1, 1]. Read more
sourcefn acos(self) -> F<V, D>
fn acos(self) -> F<V, D>
Computes the arccosine of a number. Return value is in radians in the range [0, pi] or NaN if the number is outside the range [-1, 1]. Read more
sourcefn atan(self) -> F<V, D>
fn atan(self) -> F<V, D>
Computes the arctangent of a number. Return value is in radians in the range [-pi/2, pi/2]; Read more
sourcefn atan2(self, other: F<V, D>) -> F<V, D>
fn atan2(self, other: F<V, D>) -> F<V, D>
Computes the four quadrant arctangent of self
(y
) and other
(x
). Read more
sourcefn sin_cos(self) -> (F<V, D>, F<V, D>)
fn sin_cos(self) -> (F<V, D>, F<V, D>)
Simultaneously computes the sine and cosine of the number, x
. Returns
(sin(x), cos(x))
. Read more
sourcefn exp_m1(self) -> F<V, D>
fn exp_m1(self) -> F<V, D>
Returns e^(self) - 1
in a way that is accurate even if the
number is close to zero. Read more
sourcefn ln_1p(self) -> F<V, D>
fn ln_1p(self) -> F<V, D>
Returns ln(1+n)
(natural logarithm) more accurately than if
the operations were performed separately. Read more
sourcefn integer_decode(self) -> (u64, i16, i8)
fn integer_decode(self) -> (u64, i16, i8)
Returns the mantissa, base 2 exponent, and sign as integers, respectively.
The original number can be recovered by sign * mantissa * 2 ^ exponent
. Read more
sourcefn to_degrees(self) -> F<V, D>
fn to_degrees(self) -> F<V, D>
Converts radians to degrees. Read more
sourcefn to_radians(self) -> F<V, D>
fn to_radians(self) -> F<V, D>
Converts degrees to radians. Read more
sourceimpl<V: FloatConst, D: Zero> FloatConst for F<V, D>
impl<V: FloatConst, D: Zero> FloatConst for F<V, D>
sourcefn FRAC_1_SQRT_2() -> F<V, D>
fn FRAC_1_SQRT_2() -> F<V, D>
Return 1.0 / sqrt(2.0)
.
sourcefn FRAC_2_SQRT_PI() -> F<V, D>
fn FRAC_2_SQRT_PI() -> F<V, D>
Return 2.0 / sqrt(π)
.
sourceimpl<V: FromPrimitive, D: Zero> FromPrimitive for F<V, D>
impl<V: FromPrimitive, D: Zero> FromPrimitive for F<V, D>
sourcefn from_isize(n: isize) -> Option<Self>
fn from_isize(n: isize) -> Option<Self>
Converts an isize
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned. Read more
sourcefn from_i8(n: i8) -> Option<Self>
fn from_i8(n: i8) -> Option<Self>
Converts an i8
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned. Read more
sourcefn from_i16(n: i16) -> Option<Self>
fn from_i16(n: i16) -> Option<Self>
Converts an i16
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned. Read more
sourcefn from_i32(n: i32) -> Option<Self>
fn from_i32(n: i32) -> Option<Self>
Converts an i32
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned. Read more
sourcefn from_i64(n: i64) -> Option<Self>
fn from_i64(n: i64) -> Option<Self>
Converts an i64
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned. Read more
sourcefn from_i128(n: i128) -> Option<Self>
fn from_i128(n: i128) -> Option<Self>
Converts an i128
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned. Read more
sourcefn from_usize(n: usize) -> Option<Self>
fn from_usize(n: usize) -> Option<Self>
Converts a usize
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned. Read more
sourcefn from_u8(n: u8) -> Option<Self>
fn from_u8(n: u8) -> Option<Self>
Converts an u8
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned. Read more
sourcefn from_u16(n: u16) -> Option<Self>
fn from_u16(n: u16) -> Option<Self>
Converts an u16
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned. Read more
sourcefn from_u32(n: u32) -> Option<Self>
fn from_u32(n: u32) -> Option<Self>
Converts an u32
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned. Read more
sourcefn from_u64(n: u64) -> Option<Self>
fn from_u64(n: u64) -> Option<Self>
Converts an u64
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned. Read more
sourcefn from_u128(n: u128) -> Option<Self>
fn from_u128(n: u128) -> Option<Self>
Converts an u128
to return an optional value of this type. If the
value cannot be represented by this type, then None
is returned. Read more
sourceimpl<V: ToPrimitive, D> Into<f32> for F<V, D>
impl<V: ToPrimitive, D> Into<f32> for F<V, D>
sourceimpl<V: ToPrimitive, D> Into<f64> for F<V, D>
impl<V: ToPrimitive, D> Into<f64> for F<V, D>
sourceimpl<V, D> MulAssign<F<V, D>> for F<V, D> where
V: Clone + MulAssign,
D: MulAssign<V> + Mul<V, Output = D> + AddAssign,
impl<V, D> MulAssign<F<V, D>> for F<V, D> where
V: Clone + MulAssign,
D: MulAssign<V> + Mul<V, Output = D> + AddAssign,
sourcefn mul_assign(&mut self, rhs: F<V, D>)
fn mul_assign(&mut self, rhs: F<V, D>)
Performs the *=
operation. Read more
sourceimpl<V: MulAssign + Clone, D: MulAssign<V>> MulAssign<V> for F<V, D>
impl<V: MulAssign + Clone, D: MulAssign<V>> MulAssign<V> for F<V, D>
sourcefn mul_assign(&mut self, rhs: V)
fn mul_assign(&mut self, rhs: V)
Performs the *=
operation. Read more
sourceimpl<V, D> Num for F<V, D> where
V: Clone + Num,
D: Clone + Debug + Zero + PartialEq + Sub<Output = D> + Mul<V, Output = D> + Mul<Output = D> + Div<V, Output = D> + Div<Output = D>,
impl<V, D> Num for F<V, D> where
V: Clone + Num,
D: Clone + Debug + Zero + PartialEq + Sub<Output = D> + Mul<V, Output = D> + Mul<Output = D> + Div<V, Output = D> + Div<Output = D>,
type FromStrRadixErr = <V as Num>::FromStrRadixErr
sourcefn from_str_radix(src: &str, radix: u32) -> Result<Self, Self::FromStrRadixErr>
fn from_str_radix(src: &str, radix: u32) -> Result<Self, Self::FromStrRadixErr>
Convert from a string and radix (typically 2..=36
). Read more
sourceimpl<V, D> One for F<V, D> where
V: Clone + One,
D: Clone + Zero + Debug + Mul<V, Output = D>,
impl<V, D> One for F<V, D> where
V: Clone + One,
D: Clone + Zero + Debug + Mul<V, Output = D>,
sourceimpl<V: PartialOrd, D, U> PartialOrd<F<V, U>> for F<V, D>
impl<V: PartialOrd, D, U> PartialOrd<F<V, U>> for F<V, D>
sourcefn partial_cmp(&self, other: &F<V, U>) -> Option<Ordering>
fn partial_cmp(&self, other: &F<V, U>) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
1.0.0 · sourcefn lt(&self, other: &Rhs) -> bool
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
sourceimpl<V, D> Rem<F<V, D>> for F<V, D> where
V: Clone + Rem<Output = V> + Div<Output = V> + Sub<Output = V> + One,
D: Clone + Mul<V, Output = D> + Sub<Output = D>,
impl<V, D> Rem<F<V, D>> for F<V, D> where
V: Clone + Rem<Output = V> + Div<Output = V> + Sub<Output = V> + One,
D: Clone + Mul<V, Output = D> + Sub<Output = D>,
sourceimpl<V, D> RemAssign<F<V, D>> for F<V, D> where
V: Clone + RemAssign + Div<Output = V> + Sub<Output = V> + Rem<Output = V> + One,
D: Mul<V, Output = D> + SubAssign,
impl<V, D> RemAssign<F<V, D>> for F<V, D> where
V: Clone + RemAssign + Div<Output = V> + Sub<Output = V> + Rem<Output = V> + One,
D: Mul<V, Output = D> + SubAssign,
sourcefn rem_assign(&mut self, rhs: F<V, D>)
fn rem_assign(&mut self, rhs: F<V, D>)
Performs the %=
operation. Read more
sourceimpl<V: RemAssign<f32>, D: RemAssign<f32>> RemAssign<f32> for F<V, D>
impl<V: RemAssign<f32>, D: RemAssign<f32>> RemAssign<f32> for F<V, D>
sourcefn rem_assign(&mut self, rhs: f32)
fn rem_assign(&mut self, rhs: f32)
Performs the %=
operation. Read more
sourceimpl<V: RemAssign<f64>, D: RemAssign<f64>> RemAssign<f64> for F<V, D>
impl<V: RemAssign<f64>, D: RemAssign<f64>> RemAssign<f64> for F<V, D>
sourcefn rem_assign(&mut self, rhs: f64)
fn rem_assign(&mut self, rhs: f64)
Performs the %=
operation. Read more
sourceimpl<V, D> Signed for F<V, D> where
V: Signed + Clone + Num + PartialOrd,
D: Signed + Clone + Debug + Zero + PartialEq + Sub<Output = D> + Mul<V, Output = D> + Mul<Output = D> + Div<V, Output = D> + Div<Output = D>,
impl<V, D> Signed for F<V, D> where
V: Signed + Clone + Num + PartialOrd,
D: Signed + Clone + Debug + Zero + PartialEq + Sub<Output = D> + Mul<V, Output = D> + Mul<Output = D> + Div<V, Output = D> + Div<Output = D>,
sourcefn is_positive(&self) -> bool
fn is_positive(&self) -> bool
Returns true if the number is positive and false if the number is zero or negative.
sourcefn is_negative(&self) -> bool
fn is_negative(&self) -> bool
Returns true if the number is negative and false if the number is zero or positive.
sourceimpl<V: SubAssign, D: SubAssign> SubAssign<F<V, D>> for F<V, D>
impl<V: SubAssign, D: SubAssign> SubAssign<F<V, D>> for F<V, D>
sourcefn sub_assign(&mut self, rhs: F<V, D>)
fn sub_assign(&mut self, rhs: F<V, D>)
Performs the -=
operation. Read more
sourceimpl<V: SubAssign, D> SubAssign<V> for F<V, D>
impl<V: SubAssign, D> SubAssign<V> for F<V, D>
sourcefn sub_assign(&mut self, rhs: V)
fn sub_assign(&mut self, rhs: V)
Performs the -=
operation. Read more
sourceimpl<V: ToPrimitive, D> ToPrimitive for F<V, D>
impl<V: ToPrimitive, D> ToPrimitive for F<V, D>
sourcefn to_i64(&self) -> Option<i64>
fn to_i64(&self) -> Option<i64>
Converts the value of self
to an i64
. If the value cannot be
represented by an i64
, then None
is returned. Read more
sourcefn to_u64(&self) -> Option<u64>
fn to_u64(&self) -> Option<u64>
Converts the value of self
to a u64
. If the value cannot be
represented by a u64
, then None
is returned. Read more
sourcefn to_isize(&self) -> Option<isize>
fn to_isize(&self) -> Option<isize>
Converts the value of self
to an isize
. If the value cannot be
represented by an isize
, then None
is returned. Read more
sourcefn to_i8(&self) -> Option<i8>
fn to_i8(&self) -> Option<i8>
Converts the value of self
to an i8
. If the value cannot be
represented by an i8
, then None
is returned. Read more
sourcefn to_i16(&self) -> Option<i16>
fn to_i16(&self) -> Option<i16>
Converts the value of self
to an i16
. If the value cannot be
represented by an i16
, then None
is returned. Read more
sourcefn to_i32(&self) -> Option<i32>
fn to_i32(&self) -> Option<i32>
Converts the value of self
to an i32
. If the value cannot be
represented by an i32
, then None
is returned. Read more
sourcefn to_usize(&self) -> Option<usize>
fn to_usize(&self) -> Option<usize>
Converts the value of self
to a usize
. If the value cannot be
represented by a usize
, then None
is returned. Read more
sourcefn to_u8(&self) -> Option<u8>
fn to_u8(&self) -> Option<u8>
Converts the value of self
to a u8
. If the value cannot be
represented by a u8
, then None
is returned. Read more
sourcefn to_u16(&self) -> Option<u16>
fn to_u16(&self) -> Option<u16>
Converts the value of self
to a u16
. If the value cannot be
represented by a u16
, then None
is returned. Read more
sourcefn to_u32(&self) -> Option<u32>
fn to_u32(&self) -> Option<u32>
Converts the value of self
to a u32
. If the value cannot be
represented by a u32
, then None
is returned. Read more
sourcefn to_f32(&self) -> Option<f32>
fn to_f32(&self) -> Option<f32>
Converts the value of self
to an f32
. Overflows may map to positive
or negative inifinity, otherwise None
is returned if the value cannot
be represented by an f32
. Read more
sourcefn to_f64(&self) -> Option<f64>
fn to_f64(&self) -> Option<f64>
Converts the value of self
to an f64
. Overflows may map to positive
or negative inifinity, otherwise None
is returned if the value cannot
be represented by an f64
. Read more
impl<V: Copy, D: Copy> Copy for F<V, D>
Auto Trait Implementations
impl<V, D> RefUnwindSafe for F<V, D> where
D: RefUnwindSafe,
V: RefUnwindSafe,
impl<V, D> Send for F<V, D> where
D: Send,
V: Send,
impl<V, D> Sync for F<V, D> where
D: Sync,
V: Sync,
impl<V, D> Unpin for F<V, D> where
D: Unpin,
V: Unpin,
impl<V, D> UnwindSafe for F<V, D> where
D: UnwindSafe,
V: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> LowerBounded for T where
T: Bounded,
impl<T> LowerBounded for T where
T: Bounded,
sourceimpl<T> Real for T where
T: Float,
impl<T> Real for T where
T: Float,
sourcefn min_positive_value() -> T
fn min_positive_value() -> T
Returns the smallest positive, normalized value that this type can represent. Read more
sourcefn round(self) -> T
fn round(self) -> T
Returns the nearest integer to a number. Round half-way cases away from
0.0
. Read more
sourcefn abs(self) -> T
fn abs(self) -> T
Computes the absolute value of self
. Returns Float::nan()
if the
number is Float::nan()
. Read more
sourcefn is_sign_positive(self) -> bool
fn is_sign_positive(self) -> bool
Returns true
if self
is positive, including +0.0
,
Float::infinity()
, and with newer versions of Rust f64::NAN
. Read more
sourcefn is_sign_negative(self) -> bool
fn is_sign_negative(self) -> bool
Returns true
if self
is negative, including -0.0
,
Float::neg_infinity()
, and with newer versions of Rust -f64::NAN
. Read more
sourcefn mul_add(self, a: T, b: T) -> T
fn mul_add(self, a: T, b: T) -> T
Fused multiply-add. Computes (self * a) + b
with only one rounding
error, yielding a more accurate result than an unfused multiply-add. Read more
sourcefn log(self, base: T) -> T
fn log(self, base: T) -> T
Returns the logarithm of the number with respect to an arbitrary base. Read more
sourcefn to_degrees(self) -> T
fn to_degrees(self) -> T
Converts radians to degrees. Read more
sourcefn to_radians(self) -> T
fn to_radians(self) -> T
Converts degrees to radians. Read more
sourcefn hypot(self, other: T) -> T
fn hypot(self, other: T) -> T
Calculate the length of the hypotenuse of a right-angle triangle given
legs of length x
and y
. Read more
sourcefn asin(self) -> T
fn asin(self) -> T
Computes the arcsine of a number. Return value is in radians in the range [-pi/2, pi/2] or NaN if the number is outside the range [-1, 1]. Read more
sourcefn acos(self) -> T
fn acos(self) -> T
Computes the arccosine of a number. Return value is in radians in the range [0, pi] or NaN if the number is outside the range [-1, 1]. Read more
sourcefn atan(self) -> T
fn atan(self) -> T
Computes the arctangent of a number. Return value is in radians in the range [-pi/2, pi/2]; Read more
sourcefn atan2(self, other: T) -> T
fn atan2(self, other: T) -> T
Computes the four quadrant arctangent of self
(y
) and other
(x
). Read more
sourcefn sin_cos(self) -> (T, T)
fn sin_cos(self) -> (T, T)
Simultaneously computes the sine and cosine of the number, x
. Returns
(sin(x), cos(x))
. Read more
sourcefn exp_m1(self) -> T
fn exp_m1(self) -> T
Returns e^(self) - 1
in a way that is accurate even if the
number is close to zero. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more