|
| void | add (const double *OPENSWMM_RESTRICT a, const double *OPENSWMM_RESTRICT b, double *OPENSWMM_RESTRICT dst, std::size_t n) noexcept |
| | Element-wise addition: dst[i] = a[i] + b[i].
|
| |
| void | multiply (const double *OPENSWMM_RESTRICT a, const double *OPENSWMM_RESTRICT b, double *OPENSWMM_RESTRICT dst, std::size_t n) noexcept |
| | Element-wise multiplication: dst[i] = a[i] * b[i].
|
| |
| double | min (const double *a, std::size_t n) noexcept |
| | Find the minimum value in an array.
|
| |
| double | max (const double *a, std::size_t n) noexcept |
| | Find the maximum value in an array.
|
| |
| void | clamp (double *a, double lo, double hi, std::size_t n) noexcept |
| | Clamp all elements of an array to [lo, hi].
|
| |
| double | dot (const double *OPENSWMM_RESTRICT a, const double *OPENSWMM_RESTRICT b, std::size_t n) noexcept |
| | Dot product of two arrays: sum(a[i] * b[i]).
|
| |
| constexpr std::size_t | lane_width () noexcept |
| | Returns the SIMD lane width (doubles per register on this platform).
|
| |
| void | sqrt_array (const double *OPENSWMM_RESTRICT a, double *OPENSWMM_RESTRICT dst, std::size_t n) noexcept |
| | Element-wise sqrt: dst[i] = sqrt(a[i]). Written as a simple loop; compilers auto-vectorize to platform-native SIMD (vsqrtq_f64 on ARM, _mm256_sqrt_pd on x86, etc.).
|
| |
| void | fabs_array (const double *OPENSWMM_RESTRICT a, double *OPENSWMM_RESTRICT dst, std::size_t n) noexcept |
| | Element-wise fabs: dst[i] = fabs(a[i]).
|
| |
| void | fma_array (const double *OPENSWMM_RESTRICT a, const double *OPENSWMM_RESTRICT b, const double *OPENSWMM_RESTRICT c, double *OPENSWMM_RESTRICT dst, std::size_t n) noexcept |
| | Element-wise fused multiply-add: dst[i] = a[i] * b[i] + c[i].
|
| |