[−][src]Struct dual_num::Dual
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.
Methods
impl<T: Scalar> Dual<T>
[src]
pub fn new(real: T, dual: T) -> Dual<T>
[src]
Create a new dual number from its real and dual parts.
pub fn from_real(real: T) -> Dual<T> where
T: Zero,
[src]
T: Zero,
Create a new dual number from a real number.
The dual part is set to zero.
pub fn real(&self) -> T
[src]
Returns the real part
pub fn dual(&self) -> T
[src]
Returns the dual part
pub fn into_tuple(self) -> (T, T)
[src]
Returns both real and dual parts as a tuple
pub fn real_ref(&self) -> &T
[src]
Returns a reference to the real part
pub fn dual_ref(&self) -> &T
[src]
Returns a reference to the dual part
pub fn real_mut(&mut self) -> &mut T
[src]
Returns a mutable reference to the real part
pub fn dual_mut(&mut self) -> &mut T
[src]
Returns a mutable reference to the dual part
impl<T: Scalar + Neg<Output = T>> Dual<T>
[src]
Trait Implementations
impl<T: Scalar + PartialOrd> PartialOrd<Dual<T>> for Dual<T>
[src]
fn partial_cmp(&self, rhs: &Self) -> Option<Ordering>
[src]
fn lt(&self, rhs: &Self) -> bool
[src]
fn gt(&self, rhs: &Self) -> bool
[src]
#[must_use]
fn le(&self, other: &Rhs) -> bool
1.0.0[src]
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
#[must_use]
fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
This method tests greater than or equal to (for self
and other
) and is used by the >=
operator. Read more
impl<T: Scalar + PartialOrd> PartialOrd<T> for Dual<T>
[src]
fn partial_cmp(&self, rhs: &T) -> Option<Ordering>
[src]
fn lt(&self, rhs: &T) -> bool
[src]
fn gt(&self, rhs: &T) -> bool
[src]
#[must_use]
fn le(&self, other: &Rhs) -> bool
1.0.0[src]
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
#[must_use]
fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
This method tests greater than or equal to (for self
and other
) and is used by the >=
operator. Read more
impl<T: Scalar> AsMut<Matrix<T, U2, U1, <DefaultAllocator as Allocator<T, U2, U1>>::Buffer>> for Dual<T>
[src]
impl<T: Copy + Scalar> Copy for Dual<T>
[src]
impl<T: Scalar + PartialEq> PartialEq<Dual<T>> for Dual<T>
[src]
fn eq(&self, rhs: &Self) -> bool
[src]
#[must_use]
fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
This method tests for !=
.
impl<T: Scalar + PartialEq> PartialEq<T> for Dual<T>
[src]
fn eq(&self, rhs: &T) -> bool
[src]
#[must_use]
fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
This method tests for !=
.
impl<T: Scalar> AsRef<Matrix<T, U2, U1, <DefaultAllocator as Allocator<T, U2, U1>>::Buffer>> for Dual<T>
[src]
impl<T: Scalar + Zero> Default for Dual<T>
[src]
impl<T: Scalar + Zero> From<T> for Dual<T>
[src]
impl<T: Clone + Scalar> Clone for Dual<T>
[src]
fn clone(&self) -> Dual<T>
[src]
fn clone_from(&mut self, source: &Self)
1.0.0[src]
Performs copy-assignment from source
. Read more
impl<T: Scalar> DerefMut for Dual<T>
[src]
impl<T: Scalar + Display> Display for Dual<T>
[src]
impl<T: Scalar> Debug for Dual<T>
[src]
impl<T: Scalar + Num> Sub<T> for Dual<T>
[src]
type Output = Self
The resulting type after applying the -
operator.
fn sub(self, rhs: T) -> Self
[src]
impl<T: Scalar + Num> Sub<Dual<T>> for Dual<T>
[src]
type Output = Self
The resulting type after applying the -
operator.
fn sub(self, rhs: Self) -> Self
[src]
impl<T: Scalar + Num> Add<T> for Dual<T>
[src]
type Output = Self
The resulting type after applying the +
operator.
fn add(self, rhs: T) -> Self
[src]
impl<T: Scalar + Num> Add<Dual<T>> for Dual<T>
[src]
type Output = Self
The resulting type after applying the +
operator.
fn add(self, rhs: Self) -> Self
[src]
impl<T: Scalar + Num> Mul<T> for Dual<T>
[src]
type Output = Self
The resulting type after applying the *
operator.
fn mul(self, rhs: T) -> Self
[src]
impl<T: Scalar + Num> Mul<Dual<T>> for Dual<T>
[src]
type Output = Self
The resulting type after applying the *
operator.
fn mul(self, rhs: Self) -> Self
[src]
impl<T: Scalar + Num> Div<T> for Dual<T>
[src]
type Output = Self
The resulting type after applying the /
operator.
fn div(self, rhs: T) -> Self
[src]
impl<T: Scalar + Num> Div<Dual<T>> for Dual<T>
[src]
type Output = Self
The resulting type after applying the /
operator.
fn div(self, rhs: Self) -> Self
[src]
impl<T: Scalar + Num> Rem<Dual<T>> for Dual<T>
[src]
type Output = Self
The resulting type after applying the %
operator.
fn rem(self, _: Self) -> Self
[src]
UNIMPLEMENTED!!!
As far as I know, remainder is not a valid operation on dual numbers,
but is required for the Float
trait to be implemented.
impl<T: Scalar + Signed> Neg for Dual<T>
[src]
impl<T: Scalar + Num> AddAssign<T> for Dual<T>
[src]
fn add_assign(&mut self, rhs: T)
[src]
impl<T: Scalar + Num> AddAssign<Dual<T>> for Dual<T>
[src]
fn add_assign(&mut self, rhs: Self)
[src]
impl<T: Scalar + Num> SubAssign<T> for Dual<T>
[src]
fn sub_assign(&mut self, rhs: T)
[src]
impl<T: Scalar + Num> SubAssign<Dual<T>> for Dual<T>
[src]
fn sub_assign(&mut self, rhs: Self)
[src]
impl<T: Scalar + Num> MulAssign<T> for Dual<T>
[src]
fn mul_assign(&mut self, rhs: T)
[src]
impl<T: Scalar + Num> MulAssign<Dual<T>> for Dual<T>
[src]
fn mul_assign(&mut self, rhs: Self)
[src]
impl<T: Scalar + Num> DivAssign<T> for Dual<T>
[src]
fn div_assign(&mut self, rhs: T)
[src]
impl<T: Scalar + Num> DivAssign<Dual<T>> for Dual<T>
[src]
fn div_assign(&mut self, rhs: Self)
[src]
impl<T: Scalar> Deref for Dual<T>
[src]
impl<T: Scalar + Num + Zero> Sum<Dual<T>> for Dual<T>
[src]
impl<'a, T: Scalar + Num + Zero> Sum<&'a Dual<T>> for Dual<T>
[src]
impl<T: Scalar + Num + One> Product<Dual<T>> for Dual<T>
[src]
impl<'a, T: Scalar + Num + One> Product<&'a Dual<T>> for Dual<T>
[src]
impl<T: Scalar + Num + Zero> Zero for Dual<T>
[src]
impl<T: Scalar> Signed for Dual<T> where
T: Signed + PartialOrd,
[src]
T: Signed + PartialOrd,
fn abs(&self) -> Self
[src]
fn abs_sub(&self, rhs: &Self) -> Self
[src]
fn signum(&self) -> Self
[src]
fn is_positive(&self) -> bool
[src]
fn is_negative(&self) -> bool
[src]
impl<T: Scalar + Num + One> One for Dual<T>
[src]
impl<T: Scalar + ToPrimitive> ToPrimitive for Dual<T>
[src]
fn to_isize(&self) -> Option<isize>
[src]
fn to_i8(&self) -> Option<i8>
[src]
fn to_i16(&self) -> Option<i16>
[src]
fn to_i32(&self) -> Option<i32>
[src]
fn to_i64(&self) -> Option<i64>
[src]
fn to_usize(&self) -> Option<usize>
[src]
fn to_u8(&self) -> Option<u8>
[src]
fn to_u16(&self) -> Option<u16>
[src]
fn to_u32(&self) -> Option<u32>
[src]
fn to_u64(&self) -> Option<u64>
[src]
fn to_f32(&self) -> Option<f32>
[src]
fn to_f64(&self) -> Option<f64>
[src]
fn to_i128(&self) -> Option<i128>
[src]
Converts the value of self
to an i128
. Read more
fn to_u128(&self) -> Option<u128>
[src]
Converts the value of self
to an u128
. Read more
impl<T: Scalar + FromPrimitive> FromPrimitive for Dual<T> where
T: Zero,
[src]
T: Zero,
fn from_isize(n: isize) -> Option<Dual<T>>
[src]
fn from_i8(n: i8) -> Option<Dual<T>>
[src]
fn from_i16(n: i16) -> Option<Dual<T>>
[src]
fn from_i32(n: i32) -> Option<Dual<T>>
[src]
fn from_i64(n: i64) -> Option<Dual<T>>
[src]
fn from_usize(n: usize) -> Option<Dual<T>>
[src]
fn from_u8(n: u8) -> Option<Dual<T>>
[src]
fn from_u16(n: u16) -> Option<Dual<T>>
[src]
fn from_u32(n: u32) -> Option<Dual<T>>
[src]
fn from_u64(n: u64) -> Option<Dual<T>>
[src]
fn from_f32(n: f32) -> Option<Dual<T>>
[src]
fn from_f64(n: f64) -> Option<Dual<T>>
[src]
fn from_i128(n: i128) -> Option<Self>
[src]
Convert an i128
to return an optional value of this type. If the type cannot be represented by this value, then None
is returned. Read more
fn from_u128(n: u128) -> Option<Self>
[src]
Convert an u128
to return an optional value of this type. If the type cannot be represented by this value, then None
is returned. Read more
impl<T: Scalar + Float> NumCast for Dual<T>
[src]
fn from<N: ToPrimitive>(n: N) -> Option<Dual<T>>
[src]
impl<T: Scalar> Float for Dual<T> where
T: Float + Signed + FloatConst,
[src]
T: Float + Signed + FloatConst,
fn nan() -> Self
[src]
fn infinity() -> Self
[src]
fn neg_infinity() -> Self
[src]
fn neg_zero() -> Self
[src]
fn min_positive_value() -> Self
[src]
fn epsilon() -> Self
[src]
fn min_value() -> Self
[src]
fn max_value() -> Self
[src]
fn is_nan(self) -> bool
[src]
fn is_infinite(self) -> bool
[src]
fn is_finite(self) -> bool
[src]
fn is_normal(self) -> bool
[src]
fn is_sign_positive(self) -> bool
[src]
fn is_sign_negative(self) -> bool
[src]
fn classify(self) -> FpCategory
[src]
fn floor(self) -> Self
[src]
fn ceil(self) -> Self
[src]
fn round(self) -> Self
[src]
fn trunc(self) -> Self
[src]
fn fract(self) -> Self
[src]
fn signum(self) -> Self
[src]
fn abs(self) -> Self
[src]
fn max(self, other: Self) -> Self
[src]
fn min(self, other: Self) -> Self
[src]
fn abs_sub(self, rhs: Self) -> Self
[src]
fn mul_add(self, a: Self, b: Self) -> Self
[src]
fn recip(self) -> Self
[src]
fn powi(self, n: i32) -> Self
[src]
fn powf(self, n: Self) -> Self
[src]
fn exp(self) -> Self
[src]
fn exp2(self) -> Self
[src]
fn ln(self) -> Self
[src]
fn log(self, base: Self) -> Self
[src]
fn log2(self) -> Self
[src]
fn log10(self) -> Self
[src]
fn sqrt(self) -> Self
[src]
fn cbrt(self) -> Self
[src]
fn hypot(self, other: Self) -> Self
[src]
fn sin(self) -> Self
[src]
fn cos(self) -> Self
[src]
fn tan(self) -> Self
[src]
fn asin(self) -> Self
[src]
fn acos(self) -> Self
[src]
fn atan(self) -> Self
[src]
fn atan2(self, other: Self) -> Self
[src]
fn sin_cos(self) -> (Self, Self)
[src]
fn exp_m1(self) -> Self
[src]
fn ln_1p(self) -> Self
[src]
fn sinh(self) -> Self
[src]
fn cosh(self) -> Self
[src]
fn tanh(self) -> Self
[src]
fn asinh(self) -> Self
[src]
fn acosh(self) -> Self
[src]
fn atanh(self) -> Self
[src]
fn integer_decode(self) -> (u64, i16, i8)
[src]
fn to_degrees(self) -> Self
[src]
fn to_radians(self) -> Self
[src]
impl<T: Scalar + FloatConst + Zero> FloatConst for Dual<T>
[src]
fn E() -> Dual<T>
[src]
fn FRAC_1_PI() -> Dual<T>
[src]
fn FRAC_1_SQRT_2() -> Dual<T>
[src]
fn FRAC_2_PI() -> Dual<T>
[src]
fn FRAC_2_SQRT_PI() -> Dual<T>
[src]
fn FRAC_PI_2() -> Dual<T>
[src]
fn FRAC_PI_3() -> Dual<T>
[src]
fn FRAC_PI_4() -> Dual<T>
[src]
fn FRAC_PI_6() -> Dual<T>
[src]
fn FRAC_PI_8() -> Dual<T>
[src]
fn LN_10() -> Dual<T>
[src]
fn LN_2() -> Dual<T>
[src]
fn LOG10_E() -> Dual<T>
[src]
fn LOG2_E() -> Dual<T>
[src]
fn PI() -> Dual<T>
[src]
fn SQRT_2() -> Dual<T>
[src]
impl<T: Scalar + Num> Num for Dual<T>
[src]
type FromStrRadixErr = <T as Num>::FromStrRadixErr
fn from_str_radix(
str: &str,
radix: u32
) -> Result<Dual<T>, Self::FromStrRadixErr>
[src]
str: &str,
radix: u32
) -> Result<Dual<T>, Self::FromStrRadixErr>
impl<T: Scalar> Inv for Dual<T> where
Self: One + Div<Output = Self>,
[src]
Self: One + Div<Output = Self>,
impl<T: Scalar + Num + Mul + Add> MulAdd<Dual<T>, Dual<T>> for Dual<T>
[src]
type Output = Self
The resulting type after applying the fused multiply-add.
fn mul_add(self, a: Self, b: Self) -> Self
[src]
impl<T: Scalar + Num + Mul + Add> MulAdd<T, Dual<T>> for Dual<T>
[src]
type Output = Self
The resulting type after applying the fused multiply-add.
fn mul_add(self, a: T, b: Self) -> Self
[src]
impl<T: Scalar + Num + Mul + Add> MulAdd<Dual<T>, T> for Dual<T>
[src]
type Output = Self
The resulting type after applying the fused multiply-add.
fn mul_add(self, a: Self, b: T) -> Self
[src]
impl<T: Scalar + Num + Mul + Add> MulAdd<T, T> for Dual<T>
[src]
type Output = Self
The resulting type after applying the fused multiply-add.
fn mul_add(self, a: T, b: T) -> Self
[src]
impl<T: Scalar + Num + Mul + Add> MulAddAssign<Dual<T>, Dual<T>> for Dual<T>
[src]
fn mul_add_assign(&mut self, a: Self, b: Self)
[src]
impl<T: Scalar + Num + Mul + Add> MulAddAssign<T, Dual<T>> for Dual<T>
[src]
fn mul_add_assign(&mut self, a: T, b: Self)
[src]
impl<T: Scalar + Num + Mul + Add> MulAddAssign<Dual<T>, T> for Dual<T>
[src]
fn mul_add_assign(&mut self, a: Self, b: T)
[src]
impl<T: Scalar + Num + Mul + Add> MulAddAssign<T, T> for Dual<T>
[src]
fn mul_add_assign(&mut self, a: T, b: T)
[src]
impl<T: Scalar, P: Into<Dual<T>>> Pow<P> for Dual<T> where
Dual<T>: Float,
[src]
Dual<T>: Float,
impl<T: Scalar + Unsigned> Unsigned for Dual<T> where
Self: Num,
[src]
Self: Num,
Auto Trait Implementations
Blanket Implementations
impl<T, U> Into for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
impl<T> ToString for T where
T: Display + ?Sized,
[src]
T: Display + ?Sized,
impl<T> From for T
[src]
impl<T, U> TryFrom for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T> Borrow for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> BorrowMut for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T, U> TryInto for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> Scalar for T where
T: Copy + PartialEq<T> + Any + Debug,
[src]
T: Copy + PartialEq<T> + Any + Debug,
impl<T, Right> ClosedAdd for T where
T: Add<Right, Output = T> + AddAssign<Right>,
T: Add<Right, Output = T> + AddAssign<Right>,
impl<T, Right> ClosedMul for T where
T: Mul<Right, Output = T> + MulAssign<Right>,
T: Mul<Right, Output = T> + MulAssign<Right>,
impl<T> Same for T
type Output = T
Should always be Self
impl<T, Right> ClosedSub for T where
T: Sub<Right, Output = T> + SubAssign<Right>,
T: Sub<Right, Output = T> + SubAssign<Right>,
impl<T> ClosedNeg for T where
T: Neg<Output = T>,
T: Neg<Output = T>,
impl<T, Right> ClosedDiv for T where
T: Div<Right, Output = T> + DivAssign<Right>,
T: Div<Right, Output = T> + DivAssign<Right>,
impl<SS, SP> SupersetOf for SP where
SS: SubsetOf<SP>,
SS: SubsetOf<SP>,
fn to_subset(&self) -> Option<SS>
fn is_in_subset(&self) -> bool
unsafe fn to_subset_unchecked(&self) -> SS
fn from_subset(element: &SS) -> SP
impl<T> Real for T where
T: Float,
[src]
T: Float,
fn min_value() -> T
[src]
fn min_positive_value() -> T
[src]
fn epsilon() -> T
[src]
fn max_value() -> T
[src]
fn floor(self) -> T
[src]
fn ceil(self) -> T
[src]
fn round(self) -> T
[src]
fn trunc(self) -> T
[src]
fn fract(self) -> T
[src]
fn abs(self) -> T
[src]
fn signum(self) -> T
[src]
fn is_sign_positive(self) -> bool
[src]
fn is_sign_negative(self) -> bool
[src]
fn mul_add(self, a: T, b: T) -> T
[src]
fn recip(self) -> T
[src]
fn powi(self, n: i32) -> T
[src]
fn powf(self, n: T) -> T
[src]
fn sqrt(self) -> T
[src]
fn exp(self) -> T
[src]
fn exp2(self) -> T
[src]
fn ln(self) -> T
[src]
fn log(self, base: T) -> T
[src]
fn log2(self) -> T
[src]
fn log10(self) -> T
[src]
fn to_degrees(self) -> T
[src]
fn to_radians(self) -> T
[src]
fn max(self, other: T) -> T
[src]
fn min(self, other: T) -> T
[src]
fn abs_sub(self, other: T) -> T
[src]
fn cbrt(self) -> T
[src]
fn hypot(self, other: T) -> T
[src]
fn sin(self) -> T
[src]
fn cos(self) -> T
[src]
fn tan(self) -> T
[src]
fn asin(self) -> T
[src]
fn acos(self) -> T
[src]
fn atan(self) -> T
[src]
fn atan2(self, other: T) -> T
[src]
fn sin_cos(self) -> (T, T)
[src]
fn exp_m1(self) -> T
[src]
fn ln_1p(self) -> T
[src]
fn sinh(self) -> T
[src]
fn cosh(self) -> T
[src]
fn tanh(self) -> T
[src]
fn asinh(self) -> T
[src]
fn acosh(self) -> T
[src]
fn atanh(self) -> T
[src]
impl<T, Rhs, Output> NumOps for T where
T: Sub<Rhs, Output = Output> + Mul<Rhs, Output = Output> + Div<Rhs, Output = Output> + Add<Rhs, Output = Output> + Rem<Rhs, Output = Output>,
[src]
T: Sub<Rhs, Output = Output> + Mul<Rhs, Output = Output> + Div<Rhs, Output = Output> + Add<Rhs, Output = Output> + Rem<Rhs, Output = Output>,