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§
source§impl<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>
source§fn add_assign(&mut self, rhs: F<V, D>)
fn add_assign(&mut self, rhs: F<V, D>)
Performs the
+=
operation. Read moresource§impl<V: AddAssign, D> AddAssign<V> for F<V, D>
impl<V: AddAssign, D> AddAssign<V> for F<V, D>
source§fn add_assign(&mut self, rhs: V)
fn add_assign(&mut self, rhs: V)
Performs the
+=
operation. Read moresource§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>,
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>,
source§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,
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,
source§fn div_assign(&mut self, rhs: F<V, D>)
fn div_assign(&mut self, rhs: F<V, D>)
Performs the
/=
operation. Read moresource§impl<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>
source§fn div_assign(&mut self, rhs: V)
fn div_assign(&mut self, rhs: V)
Performs the
/=
operation. Read moresource§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,
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,
source§fn neg_infinity() -> F<V, D>
fn neg_infinity() -> F<V, D>
Returns the negative infinite value. Read more
source§fn min_value() -> F<V, D>
fn min_value() -> F<V, D>
Returns the smallest finite value that this type can represent. Read more
source§fn 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
source§fn max_value() -> F<V, D>
fn max_value() -> F<V, D>
Returns the largest finite value that this type can represent. Read more
source§fn is_infinite(self) -> bool
fn is_infinite(self) -> bool
Returns
true
if this value is positive infinity or negative infinity and
false otherwise. Read moresource§fn 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
source§fn floor(self) -> F<V, D>
fn floor(self) -> F<V, D>
Returns the largest integer less than or equal to a number. Read more
source§fn ceil(self) -> F<V, D>
fn ceil(self) -> F<V, D>
Returns the smallest integer greater than or equal to a number. Read more
source§fn 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 moresource§fn 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 moresource§fn 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 moresource§fn 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 moresource§fn 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
source§fn 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 moresource§fn 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
source§fn 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
source§fn 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
source§fn 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 moresource§fn 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 moresource§fn 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 moresource§fn to_degrees(self) -> F<V, D>
fn to_degrees(self) -> F<V, D>
Converts radians to degrees. Read more
source§fn to_radians(self) -> F<V, D>
fn to_radians(self) -> F<V, D>
Converts degrees to radians. Read more
source§impl<V: FloatConst, D: Zero> FloatConst for F<V, D>
impl<V: FloatConst, D: Zero> FloatConst for F<V, D>
source§fn FRAC_1_SQRT_2() -> F<V, D>
fn FRAC_1_SQRT_2() -> F<V, D>
Return
1.0 / sqrt(2.0)
.source§fn FRAC_2_SQRT_PI() -> F<V, D>
fn FRAC_2_SQRT_PI() -> F<V, D>
Return
2.0 / sqrt(π)
.source§impl<V: FromPrimitive, D: Zero> FromPrimitive for F<V, D>
impl<V: FromPrimitive, D: Zero> FromPrimitive for F<V, D>
source§fn 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.source§fn 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.source§fn 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.source§fn 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.source§fn 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.source§fn 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 moresource§fn 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.source§fn 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.source§fn 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.source§fn 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.source§fn 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.source§fn 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 moresource§impl<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,
source§fn mul_assign(&mut self, rhs: F<V, D>)
fn mul_assign(&mut self, rhs: F<V, D>)
Performs the
*=
operation. Read moresource§impl<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>
source§fn mul_assign(&mut self, rhs: V)
fn mul_assign(&mut self, rhs: V)
Performs the
*=
operation. Read moresource§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>,
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
source§fn 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 moresource§impl<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>,
source§impl<V: PartialEq, D, U> PartialEq<F<V, U>> for F<V, D>
impl<V: PartialEq, D, U> PartialEq<F<V, U>> for F<V, D>
source§impl<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>
1.0.0 · source§fn 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 moresource§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>,
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>,
source§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,
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,
source§fn rem_assign(&mut self, rhs: F<V, D>)
fn rem_assign(&mut self, rhs: F<V, D>)
Performs the
%=
operation. Read moresource§impl<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>
source§fn rem_assign(&mut self, rhs: f32)
fn rem_assign(&mut self, rhs: f32)
Performs the
%=
operation. Read moresource§impl<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>
source§fn rem_assign(&mut self, rhs: f64)
fn rem_assign(&mut self, rhs: f64)
Performs the
%=
operation. Read moresource§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>,
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>,
source§fn 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.
source§fn 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.
source§impl<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>
source§fn sub_assign(&mut self, rhs: F<V, D>)
fn sub_assign(&mut self, rhs: F<V, D>)
Performs the
-=
operation. Read moresource§impl<V: SubAssign, D> SubAssign<V> for F<V, D>
impl<V: SubAssign, D> SubAssign<V> for F<V, D>
source§fn sub_assign(&mut self, rhs: V)
fn sub_assign(&mut self, rhs: V)
Performs the
-=
operation. Read moresource§impl<V: ToPrimitive, D> ToPrimitive for F<V, D>
impl<V: ToPrimitive, D> ToPrimitive for F<V, D>
source§fn 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.source§fn 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.source§fn 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.source§fn 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.source§fn 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.source§fn 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.source§fn 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.source§fn 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.source§fn 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.source§fn 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.source§fn 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
.source§fn 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 moreimpl<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§
source§impl<T> LowerBounded for Twhere
T: Bounded,
impl<T> LowerBounded for Twhere T: Bounded,
source§impl<T> Real for Twhere
T: Float,
impl<T> Real for Twhere T: Float,
source§fn min_positive_value() -> T
fn min_positive_value() -> T
Returns the smallest positive, normalized value that this type can represent. Read more
source§fn round(self) -> T
fn round(self) -> T
Returns the nearest integer to a number. Round half-way cases away from
0.0
. Read moresource§fn 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 moresource§fn 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 moresource§fn 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 moresource§fn 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
source§fn to_degrees(self) -> T
fn to_degrees(self) -> T
Converts radians to degrees. Read more
source§fn to_radians(self) -> T
fn to_radians(self) -> T
Converts degrees to radians. Read more
source§fn 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 moresource§fn 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
source§fn 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
source§fn 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
source§fn 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