pub struct HyperHyperDual<T, F = T> {
pub re: T,
pub eps1: T,
pub eps2: T,
pub eps3: T,
pub eps1eps2: T,
pub eps1eps3: T,
pub eps2eps3: T,
pub eps1eps2eps3: T,
/* private fields */
}
Expand description
A scalar hyper-hyper-dual number for the calculation of third partial derivatives.
Fields§
§re: T
Real part of the hyper-hyper-dual number
eps1: T
First partial derivative part of the hyper-hyper-dual number
eps2: T
First partial derivative part of the hyper-hyper-dual number
eps3: T
First partial derivative part of the hyper-hyper-dual number
eps1eps2: T
Second partial derivative part of the hyper-hyper-dual number
eps1eps3: T
Second partial derivative part of the hyper-hyper-dual number
eps2eps3: T
Second partial derivative part of the hyper-hyper-dual number
eps1eps2eps3: T
Third partial derivative part of the hyper-hyper-dual number
Implementations§
Source§impl<T: DualNum<F>, F> HyperHyperDual<T, F>
impl<T: DualNum<F>, F> HyperHyperDual<T, F>
Sourcepub fn new(
re: T,
eps1: T,
eps2: T,
eps3: T,
eps1eps2: T,
eps1eps3: T,
eps2eps3: T,
eps1eps2eps3: T,
) -> Self
pub fn new( re: T, eps1: T, eps2: T, eps3: T, eps1eps2: T, eps1eps3: T, eps2eps3: T, eps1eps2eps3: T, ) -> Self
Create a new hyper-hyper-dual number from its fields.
Sourcepub fn derivative1(self) -> Self
pub fn derivative1(self) -> Self
Set the partial derivative part w.r.t. the 1st variable to 1.
Sourcepub fn derivative2(self) -> Self
pub fn derivative2(self) -> Self
Set the partial derivative part w.r.t. the 2nd variable to 1.
Sourcepub fn derivative3(self) -> Self
pub fn derivative3(self) -> Self
Set the partial derivative part w.r.t. the 3rd variable to 1.
Trait Implementations§
Source§impl<'a, 'b, T: DualNum<F>, F: Float> Add<&'a HyperHyperDual<T, F>> for &'b HyperHyperDual<T, F>
impl<'a, 'b, T: DualNum<F>, F: Float> Add<&'a HyperHyperDual<T, F>> for &'b HyperHyperDual<T, F>
Source§type Output = HyperHyperDual<T, F>
type Output = HyperHyperDual<T, F>
+
operator.Source§fn add(self, other: &HyperHyperDual<T, F>) -> HyperHyperDual<T, F>
fn add(self, other: &HyperHyperDual<T, F>) -> HyperHyperDual<T, F>
+
operation. Read moreSource§impl<T: DualNum<F>, F: Float> Add<&HyperHyperDual<T, F>> for HyperHyperDual<T, F>
impl<T: DualNum<F>, F: Float> Add<&HyperHyperDual<T, F>> for HyperHyperDual<T, F>
Source§type Output = HyperHyperDual<T, F>
type Output = HyperHyperDual<T, F>
+
operator.Source§impl<T: DualNum<F>, F> Add<F> for HyperHyperDual<T, F>
impl<T: DualNum<F>, F> Add<F> for HyperHyperDual<T, F>
Source§impl<T: DualNum<F>, F: Float> Add<HyperHyperDual<T, F>> for &HyperHyperDual<T, F>
impl<T: DualNum<F>, F: Float> Add<HyperHyperDual<T, F>> for &HyperHyperDual<T, F>
Source§type Output = HyperHyperDual<T, F>
type Output = HyperHyperDual<T, F>
+
operator.Source§impl<T: DualNum<F>, F: Float> Add for HyperHyperDual<T, F>
impl<T: DualNum<F>, F: Float> Add for HyperHyperDual<T, F>
Source§type Output = HyperHyperDual<T, F>
type Output = HyperHyperDual<T, F>
+
operator.Source§impl<T: DualNum<F>, F> AddAssign<F> for HyperHyperDual<T, F>
impl<T: DualNum<F>, F> AddAssign<F> for HyperHyperDual<T, F>
Source§fn add_assign(&mut self, other: F)
fn add_assign(&mut self, other: F)
+=
operation. Read moreSource§impl<T: DualNum<F>, F> AddAssign for HyperHyperDual<T, F>
impl<T: DualNum<F>, F> AddAssign for HyperHyperDual<T, F>
Source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+=
operation. Read moreSource§impl<T: Clone, F: Clone> Clone for HyperHyperDual<T, F>
impl<T: Clone, F: Clone> Clone for HyperHyperDual<T, F>
Source§fn clone(&self) -> HyperHyperDual<T, F>
fn clone(&self) -> HyperHyperDual<T, F>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl<T: Display, F> Display for HyperHyperDual<T, F>
impl<T: Display, F> Display for HyperHyperDual<T, F>
Source§impl<T: DualNum<F>, F: Float> Div<&HyperHyperDual<T, F>> for &HyperHyperDual<T, F>
impl<T: DualNum<F>, F: Float> Div<&HyperHyperDual<T, F>> for &HyperHyperDual<T, F>
Source§type Output = HyperHyperDual<T, F>
type Output = HyperHyperDual<T, F>
/
operator.Source§fn div(self, rhs: &HyperHyperDual<T, F>) -> HyperHyperDual<T, F>
fn div(self, rhs: &HyperHyperDual<T, F>) -> HyperHyperDual<T, F>
/
operation. Read moreSource§impl<T: DualNum<F>, F: Float> Div<&HyperHyperDual<T, F>> for HyperHyperDual<T, F>
impl<T: DualNum<F>, F: Float> Div<&HyperHyperDual<T, F>> for HyperHyperDual<T, F>
Source§type Output = HyperHyperDual<T, F>
type Output = HyperHyperDual<T, F>
/
operator.Source§impl<T: DualNum<F>, F: DualNumFloat> Div<F> for HyperHyperDual<T, F>
impl<T: DualNum<F>, F: DualNumFloat> Div<F> for HyperHyperDual<T, F>
Source§impl<T: DualNum<F>, F: Float> Div<HyperHyperDual<T, F>> for &HyperHyperDual<T, F>
impl<T: DualNum<F>, F: Float> Div<HyperHyperDual<T, F>> for &HyperHyperDual<T, F>
Source§type Output = HyperHyperDual<T, F>
type Output = HyperHyperDual<T, F>
/
operator.Source§impl<T: DualNum<F>, F: Float> Div for HyperHyperDual<T, F>
impl<T: DualNum<F>, F: Float> Div for HyperHyperDual<T, F>
Source§type Output = HyperHyperDual<T, F>
type Output = HyperHyperDual<T, F>
/
operator.Source§impl<T: DualNum<F>, F: DualNumFloat> DivAssign<F> for HyperHyperDual<T, F>
impl<T: DualNum<F>, F: DualNumFloat> DivAssign<F> for HyperHyperDual<T, F>
Source§fn div_assign(&mut self, other: F)
fn div_assign(&mut self, other: F)
/=
operation. Read moreSource§impl<T: DualNum<F>, F: Float> DivAssign for HyperHyperDual<T, F>
impl<T: DualNum<F>, F: Float> DivAssign for HyperHyperDual<T, F>
Source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/=
operation. Read moreSource§impl<T: DualNum<F>, F: DualNumFloat> DualNum<F> for HyperHyperDual<T, F>
impl<T: DualNum<F>, F: DualNumFloat> DualNum<F> for HyperHyperDual<T, F>
Source§impl<T: DualNum<F>, F> DualStruct<HyperHyperDual<T, F>, F> for HyperHyperDual<T, F>
impl<T: DualNum<F>, F> DualStruct<HyperHyperDual<T, F>, F> for HyperHyperDual<T, F>
Source§impl<T: DualNum<F>, F: Float + FloatConst> FloatConst for HyperHyperDual<T, F>
impl<T: DualNum<F>, F: Float + FloatConst> FloatConst for HyperHyperDual<T, F>
Source§fn FRAC_1_SQRT_2() -> Self
fn FRAC_1_SQRT_2() -> Self
1.0 / sqrt(2.0)
.Source§fn FRAC_2_SQRT_PI() -> Self
fn FRAC_2_SQRT_PI() -> Self
2.0 / sqrt(π)
.Source§impl<T: DualNum<F>, F> From<F> for HyperHyperDual<T, F>
impl<T: DualNum<F>, F> From<F> for HyperHyperDual<T, F>
Source§impl<T: DualNum<F>, F: Float + FromPrimitive> FromPrimitive for HyperHyperDual<T, F>
impl<T: DualNum<F>, F: Float + FromPrimitive> FromPrimitive for HyperHyperDual<T, F>
Source§fn from_isize(n: isize) -> Option<Self>
fn from_isize(n: isize) -> Option<Self>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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<T: DualNum<F>, F: DualNumFloat> Inv for HyperHyperDual<T, F>
impl<T: DualNum<F>, F: DualNumFloat> Inv for HyperHyperDual<T, F>
Source§impl<T: DualNum<F>, F> Mappable<HyperHyperDual<T, F>> for HyperHyperDual<T, F>
impl<T: DualNum<F>, F> Mappable<HyperHyperDual<T, F>> for HyperHyperDual<T, F>
Source§impl<T: DualNum<F>, F: Float> Mul<&HyperHyperDual<T, F>> for &HyperHyperDual<T, F>
impl<T: DualNum<F>, F: Float> Mul<&HyperHyperDual<T, F>> for &HyperHyperDual<T, F>
Source§type Output = HyperHyperDual<T, F>
type Output = HyperHyperDual<T, F>
*
operator.Source§fn mul(self, rhs: &HyperHyperDual<T, F>) -> HyperHyperDual<T, F>
fn mul(self, rhs: &HyperHyperDual<T, F>) -> HyperHyperDual<T, F>
*
operation. Read moreSource§impl<T: DualNum<F>, F: Float> Mul<&HyperHyperDual<T, F>> for HyperHyperDual<T, F>
impl<T: DualNum<F>, F: Float> Mul<&HyperHyperDual<T, F>> for HyperHyperDual<T, F>
Source§type Output = HyperHyperDual<T, F>
type Output = HyperHyperDual<T, F>
*
operator.Source§impl<T: DualNum<F>, F: DualNumFloat> Mul<F> for HyperHyperDual<T, F>
impl<T: DualNum<F>, F: DualNumFloat> Mul<F> for HyperHyperDual<T, F>
Source§impl<T: DualNum<F>, F: Float> Mul<HyperHyperDual<T, F>> for &HyperHyperDual<T, F>
impl<T: DualNum<F>, F: Float> Mul<HyperHyperDual<T, F>> for &HyperHyperDual<T, F>
Source§type Output = HyperHyperDual<T, F>
type Output = HyperHyperDual<T, F>
*
operator.Source§impl<T: DualNum<F>, F: Float> Mul for HyperHyperDual<T, F>
impl<T: DualNum<F>, F: Float> Mul for HyperHyperDual<T, F>
Source§type Output = HyperHyperDual<T, F>
type Output = HyperHyperDual<T, F>
*
operator.Source§impl<T: DualNum<F>, F: DualNumFloat> MulAssign<F> for HyperHyperDual<T, F>
impl<T: DualNum<F>, F: DualNumFloat> MulAssign<F> for HyperHyperDual<T, F>
Source§fn mul_assign(&mut self, other: F)
fn mul_assign(&mut self, other: F)
*=
operation. Read moreSource§impl<T: DualNum<F>, F: Float> MulAssign for HyperHyperDual<T, F>
impl<T: DualNum<F>, F: Float> MulAssign for HyperHyperDual<T, F>
Source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*=
operation. Read moreSource§impl<T: DualNum<F> + Signed, F: Float> Num for HyperHyperDual<T, F>
impl<T: DualNum<F> + Signed, F: Float> Num for HyperHyperDual<T, F>
type FromStrRadixErr = <F as Num>::FromStrRadixErr
Source§fn from_str_radix(
_str: &str,
_radix: u32,
) -> Result<Self, Self::FromStrRadixErr>
fn from_str_radix( _str: &str, _radix: u32, ) -> Result<Self, Self::FromStrRadixErr>
2..=36
). Read moreSource§impl<'a, T: DualNum<F>, F: Float> Product<&'a HyperHyperDual<T, F>> for HyperHyperDual<T, F>
impl<'a, T: DualNum<F>, F: Float> Product<&'a HyperHyperDual<T, F>> for HyperHyperDual<T, F>
Source§fn product<I>(iter: I) -> Selfwhere
I: Iterator<Item = &'a HyperHyperDual<T, F>>,
fn product<I>(iter: I) -> Selfwhere
I: Iterator<Item = &'a HyperHyperDual<T, F>>,
Self
from the elements by multiplying
the items.Source§impl<'a, 'b, T: DualNum<F>, F> Rem<&'a HyperHyperDual<T, F>> for &'b HyperHyperDual<T, F>
impl<'a, 'b, T: DualNum<F>, F> Rem<&'a HyperHyperDual<T, F>> for &'b HyperHyperDual<T, F>
Source§type Output = HyperHyperDual<T, F>
type Output = HyperHyperDual<T, F>
%
operator.Source§fn rem(self, _other: &HyperHyperDual<T, F>) -> HyperHyperDual<T, F>
fn rem(self, _other: &HyperHyperDual<T, F>) -> HyperHyperDual<T, F>
%
operation. Read moreSource§impl<T: DualNum<F>, F: Float> Rem<&HyperHyperDual<T, F>> for HyperHyperDual<T, F>
impl<T: DualNum<F>, F: Float> Rem<&HyperHyperDual<T, F>> for HyperHyperDual<T, F>
Source§type Output = HyperHyperDual<T, F>
type Output = HyperHyperDual<T, F>
%
operator.Source§impl<T: DualNum<F>, F> Rem<F> for HyperHyperDual<T, F>
impl<T: DualNum<F>, F> Rem<F> for HyperHyperDual<T, F>
Source§impl<T: DualNum<F>, F: Float> Rem<HyperHyperDual<T, F>> for &HyperHyperDual<T, F>
impl<T: DualNum<F>, F: Float> Rem<HyperHyperDual<T, F>> for &HyperHyperDual<T, F>
Source§type Output = HyperHyperDual<T, F>
type Output = HyperHyperDual<T, F>
%
operator.Source§impl<T: DualNum<F>, F: Float> Rem for HyperHyperDual<T, F>
impl<T: DualNum<F>, F: Float> Rem for HyperHyperDual<T, F>
Source§type Output = HyperHyperDual<T, F>
type Output = HyperHyperDual<T, F>
%
operator.Source§impl<T: DualNum<F>, F> RemAssign<F> for HyperHyperDual<T, F>
impl<T: DualNum<F>, F> RemAssign<F> for HyperHyperDual<T, F>
Source§fn rem_assign(&mut self, _other: F)
fn rem_assign(&mut self, _other: F)
%=
operation. Read moreSource§impl<T: DualNum<F>, F> RemAssign for HyperHyperDual<T, F>
impl<T: DualNum<F>, F> RemAssign for HyperHyperDual<T, F>
Source§fn rem_assign(&mut self, _other: Self)
fn rem_assign(&mut self, _other: Self)
%=
operation. Read moreSource§impl<T: DualNum<F>, F: DualNumFloat> Signed for HyperHyperDual<T, F>
impl<T: DualNum<F>, F: DualNumFloat> Signed for HyperHyperDual<T, F>
Source§fn is_positive(&self) -> bool
fn is_positive(&self) -> bool
Source§fn is_negative(&self) -> bool
fn is_negative(&self) -> bool
Source§impl<'a, 'b, T: DualNum<F>, F: Float> Sub<&'a HyperHyperDual<T, F>> for &'b HyperHyperDual<T, F>
impl<'a, 'b, T: DualNum<F>, F: Float> Sub<&'a HyperHyperDual<T, F>> for &'b HyperHyperDual<T, F>
Source§type Output = HyperHyperDual<T, F>
type Output = HyperHyperDual<T, F>
-
operator.Source§fn sub(self, other: &HyperHyperDual<T, F>) -> HyperHyperDual<T, F>
fn sub(self, other: &HyperHyperDual<T, F>) -> HyperHyperDual<T, F>
-
operation. Read moreSource§impl<T: DualNum<F>, F: Float> Sub<&HyperHyperDual<T, F>> for HyperHyperDual<T, F>
impl<T: DualNum<F>, F: Float> Sub<&HyperHyperDual<T, F>> for HyperHyperDual<T, F>
Source§type Output = HyperHyperDual<T, F>
type Output = HyperHyperDual<T, F>
-
operator.Source§impl<T: DualNum<F>, F> Sub<F> for HyperHyperDual<T, F>
impl<T: DualNum<F>, F> Sub<F> for HyperHyperDual<T, F>
Source§impl<T: DualNum<F>, F: Float> Sub<HyperHyperDual<T, F>> for &HyperHyperDual<T, F>
impl<T: DualNum<F>, F: Float> Sub<HyperHyperDual<T, F>> for &HyperHyperDual<T, F>
Source§type Output = HyperHyperDual<T, F>
type Output = HyperHyperDual<T, F>
-
operator.Source§impl<T: DualNum<F>, F: Float> Sub for HyperHyperDual<T, F>
impl<T: DualNum<F>, F: Float> Sub for HyperHyperDual<T, F>
Source§type Output = HyperHyperDual<T, F>
type Output = HyperHyperDual<T, F>
-
operator.Source§impl<T: DualNum<F>, F> SubAssign<F> for HyperHyperDual<T, F>
impl<T: DualNum<F>, F> SubAssign<F> for HyperHyperDual<T, F>
Source§fn sub_assign(&mut self, other: F)
fn sub_assign(&mut self, other: F)
-=
operation. Read moreSource§impl<T: DualNum<F>, F> SubAssign for HyperHyperDual<T, F>
impl<T: DualNum<F>, F> SubAssign for HyperHyperDual<T, F>
Source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-=
operation. Read moreSource§impl<'a, T: DualNum<F>, F: Float> Sum<&'a HyperHyperDual<T, F>> for HyperHyperDual<T, F>
impl<'a, T: DualNum<F>, F: Float> Sum<&'a HyperHyperDual<T, F>> for HyperHyperDual<T, F>
Source§fn sum<I>(iter: I) -> Selfwhere
I: Iterator<Item = &'a HyperHyperDual<T, F>>,
fn sum<I>(iter: I) -> Selfwhere
I: Iterator<Item = &'a HyperHyperDual<T, F>>,
Self
from the elements by “summing up”
the items.impl<T: Copy, F: Copy> Copy for HyperHyperDual<T, F>
impl<T: Eq, F: Eq> Eq for HyperHyperDual<T, F>
impl<T, F> StructuralPartialEq for HyperHyperDual<T, F>
Auto Trait Implementations§
impl<T, F> Freeze for HyperHyperDual<T, F>where
T: Freeze,
impl<T, F> RefUnwindSafe for HyperHyperDual<T, F>where
T: RefUnwindSafe,
F: RefUnwindSafe,
impl<T, F> Send for HyperHyperDual<T, F>
impl<T, F> Sync for HyperHyperDual<T, F>
impl<T, F> Unpin for HyperHyperDual<T, F>
impl<T, F> UnwindSafe for HyperHyperDual<T, F>where
T: UnwindSafe,
F: UnwindSafe,
Blanket Implementations§
Source§impl<T> BesselDual for T
impl<T> BesselDual for T
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§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>
self
from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self
is actually part of its subset T
(and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset
but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.