pub fn third_partial_derivative<G, T: DualNum<F>, F, O: Mappable<HyperHyperDual<T, F>>>(
g: G,
(x, y, z): (T, T, T),
) -> O::Output<(T, T, T, T, T, T, T, T)>
Expand description
Calculate third partial derivatives with respect to scalars.
let fun = |(x, y, z): (HyperHyperDual64, HyperHyperDual64, 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);