Trait num_dual::DualNum

source ·
pub trait DualNum<F>: NumOps + for<'r> NumOps<&'r Self> + Signed + NumOps<F> + NumAssignOps + NumAssignOps<F> + Clone + Inv<Output = Self> + Sum + Product + FromPrimitive + From<F> + Display + PartialEq + Debug + 'static {
    const NDERIV: usize;
Show 32 methods // Required methods fn re(&self) -> F; fn recip(&self) -> Self; fn powi(&self, n: i32) -> Self; fn powf(&self, n: F) -> Self; fn sqrt(&self) -> Self; fn cbrt(&self) -> Self; fn exp(&self) -> Self; fn exp2(&self) -> Self; fn exp_m1(&self) -> Self; fn ln(&self) -> Self; fn log(&self, base: F) -> Self; fn log2(&self) -> Self; fn log10(&self) -> Self; fn ln_1p(&self) -> Self; fn sin(&self) -> Self; fn cos(&self) -> Self; fn tan(&self) -> Self; fn sin_cos(&self) -> (Self, Self); fn asin(&self) -> Self; fn acos(&self) -> Self; fn atan(&self) -> Self; fn sinh(&self) -> Self; fn cosh(&self) -> Self; fn tanh(&self) -> Self; fn asinh(&self) -> Self; fn acosh(&self) -> Self; fn atanh(&self) -> Self; fn sph_j0(&self) -> Self; fn sph_j1(&self) -> Self; fn sph_j2(&self) -> Self; // Provided methods fn mul_add(&self, a: Self, b: Self) -> Self { ... } fn powd(&self, exp: Self) -> Self { ... }
}
Expand description

A generalized (hyper) dual number.

Required Associated Constants§

source

const NDERIV: usize

Highest derivative that can be calculated with this struct

Required Methods§

source

fn re(&self) -> F

Real part (0th derivative) of the number

source

fn recip(&self) -> Self

Reciprocal (inverse) of a number 1/x.

source

fn powi(&self, n: i32) -> Self

Power with integer exponent x^n

source

fn powf(&self, n: F) -> Self

Power with real exponent x^n

source

fn sqrt(&self) -> Self

Square root

source

fn cbrt(&self) -> Self

Cubic root

source

fn exp(&self) -> Self

Exponential e^x

source

fn exp2(&self) -> Self

Exponential with base 2 2^x

source

fn exp_m1(&self) -> Self

Exponential minus 1 e^x-1

source

fn ln(&self) -> Self

Natural logarithm

source

fn log(&self, base: F) -> Self

Logarithm with arbitrary base

source

fn log2(&self) -> Self

Logarithm with base 2

source

fn log10(&self) -> Self

Logarithm with base 10

source

fn ln_1p(&self) -> Self

Logarithm on x plus one ln(1+x)

source

fn sin(&self) -> Self

Sine

source

fn cos(&self) -> Self

Cosine

source

fn tan(&self) -> Self

Tangent

source

fn sin_cos(&self) -> (Self, Self)

Calculate sine and cosine simultaneously

source

fn asin(&self) -> Self

Arcsine

source

fn acos(&self) -> Self

Arccosine

source

fn atan(&self) -> Self

Arctangent

source

fn sinh(&self) -> Self

Hyperbolic sine

source

fn cosh(&self) -> Self

Hyperbolic cosine

source

fn tanh(&self) -> Self

Hyperbolic tangent

source

fn asinh(&self) -> Self

Area hyperbolic sine

source

fn acosh(&self) -> Self

Area hyperbolic cosine

source

fn atanh(&self) -> Self

Area hyperbolic tangent

source

fn sph_j0(&self) -> Self

0th order spherical Bessel function of the first kind

source

fn sph_j1(&self) -> Self

1st order spherical Bessel function of the first kind

source

fn sph_j2(&self) -> Self

2nd order spherical Bessel function of the first kind

Provided Methods§

source

fn mul_add(&self, a: Self, b: Self) -> Self

Fused multiply-add

source

fn powd(&self, exp: Self) -> Self

Power with dual exponent x^n

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl DualNum<f32> for f32

source§

const NDERIV: usize = 0usize

source§

fn re(&self) -> f32

source§

fn mul_add(&self, a: Self, b: Self) -> Self

source§

fn recip(&self) -> Self

source§

