pub struct Dual<T: Scalar>(/* private fields */);Expand description
Dual Number structure
Although Dual does implement PartialEq and PartialOrd,
it only compares the real part.
Additionally, min and max only compare the real parts, and keep the dual parts.
Lastly, the Rem remainder operator is not correctly or fully defined for Dual, and will panic.
Implementations§
Trait Implementations§
Source§impl<T: Scalar + Num> AddAssign<T> for Dual<T>
impl<T: Scalar + Num> AddAssign<T> for Dual<T>
Source§fn add_assign(&mut self, rhs: T)
fn add_assign(&mut self, rhs: T)
Performs the
+= operation. Read moreSource§impl<T: Scalar + Num> AddAssign for Dual<T>
impl<T: Scalar + Num> AddAssign for Dual<T>
Source§fn add_assign(&mut self, rhs: Self)
fn add_assign(&mut self, rhs: Self)
Performs the
+= operation. Read moreSource§impl<T: Scalar> AsMut<Matrix<T, U2, U1, <DefaultAllocator as Allocator<T, U2>>::Buffer>> for Dual<T>
impl<T: Scalar> AsMut<Matrix<T, U2, U1, <DefaultAllocator as Allocator<T, U2>>::Buffer>> for Dual<T>
Source§impl<T: Scalar> AsRef<Matrix<T, U2, U1, <DefaultAllocator as Allocator<T, U2>>::Buffer>> for Dual<T>
impl<T: Scalar> AsRef<Matrix<T, U2, U1, <DefaultAllocator as Allocator<T, U2>>::Buffer>> for Dual<T>
Source§impl<T: Scalar + Num> DivAssign<T> for Dual<T>
impl<T: Scalar + Num> DivAssign<T> for Dual<T>
Source§fn div_assign(&mut self, rhs: T)
fn div_assign(&mut self, rhs: T)
Performs the
/= operation. Read moreSource§impl<T: Scalar + Num> DivAssign for Dual<T>
impl<T: Scalar + Num> DivAssign for Dual<T>
Source§fn div_assign(&mut self, rhs: Self)
fn div_assign(&mut self, rhs: Self)
Performs the
/= operation. Read moreSource§impl<T> Float for Dual<T>
impl<T> Float for Dual<T>
Source§fn neg_infinity() -> Self
fn neg_infinity() -> Self
Returns the negative infinite value. Read more
Source§fn min_positive_value() -> Self
fn min_positive_value() -> Self
Returns the smallest positive, normalized value that this type can represent. Read more
Source§fn min_value() -> Self
fn min_value() -> Self
Returns the smallest finite value that this type can represent. Read more
Source§fn max_value() -> Self
fn max_value() -> Self
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 is_sign_positive(self) -> bool
fn is_sign_positive(self) -> bool
Source§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 -Float::nan(). 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 ceil(self) -> Self
fn ceil(self) -> Self
Returns the smallest integer greater than or equal to a number. Read more
Source§fn round(self) -> Self
fn round(self) -> Self
Returns the nearest integer to a number. Round half-way cases away from
0.0. Read moreSource§fn mul_add(self, a: Self, b: Self) -> Self
fn mul_add(self, a: Self, b: Self) -> Self
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: Self) -> Self
fn log(self, base: Self) -> Self
Returns the logarithm of the number with respect to an arbitrary base. Read more
Source§fn hypot(self, other: Self) -> Self
fn hypot(self, other: Self) -> Self
Calculate the length of the hypotenuse of a right-angle triangle given
legs of length
x and y. Read moreSource§fn asin(self) -> Self
fn asin(self) -> Self
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) -> Self
fn acos(self) -> Self
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) -> Self
fn atan(self) -> Self
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) -> Self
fn exp_m1(self) -> Self
Returns
e^(self) - 1 in a way that is accurate even if the
number is close to zero. Read moreSource§fn ln_1p(self) -> Self
fn ln_1p(self) -> Self
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) -> Self
fn to_degrees(self) -> Self
Converts radians to degrees. Read more
Source§fn to_radians(self) -> Self
fn to_radians(self) -> Self
Converts degrees to radians. Read more
Source§impl<T: Scalar + FloatConst + Zero> FloatConst for Dual<T>
impl<T: Scalar + FloatConst + Zero> FloatConst for Dual<T>
Source§fn FRAC_1_SQRT_2() -> Dual<T>
fn FRAC_1_SQRT_2() -> Dual<T>
Return
1.0 / sqrt(2.0).Source§fn FRAC_2_SQRT_PI() -> Dual<T>
fn FRAC_2_SQRT_PI() -> Dual<T>
Return
2.0 / sqrt(π).Source§impl<T> FromPrimitive for Dual<T>
impl<T> FromPrimitive for Dual<T>
Source§fn from_isize(n: isize) -> Option<Dual<T>>
fn from_isize(n: isize) -> Option<Dual<T>>
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<Dual<T>>
fn from_i8(n: i8) -> Option<Dual<T>>
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<Dual<T>>
fn from_i16(n: i16) -> Option<Dual<T>>
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<Dual<T>>
fn from_i32(n: i32) -> Option<Dual<T>>
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<Dual<T>>
fn from_i64(n: i64) -> Option<Dual<T>>
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_usize(n: usize) -> Option<Dual<T>>
fn from_usize(n: usize) -> Option<Dual<T>>
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<Dual<T>>
fn from_u8(n: u8) -> Option<Dual<T>>
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<Dual<T>>
fn from_u16(n: u16) -> Option<Dual<T>>
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<Dual<T>>
fn from_u32(n: u32) -> Option<Dual<T>>
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<Dual<T>>
fn from_u64(n: u64) -> Option<Dual<T>>
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_f32(n: f32) -> Option<Dual<T>>
fn from_f32(n: f32) -> Option<Dual<T>>
Converts a
f32 to return an optional value of this type. If the
value cannot be represented by this type, then None is returned.Source§fn from_f64(n: f64) -> Option<Dual<T>>
fn from_f64(n: f64) -> Option<Dual<T>>
Converts a
f64 to return an optional value of this type. If the
value cannot be represented by this type, then None is returned. Read moreSource§impl<T: Scalar + Num + Mul + Add> MulAddAssign<Dual<T>, T> for Dual<T>
impl<T: Scalar + Num + Mul + Add> MulAddAssign<Dual<T>, T> for Dual<T>
Source§fn mul_add_assign(&mut self, a: Self, b: T)
fn mul_add_assign(&mut self, a: Self, b: T)
Performs the fused multiply-add assignment operation
*self = (*self * a) + bSource§impl<T: Scalar + Num + Mul + Add> MulAddAssign<T> for Dual<T>
impl<T: Scalar + Num + Mul + Add> MulAddAssign<T> for Dual<T>
Source§fn mul_add_assign(&mut self, a: T, b: Self)
fn mul_add_assign(&mut self, a: T, b: Self)
Performs the fused multiply-add assignment operation
*self = (*self * a) + bSource§impl<T: Scalar + Num + Mul + Add> MulAddAssign<T, T> for Dual<T>
impl<T: Scalar + Num + Mul + Add> MulAddAssign<T, T> for Dual<T>
Source§fn mul_add_assign(&mut self, a: T, b: T)
fn mul_add_assign(&mut self, a: T, b: T)
Performs the fused multiply-add assignment operation
*self = (*self * a) + bSource§impl<T: Scalar + Num + Mul + Add> MulAddAssign for Dual<T>
impl<T: Scalar + Num + Mul + Add> MulAddAssign for Dual<T>
Source§fn mul_add_assign(&mut self, a: Self, b: Self)
fn mul_add_assign(&mut self, a: Self, b: Self)
Performs the fused multiply-add assignment operation
*self = (*self * a) + bSource§impl<T: Scalar + Num> MulAssign<T> for Dual<T>
impl<T: Scalar + Num> MulAssign<T> for Dual<T>
Source§fn mul_assign(&mut self, rhs: T)
fn mul_assign(&mut self, rhs: T)
Performs the
*= operation. Read moreSource§impl<T: Scalar + Num> MulAssign for Dual<T>
impl<T: Scalar + Num> MulAssign for Dual<T>
Source§fn mul_assign(&mut self, rhs: Self)
fn mul_assign(&mut self, rhs: Self)
Performs the
*= operation. Read moreSource§impl<T: Scalar + Num> Num for Dual<T>
impl<T: Scalar + Num> Num for Dual<T>
type FromStrRadixErr = <T as Num>::FromStrRadixErr
Source§fn from_str_radix(
str: &str,
radix: u32,
) -> Result<Dual<T>, Self::FromStrRadixErr>
fn from_str_radix( str: &str, radix: u32, ) -> Result<Dual<T>, Self::FromStrRadixErr>
Convert from a string and radix (typically
2..=36). Read moreSource§impl<T: Scalar + Num + One> One for Dual<T>
impl<T: Scalar + Num + One> One for Dual<T>
Source§impl<T: Scalar + PartialOrd> PartialOrd<T> for Dual<T>
impl<T: Scalar + PartialOrd> PartialOrd<T> for Dual<T>
Source§impl<T: Scalar + PartialOrd> PartialOrd for Dual<T>
impl<T: Scalar + PartialOrd> PartialOrd for Dual<T>
Source§impl<T> Signed for Dual<T>
impl<T> Signed for Dual<T>
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<T: Scalar + Num> SubAssign<T> for Dual<T>
impl<T: Scalar + Num> SubAssign<T> for Dual<T>
Source§fn sub_assign(&mut self, rhs: T)
fn sub_assign(&mut self, rhs: T)
Performs the
-= operation. Read moreSource§impl<T: Scalar + Num> SubAssign for Dual<T>
impl<T: Scalar + Num> SubAssign for Dual<T>
Source§fn sub_assign(&mut self, rhs: Self)
fn sub_assign(&mut self, rhs: Self)
Performs the
-= operation. Read moreSource§impl<T: Scalar + ToPrimitive> ToPrimitive for Dual<T>
impl<T: Scalar + ToPrimitive> ToPrimitive for Dual<T>
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_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_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_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_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<T: Copy + Scalar> Copy for Dual<T>
impl<T: Scalar + Unsigned> Unsigned for Dual<T>where
Self: Num,
Auto Trait Implementations§
impl<T> Freeze for Dual<T>where
T: Freeze,
impl<T> RefUnwindSafe for Dual<T>where
T: RefUnwindSafe,
impl<T> Send for Dual<T>where
T: Send,
impl<T> Sync for Dual<T>where
T: Sync,
impl<T> Unpin for Dual<T>where
T: Unpin,
impl<T> UnwindSafe for Dual<T>where
T: UnwindSafe,
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> 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 moreSource§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§unsafe fn to_subset_unchecked(&self) -> SS
unsafe 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.