pub fn third_partial_derivative_vec<G, T: DualNum<F>, F, O: Mappable<HyperHyperDual<T, F>>>(
g: G,
x: &[T],
i: usize,
j: usize,
k: usize,
) -> O::Output<(T, T, T, T, T, T, T, T)>where
G: Fn(&[HyperHyperDual<T, F>]) -> O,
Expand description
Calculate the third partial derivative of a scalar function with arbitrary many variables.
let fun = |x: &[HyperHyperDual64]| x[0].powi(3)*x[1].powi(2);
let (f, dfdx, dfdy, dfdz, d2fdxdy, d2fdxdz, d2fdydz, d3fdxdydz) = third_partial_derivative_vec(fun, &[1.0, 2.0], 0, 0, 1);
assert_eq!(f, 4.0);
assert_relative_eq!(dfdx, 12.0);
assert_relative_eq!(dfdy, 12.0);
assert_relative_eq!(dfdz, 4.0);
assert_relative_eq!(d2fdxdy, 24.0);
assert_relative_eq!(d2fdxdz, 12.0);
assert_relative_eq!(d2fdydz, 12.0);
assert_relative_eq!(d3fdxdydz, 24.0);