fn powi(&self, n: i32) -> Self

source§

fn powf(&self, n: Self) -> Self

source§

fn powd(&self, n: Self) -> Self

source§

fn sqrt(&self) -> Self

source§

fn exp(&self) -> Self

source§

fn exp2(&self) -> Self

source§

fn ln(&self) -> Self

source§

fn log(&self, base: Self) -> Self

source§

fn log2(&self) -> Self

source§

fn log10(&self) -> Self

source§

fn cbrt(&self) -> Self

source§

fn sin(&self) -> Self

source§

fn cos(&self) -> Self

source§

fn tan(&self) -> Self

source§

fn asin(&self) -> Self

source§

fn acos(&self) -> Self

source§

fn atan(&self) -> Self

source§

fn sin_cos(&self) -> (Self, Self)

source§

fn exp_m1(&self) -> Self

source§

fn ln_1p(&self) -> Self

source§

fn sinh(&self) -> Self

source§

fn cosh(&self) -> Self

source§

fn tanh(&self) -> Self

source§

fn asinh(&self) -> Self

source§

fn acosh(&self) -> Self

source§

fn atanh(&self) -> Self

source§

fn sph_j0(&self) -> Self

source§

fn sph_j1(&self) -> Self

source§

fn sph_j2(&self) -> Self

source§

impl DualNum<f64> for f64

source§

const NDERIV: usize = 0usize

source§

fn re(&self) -> f64

source§

fn mul_add(&self, a: Self, b: Self) -> Self

source§

fn recip(&self) -> Self

source§

fn powi(&self, n: i32) -> Self

source§

fn powf(&self, n: Self) -> Self

source§

fn powd(&self, n: Self) -> Self

source§

fn sqrt(&self) -> Self

source§

fn exp(&self) -> Self

source§

fn exp2(&self) -> Self

source§

fn ln(&self) -> Self

source§

fn log(&self, base: Self) -> Self

source§

fn log2(&self) -> Self

source§

fn log10(&self) -> Self

source§

fn cbrt(&self) -> Self

source§

fn sin(&self) -> Self

source§

fn cos(&self) -> Self

source§

fn tan(&self) -> Self

source§

fn asin(&self) -> Self

source§

fn acos(&self) -> Self

source§

fn atan(&self) -> Self

source§

fn sin_cos(&self) -> (Self, Self)

source§

fn exp_m1(&self) -> Self

source§

fn ln_1p(&self) -> Self

source§

fn sinh(&self) -> Self

source§

fn cosh(&self) -> Self

source§

fn tanh(&self) -> Self

source§

fn asinh(&self) -> Self

source§

fn acosh(&self) -> Self

source§

fn atanh(&self) -> Self

source§

fn sph_j0(&self) -> Self

source§

fn sph_j1(&self) -> Self

source§

fn sph_j2(&self) -> Self

Implementors§

source§

impl<T: DualNum<F>, F: DualNumFloat> DualNum<F> for Dual2<T, F>

source§

impl<T: DualNum<F>, F: DualNumFloat> DualNum<F> for Dual3<T, F>

source§

impl<T: DualNum<F>, F: DualNumFloat> DualNum<F> for Dual<T, F>

source§

impl<T: DualNum<F>, F: DualNumFloat> DualNum<F> for HyperDual<T, F>

source§

impl<T: DualNum<F>, F: DualNumFloat> DualNum<F> for HyperHyperDual<T, F>

source§

impl<T: DualNum<F>, F: DualNumFloat, D: Dim> DualNum<F> for Dual2Vec<T, F, D>
where DefaultAllocator: Allocator<T, D> + Allocator<T, U1, D> + Allocator<T, D, D>,

source§

impl<T: DualNum<F>, F: DualNumFloat, D: Dim> DualNum<F> for DualVec<T, F, D>
where DefaultAllocator: Allocator<T, D> + Allocator<T, U1, D> + Allocator<T, D, D>,

source§

impl<T: DualNum<F>, F: DualNumFloat, M: Dim, N: Dim> DualNum<F> for HyperDualVec<T, F, M, N>
where DefaultAllocator: Allocator<T, M> + Allocator<T, U1, M> + Allocator<T, M, M> + Allocator<T, N> + Allocator<T, U1, N> + Allocator<T, N, N> + Allocator<T, M, N>,