pub fn reverse_diff<T, F>(f: F, x: T) -> (T, T)Expand description
Computes the value and derivative of a function using reverse-mode AD.
This is the reverse-mode equivalent of forward-mode
differentiation. The function f is evaluated at x, and both
the value and derivative are returned.
§Examples
use autodiff::reverse_diff;
// f(x) = x² at x = 3
let (val, deriv) = reverse_diff(|x| x.clone() * x, 3.0);
assert_eq!(val, 9.0); // f(3) = 9
assert_eq!(deriv, 6.0); // f'(3) = 2x = 6Reuse the same function at different points:
use autodiff::{reverse_diff, Var};
let f = |x: Var<f64>| x.clone() * x.clone() - x;
let (v1, d1) = reverse_diff(f, 2.0);
let (v2, d2) = reverse_diff(f, 5.0);
assert_eq!((v1, d1), (2.0, 3.0)); // f(2) = 2, f'(2) = 3
assert_eq!((v2, d2), (20.0, 9.0)); // f(5) = 20, f'(5) = 9