pub fn diff_simd<F>(a: &ArrayView1<'_, F>) -> Array1<F>where
F: Float + SimdUnifiedOps,Expand description
SIMD-accelerated first-order difference
Computes the first-order finite difference: result[i] = a[i+1] - a[i]
The output has length n-1 for input of length n.
§Arguments
a- Input array (length >= 2)
§Returns
Array of differences (length n-1)
§Examples
use scirs2_core::ndarray::{array, Array1};
use scirs2_core::ndarray_ext::elementwise::diff_simd;
let x = array![1.0_f64, 3.0, 6.0, 10.0, 15.0];
let result = diff_simd::<f64>(&x.view());
assert_eq!(result.len(), 4); // n-1 elements
assert!((result[0] - 2.0).abs() < 1e-14); // 3-1
assert!((result[1] - 3.0).abs() < 1e-14); // 6-3
assert!((result[2] - 4.0).abs() < 1e-14); // 10-6
assert!((result[3] - 5.0).abs() < 1e-14); // 15-10§Use Cases
- Numerical differentiation
- Detecting changes in time series
- Computing gradients
- Edge detection in signal processing