sin_simd

Function sin_simd 

Source
pub fn sin_simd<F>(x: &ArrayView1<'_, F>) -> Array1<F>
where F: Float + SimdUnifiedOps,
Expand description

Compute the sine of each element (SIMD-accelerated).

Computes sin(x) for each element in the array.

§Arguments

  • x - Input 1D array (angles in radians)

§Returns

Array1<F> with the same length as input, with sine values.

§Performance

  • Auto-vectorization: Compiler optimizations provide excellent performance
  • Speedup: 2-4x on large arrays via auto-vectorization

§Mathematical Definition

sin(x) = opposite/hypotenuse in a right triangle
Periodic with period 2π: sin(x + 2π) = sin(x)
Range: [-1, 1]

§Examples

use scirs2_core::ndarray::array;
use scirs2_core::ndarray_ext::elementwise::sin_simd;
use std::f64::consts::PI;

let x = array![0.0_f64, PI/6.0, PI/4.0, PI/2.0, PI];
let result = sin_simd(&x.view());

// sin(0) = 0, sin(π/2) = 1, sin(π) ≈ 0

§Edge Cases

  • Empty array: Returns empty array
  • Zero: sin(0) = 0
  • NaN: Returns NaN (preserves NaN)
  • Infinity: Returns NaN (undefined for infinity)

§Applications

  • Signal Processing: Wave generation, modulation, Fourier analysis
  • Computer Graphics: Rotation matrices, smooth animations
  • Physics Simulations: Oscillations, wave propagation
  • Audio: Synthesizers, tone generation
  • Robotics: Trajectory planning, inverse kinematics