macro_rules! assert_deriv_approx_eq {
    ($dfdx:expr, $at_x:expr, $f:expr, $args:expr, $tol:expr) => { ... };
}
Expand description

Asserts that derivatives have approximately equal values

Input

  • dfdx: f64 – derivative of f with respect to x at a given x
  • at_x: f64 – location for the derivative of f(x, {arguments}) w.r.t x
  • f: fn(f64, &A) -> f64 – function f(x: f64, args: &A)
  • tol: f64 – Error tolerance such that |dfdx - dfdx_num| < tol

Examples

Accepts small error

struct Arguments {}
let f = |x: f64, _: &mut Arguments| -x;
let args = &mut Arguments {};
let at_x = 8.0;
let dfdx = -1.01;
assert_deriv_approx_eq!(dfdx, at_x, f, args, 1e-2);

Panics due to tighter tolerance

struct Arguments {}
let f = |x: f64, _: &mut Arguments| -x;
let args = &mut Arguments {};
let at_x = 8.0;
let dfdx = -1.01;
assert_deriv_approx_eq!(dfdx, at_x, f, args, 1e-3);