pub fn third_partial_derivative_vec<G, T: DualNum<F>, F>(
    g: G,
    x: &[T],
    i: usize,
    j: usize,
    k: usize
) -> (T, T, T, T, T, T, T, T)where
    G: FnOnce(&[HyperHyperDual<T, F>]) -> HyperHyperDual<T, F>,
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);