acosh_simd

Function acosh_simd 

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

Apply inverse hyperbolic cosine (acosh) using SIMD operations

The inverse hyperbolic cosine is defined as: acosh(x) = ln(x + √(x² - 1))

Domain: [1, +∞), Range: [0, +∞) Returns NaN for x < 1. This is the inverse function of cosh.

§Mathematical Properties

  • acosh(1) = 0
  • acosh(x) is monotonically increasing for x ≥ 1
  • acosh’(x) = 1/√(x² - 1)
  • For large x: acosh(x) ≈ ln(2x)

§Arguments

  • x - Input array (values should be ≥ 1 for valid results)

§Returns

  • Array with acosh applied elementwise (NaN for values < 1)

§Example

use scirs2_core::ndarray_ext::elementwise::acosh_simd;
use ndarray::{array, ArrayView1};

let x = array![1.0_f64, 2.0, 10.0];
let result = acosh_simd(&x.view());
assert!((result[0] - 0.0).abs() < 1e-10);         // acosh(1) = 0
assert!((result[1] - 1.316957897).abs() < 1e-6);  // acosh(2)

// Out of domain returns NaN
let x_invalid = array![0.5_f64];
let result_invalid = acosh_simd(&x_invalid.view());
assert!(result_invalid[0].is_nan());

§Applications

  • Hyperbolic Geometry: Distance in Poincaré disk model
  • Physics: Catenary curves, suspension bridges
  • Electronics: Transmission line analysis
  • Computer Graphics: Hyperbolic tessellations