pub fn finite_difference_gradient_dyn_par<T: FloatScalar + Send + Sync>(
f: impl Fn(&DynVector<T>) -> T + Sync + Send,
x: &DynVector<T>,
) -> DynVector<T>Expand description
Parallel forward-difference gradient (requires the rayon feature).
The parallel counterpart of finite_difference_gradient_dyn: the n
components are computed across threads into disjoint elements (result
independent of thread count). Requires Fn + Sync + Send; kept separate so
enabling rayon never changes the sequential routine’s signature.
§Example
use numeris::optim::finite_difference_gradient_dyn_par;
use numeris::DynVector;
let x = DynVector::from_slice(&[3.0_f64, 4.0]);
let g = finite_difference_gradient_dyn_par(
|x: &DynVector<f64>| x[0] * x[0] + x[1] * x[1] * 2.0,
&x,
);
assert!((g[0] - 6.0).abs() < 1e-5);
assert!((g[1] - 16.0).abs() < 1e-5);