pub fn numerical_gradient<F>(f: F, x: &[f64], epsilon: f64) -> Vec<f64>where F: Fn(&[f64]) -> f64,
Numerical gradient computation (for testing)