pub fn third_partial_derivative<G, T: DualNum<F>, F>(
    g: G,
    x: T,
    y: T,
    z: T
) -> (T, T, T, T, T, T, T, T)where
    G: FnOnce(HyperHyperDual<T, F>, HyperHyperDual<T, F>, HyperHyperDual<T, F>) -> HyperHyperDual<T, F>,
Expand description

Calculate third partial derivatives with respect to scalars.

let fun = |x: HyperHyperDual64, y: HyperHyperDual64, z: HyperHyperDual64| (x.powi(2) + y.powi(2) + z.powi(2)).powi(3);
let (f, dfdx, dfdy, dfdz, d2fdxdy, d2fdxdz, d2fdydz, d3fdxdydz) = third_partial_derivative(fun, 1.0, 2.0, 3.0);
println!("{:?}", third_partial_derivative(fun, 1.0, 2.0, 3.0));
assert_eq!(f, 2744.0);
assert_relative_eq!(dfdx, 1176.0);
assert_relative_eq!(dfdy, 2352.0);
assert_relative_eq!(dfdz, 3528.0);
assert_relative_eq!(d2fdxdy, 672.0);
assert_relative_eq!(d2fdxdz, 1008.0);
assert_relative_eq!(d2fdydz, 2016.0);
assert_relative_eq!(d3fdxdydz, 288.0);