diff_simd

Function diff_simd 

Source
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