exp_simd

Function exp_simd 

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

Compute the exponential (e^x) of each element (SIMD-accelerated).

Computes e^x for each element in the array.

§Arguments

  • x - Input 1D array

§Returns

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

§Performance

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

§Mathematical Definition

exp(x) = e^x where e ≈ 2.71828...

§Examples

use scirs2_core::ndarray::array;
use scirs2_core::ndarray_ext::elementwise::exp_simd;

let x = array![0.0_f64, 1.0, 2.0];
let result = exp_simd(&x.view());

assert!((result[0] - 1.0).abs() < 1e-10);
assert!((result[1] - 2.718281828).abs() < 1e-9);
assert!((result[2] - 7.389056099).abs() < 1e-9);

§Edge Cases

  • Empty array: Returns empty array
  • Zero: exp(0) = 1
  • Large positive: May overflow to infinity
  • Large negative: Approaches zero
  • NaN: Returns NaN (preserves NaN)

§Applications

  • Machine Learning: Softmax, sigmoid activation
  • Optimization: Exponential decay, learning rate schedules
  • Probability: Exponential distribution, Gaussian PDF
  • Neural Networks: Attention mechanisms, transformer models
  • Reinforcement Learning: Policy gradients, Q-learning