pub trait SimdUnifiedOps:
Sized
+ Copy
+ PartialOrd
+ Zero {
Show 128 methods
// Required methods
fn simd_add(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
) -> Array1<Self>;
fn simd_sub(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
) -> Array1<Self>;
fn simd_mul(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
) -> Array1<Self>;
fn simd_div(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
) -> Array1<Self>;
fn simd_dot(a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>) -> Self;
fn simd_gemv(
a: &ArrayView2<'_, Self>,
x: &ArrayView1<'_, Self>,
beta: Self,
y: &mut Array1<Self>,
);
fn simd_gemm(
alpha: Self,
a: &ArrayView2<'_, Self>,
b: &ArrayView2<'_, Self>,
beta: Self,
c: &mut Array2<Self>,
);
fn simd_norm(a: &ArrayView1<'_, Self>) -> Self;
fn simd_max(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
) -> Array1<Self>;
fn simd_min(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
) -> Array1<Self>;
fn simd_scalar_mul(a: &ArrayView1<'_, Self>, scalar: Self) -> Array1<Self>;
fn simd_sum(a: &ArrayView1<'_, Self>) -> Self;
fn simd_mean(a: &ArrayView1<'_, Self>) -> Self;
fn simd_max_element(a: &ArrayView1<'_, Self>) -> Self;
fn simd_min_element(a: &ArrayView1<'_, Self>) -> Self;
fn simd_fma(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
c: &ArrayView1<'_, Self>,
) -> Array1<Self>;
fn simd_add_cache_optimized(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
) -> Array1<Self>;
fn simd_fma_advanced_optimized(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
c: &ArrayView1<'_, Self>,
) -> Array1<Self>;
fn simd_add_adaptive(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
) -> Array1<Self>;
fn simd_transpose(a: &ArrayView2<'_, Self>) -> Array2<Self>;
fn simd_transpose_blocked(a: &ArrayView2<'_, Self>) -> Array2<Self>;
fn simd_abs(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_sqrt(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_exp(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_ln(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_sin(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_cos(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_tan(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_sinh(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_cosh(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_tanh(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_floor(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_ceil(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_round(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_atan(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_asin(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_acos(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_atan2(
y: &ArrayView1<'_, Self>,
x: &ArrayView1<'_, Self>,
) -> Array1<Self>;
fn simd_log10(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_log2(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_clamp(
a: &ArrayView1<'_, Self>,
min: Self,
max: Self,
) -> Array1<Self>;
fn simd_fract(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_trunc(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_recip(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_powf(base: &ArrayView1<'_, Self>, exp: Self) -> Array1<Self>;
fn simd_pow(
base: &ArrayView1<'_, Self>,
exp: &ArrayView1<'_, Self>,
) -> Array1<Self>;
fn simd_powi(base: &ArrayView1<'_, Self>, n: i32) -> Array1<Self>;
fn simd_gamma(x: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_exp2(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_cbrt(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_ln_1p(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_exp_m1(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_to_radians(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_to_degrees(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_digamma(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_trigamma(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_ln_gamma(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_erf(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_erfc(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_erfinv(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_erfcinv(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_sigmoid(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_gelu(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_swish(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_softplus(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_mish(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_elu(a: &ArrayView1<'_, Self>, alpha: Self) -> Array1<Self>;
fn simd_selu(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_hardsigmoid(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_hardswish(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_sinc(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_log_softmax(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_asinh(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_acosh(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_atanh(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_beta(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
) -> Array1<Self>;
fn simd_ln_beta(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
) -> Array1<Self>;
fn simd_lerp(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
t: Self,
) -> Array1<Self>;
fn simd_smoothstep(
edge0: Self,
edge1: Self,
x: &ArrayView1<'_, Self>,
) -> Array1<Self>;
fn simd_hypot(
x: &ArrayView1<'_, Self>,
y: &ArrayView1<'_, Self>,
) -> Array1<Self>;
fn simd_copysign(
x: &ArrayView1<'_, Self>,
y: &ArrayView1<'_, Self>,
) -> Array1<Self>;
fn simd_smootherstep(
edge0: Self,
edge1: Self,
x: &ArrayView1<'_, Self>,
) -> Array1<Self>;
fn simd_logaddexp(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
) -> Array1<Self>;
fn simd_logit(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_square(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_rsqrt(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_sincos(a: &ArrayView1<'_, Self>) -> (Array1<Self>, Array1<Self>);
fn simd_expm1(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_log1p(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_sum_squares(a: &ArrayView1<'_, Self>) -> Self;
fn simd_multiply(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
) -> Array1<Self>;
fn simd_available() -> bool;
fn simd_sub_f32_ultra(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
result: &mut ArrayViewMut1<'_, Self>,
);
fn simd_mul_f32_ultra(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
result: &mut ArrayViewMut1<'_, Self>,
);
fn simd_sum_cubes(a: &ArrayView1<'_, Self>) -> Self;
fn simd_div_f32_ultra(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
result: &mut ArrayViewMut1<'_, Self>,
);
fn simd_sin_f32_ultra(
a: &ArrayView1<'_, Self>,
result: &mut ArrayViewMut1<'_, Self>,
);
fn simd_add_f32_ultra(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
result: &mut ArrayViewMut1<'_, Self>,
);
fn simd_fma_f32_ultra(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
c: &ArrayView1<'_, Self>,
result: &mut ArrayViewMut1<'_, Self>,
);
fn simd_pow_f32_ultra(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
result: &mut ArrayViewMut1<'_, Self>,
);
fn simd_exp_f32_ultra(
a: &ArrayView1<'_, Self>,
result: &mut ArrayViewMut1<'_, Self>,
);
fn simd_cos_f32_ultra(
a: &ArrayView1<'_, Self>,
result: &mut ArrayViewMut1<'_, Self>,
);
fn simd_dot_f32_ultra(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
) -> Self;
fn simd_variance(a: &ArrayView1<'_, Self>) -> Self;
fn simd_std(a: &ArrayView1<'_, Self>) -> Self;
fn simd_norm_l1(a: &ArrayView1<'_, Self>) -> Self;
fn simd_norm_linf(a: &ArrayView1<'_, Self>) -> Self;
fn simd_cosine_similarity(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
) -> Self;
fn simd_distance_euclidean(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
) -> Self;
fn simd_distance_manhattan(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
) -> Self;
fn simd_distance_chebyshev(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
) -> Self;
fn simd_distance_cosine(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
) -> Self;
fn simd_weighted_sum(
values: &ArrayView1<'_, Self>,
weights: &ArrayView1<'_, Self>,
) -> Self;
fn simd_weighted_mean(
values: &ArrayView1<'_, Self>,
weights: &ArrayView1<'_, Self>,
) -> Self;
fn simd_argmin(a: &ArrayView1<'_, Self>) -> Option<usize>;
fn simd_argmax(a: &ArrayView1<'_, Self>) -> Option<usize>;
fn simd_clip(
a: &ArrayView1<'_, Self>,
min_val: Self,
max_val: Self,
) -> Array1<Self>;
fn simd_log_sum_exp(a: &ArrayView1<'_, Self>) -> Self;
fn simd_softmax(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_cumsum(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_cumprod(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_diff(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_sign(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_relu(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_leaky_relu(a: &ArrayView1<'_, Self>, alpha: Self) -> Array1<Self>;
fn simd_normalize(a: &ArrayView1<'_, Self>) -> Array1<Self>;
fn simd_standardize(a: &ArrayView1<'_, Self>) -> Array1<Self>;
// Provided method
fn simd_sum_f32_ultra(a: &ArrayView1<'_, Self>) -> Self { ... }
}Expand description
Unified SIMD operations trait
Required Methods§
Sourcefn simd_add(a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_add(a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise addition
Sourcefn simd_sub(a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_sub(a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise subtraction
Sourcefn simd_mul(a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_mul(a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise multiplication
Sourcefn simd_div(a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_div(a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise division
Sourcefn simd_dot(a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>) -> Self
fn simd_dot(a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>) -> Self
Dot product
Sourcefn simd_gemv(
a: &ArrayView2<'_, Self>,
x: &ArrayView1<'_, Self>,
beta: Self,
y: &mut Array1<Self>,
)
fn simd_gemv( a: &ArrayView2<'_, Self>, x: &ArrayView1<'_, Self>, beta: Self, y: &mut Array1<Self>, )
Matrix-vector multiplication (GEMV)
Sourcefn simd_gemm(
alpha: Self,
a: &ArrayView2<'_, Self>,
b: &ArrayView2<'_, Self>,
beta: Self,
c: &mut Array2<Self>,
)
fn simd_gemm( alpha: Self, a: &ArrayView2<'_, Self>, b: &ArrayView2<'_, Self>, beta: Self, c: &mut Array2<Self>, )
Matrix-matrix multiplication (GEMM)
Sourcefn simd_norm(a: &ArrayView1<'_, Self>) -> Self
fn simd_norm(a: &ArrayView1<'_, Self>) -> Self
Vector norm (L2)
Sourcefn simd_max(a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_max(a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise maximum
Sourcefn simd_min(a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_min(a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise minimum
Sourcefn simd_scalar_mul(a: &ArrayView1<'_, Self>, scalar: Self) -> Array1<Self>
fn simd_scalar_mul(a: &ArrayView1<'_, Self>, scalar: Self) -> Array1<Self>
Scalar multiplication
Sourcefn simd_sum(a: &ArrayView1<'_, Self>) -> Self
fn simd_sum(a: &ArrayView1<'_, Self>) -> Self
Sum reduction
Sourcefn simd_mean(a: &ArrayView1<'_, Self>) -> Self
fn simd_mean(a: &ArrayView1<'_, Self>) -> Self
Mean reduction
Sourcefn simd_max_element(a: &ArrayView1<'_, Self>) -> Self
fn simd_max_element(a: &ArrayView1<'_, Self>) -> Self
Find maximum element
Sourcefn simd_min_element(a: &ArrayView1<'_, Self>) -> Self
fn simd_min_element(a: &ArrayView1<'_, Self>) -> Self
Find minimum element
Sourcefn simd_fma(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
c: &ArrayView1<'_, Self>,
) -> Array1<Self>
fn simd_fma( a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>, c: &ArrayView1<'_, Self>, ) -> Array1<Self>
Fused multiply-add: a * b + c
Sourcefn simd_add_cache_optimized(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
) -> Array1<Self>
fn simd_add_cache_optimized( a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>, ) -> Array1<Self>
Enhanced cache-optimized addition for large arrays
Sourcefn simd_fma_advanced_optimized(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
c: &ArrayView1<'_, Self>,
) -> Array1<Self>
fn simd_fma_advanced_optimized( a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>, c: &ArrayView1<'_, Self>, ) -> Array1<Self>
Advanced-optimized fused multiply-add for maximum performance
Sourcefn simd_add_adaptive(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
) -> Array1<Self>
fn simd_add_adaptive( a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>, ) -> Array1<Self>
Adaptive SIMD operation that selects optimal implementation
Sourcefn simd_transpose(a: &ArrayView2<'_, Self>) -> Array2<Self>
fn simd_transpose(a: &ArrayView2<'_, Self>) -> Array2<Self>
Matrix transpose
Sourcefn simd_transpose_blocked(a: &ArrayView2<'_, Self>) -> Array2<Self>
fn simd_transpose_blocked(a: &ArrayView2<'_, Self>) -> Array2<Self>
Cache-optimized blocked matrix transpose Uses L1 cache-friendly block sizes for improved memory access patterns. Expected 3-5x speedup for large matrices (>512x512).
Sourcefn simd_abs(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_abs(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise absolute value
Sourcefn simd_sqrt(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_sqrt(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise square root
Sourcefn simd_exp(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_exp(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise exponential (e^x)
Sourcefn simd_ln(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_ln(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise natural logarithm (ln(x))
Sourcefn simd_sin(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_sin(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise sine (sin(x))
Sourcefn simd_cos(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_cos(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise cosine (cos(x))
Sourcefn simd_tan(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_tan(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise tangent (tan(x))
Sourcefn simd_sinh(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_sinh(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise hyperbolic sine (sinh(x))
Sourcefn simd_cosh(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_cosh(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise hyperbolic cosine (cosh(x))
Sourcefn simd_tanh(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_tanh(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise hyperbolic tangent (tanh(x))
Sourcefn simd_floor(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_floor(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise floor (largest integer <= x)
Sourcefn simd_ceil(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_ceil(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise ceiling (smallest integer >= x)
Sourcefn simd_round(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_round(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise rounding to nearest integer
Sourcefn simd_atan(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_atan(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise arctangent (atan(x))
Sourcefn simd_asin(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_asin(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise arcsine (asin(x))
Sourcefn simd_acos(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_acos(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise arccosine (acos(x))
Sourcefn simd_atan2(
y: &ArrayView1<'_, Self>,
x: &ArrayView1<'_, Self>,
) -> Array1<Self>
fn simd_atan2( y: &ArrayView1<'_, Self>, x: &ArrayView1<'_, Self>, ) -> Array1<Self>
Element-wise two-argument arctangent (atan2(y, x))
Sourcefn simd_log10(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_log10(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise base-10 logarithm (log10(x))
Sourcefn simd_log2(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_log2(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise base-2 logarithm (log2(x))
Sourcefn simd_clamp(a: &ArrayView1<'_, Self>, min: Self, max: Self) -> Array1<Self>
fn simd_clamp(a: &ArrayView1<'_, Self>, min: Self, max: Self) -> Array1<Self>
Element-wise clamp (constrain values to [min, max])
Sourcefn simd_fract(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_fract(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise fractional part (x - trunc(x))
Sourcefn simd_trunc(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_trunc(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise trunc (round toward zero)
Sourcefn simd_recip(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_recip(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise reciprocal (1/x)
Sourcefn simd_powf(base: &ArrayView1<'_, Self>, exp: Self) -> Array1<Self>
fn simd_powf(base: &ArrayView1<'_, Self>, exp: Self) -> Array1<Self>
Element-wise power with scalar exponent (base^exp)
Sourcefn simd_pow(
base: &ArrayView1<'_, Self>,
exp: &ArrayView1<'_, Self>,
) -> Array1<Self>
fn simd_pow( base: &ArrayView1<'_, Self>, exp: &ArrayView1<'_, Self>, ) -> Array1<Self>
Element-wise power with array exponent (base[i]^exp[i])
Sourcefn simd_powi(base: &ArrayView1<'_, Self>, n: i32) -> Array1<Self>
fn simd_powi(base: &ArrayView1<'_, Self>, n: i32) -> Array1<Self>
Element-wise power with integer exponent (base^n)
Sourcefn simd_gamma(x: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_gamma(x: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise gamma function Γ(x)
Sourcefn simd_exp2(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_exp2(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise 2^x (base-2 exponential)
Sourcefn simd_cbrt(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_cbrt(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise cube root (cbrt(x) = x^(1/3))
Sourcefn simd_ln_1p(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_ln_1p(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise ln(1+x) (numerically stable for small x)
Sourcefn simd_exp_m1(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_exp_m1(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise exp(x)-1 (numerically stable for small x)
Sourcefn simd_to_radians(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_to_radians(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise conversion from degrees to radians (x * π / 180)
Sourcefn simd_to_degrees(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_to_degrees(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise conversion from radians to degrees (x * 180 / π)
Sourcefn simd_digamma(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_digamma(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise digamma function ψ(x) = d/dx ln(Γ(x))
Sourcefn simd_trigamma(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_trigamma(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise trigamma function ψ’(x) = d²/dx² ln(Γ(x)) The second derivative of log-gamma, critical for Fisher information in Bayesian inference.
Sourcefn simd_ln_gamma(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_ln_gamma(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise log-gamma function ln(Γ(x)) More numerically stable than computing gamma(x).ln() - used extensively in statistical distributions.
Sourcefn simd_erf(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_erf(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise error function erf(x) = (2/√π) ∫₀ˣ e^(-t²) dt Critical for normal distribution CDF: Φ(x) = 0.5 * (1 + erf(x/√2)) Properties: erf(0)=0, erf(∞)=1, erf(-x)=-erf(x)
Sourcefn simd_erfc(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_erfc(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise complementary error function erfc(x) = 1 - erf(x) More numerically stable than 1 - erf(x) for large x
Sourcefn simd_erfinv(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_erfinv(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise inverse error function erfinv(y) such that erf(erfinv(y)) = y Critical for inverse normal CDF (probit function): Φ⁻¹(p) = √2 * erfinv(2p - 1) Domain: (-1, 1), Range: (-∞, ∞) Properties: erfinv(0)=0, erfinv(-y)=-erfinv(y) (odd function)
Sourcefn simd_erfcinv(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_erfcinv(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise inverse complementary error function erfcinv(y) such that erfc(erfcinv(y)) = y More numerically stable than erfinv(1-y) for y close to 0 Domain: (0, 2), Range: (-∞, ∞)
Sourcefn simd_sigmoid(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_sigmoid(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise sigmoid (logistic) function: σ(x) = 1 / (1 + exp(-x)) Critical for neural networks, logistic regression, and probability modeling Range: (0, 1), σ(0) = 0.5, σ(-∞) = 0, σ(+∞) = 1 Properties: σ(-x) = 1 - σ(x), derivative σ’(x) = σ(x)(1 - σ(x))
Sourcefn simd_gelu(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_gelu(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise GELU (Gaussian Error Linear Unit) activation function GELU(x) = x * Φ(x) = x * 0.5 * (1 + erf(x / √2)) Where Φ(x) is the standard normal CDF Critical for Transformer models (BERT, GPT, etc.) Properties: GELU(0) = 0, smooth approximation of ReLU
Sourcefn simd_swish(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_swish(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise Swish (SiLU - Sigmoid Linear Unit) activation function Swish(x) = x * sigmoid(x) = x / (1 + exp(-x)) Self-gated activation discovered via neural architecture search Used in EfficientNet, GPT-NeoX, and many modern architectures Properties: smooth, non-monotonic, self-gating, unbounded above
Sourcefn simd_softplus(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_softplus(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise Softplus activation function Softplus(x) = ln(1 + exp(x)) Smooth approximation of ReLU Used in probabilistic models, Bayesian deep learning, smooth counting Properties: softplus(0) = ln(2) ≈ 0.693, always positive, derivative = sigmoid(x)
Sourcefn simd_mish(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_mish(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise Mish activation function Mish(x) = x * tanh(softplus(x)) = x * tanh(ln(1 + exp(x))) Self-regularized non-monotonic activation function Used in YOLOv4, modern object detection, and neural architectures Properties: smooth, non-monotonic, Mish(0) = 0, unbounded above
Sourcefn simd_elu(a: &ArrayView1<'_, Self>, alpha: Self) -> Array1<Self>
fn simd_elu(a: &ArrayView1<'_, Self>, alpha: Self) -> Array1<Self>
Element-wise ELU (Exponential Linear Unit) activation function ELU(x, α) = x if x >= 0, α * (exp(x) - 1) if x < 0 Helps with vanishing gradients and faster learning Used in deep neural networks for smoother outputs Properties: smooth, continuous derivative, bounded below by -α
Sourcefn simd_selu(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_selu(a: &ArrayView1<'_, Self>) -> Array1<Self>
SELU activation function (Scaled Exponential Linear Unit)
SELU(x) = λ * (x if x > 0, α * (exp(x) - 1) if x <= 0) where λ ≈ 1.0507 and α ≈ 1.6733 (fixed constants) Self-normalizing: preserves mean=0, variance=1 through layers Used in Self-Normalizing Neural Networks (SNNs) Eliminates need for BatchNorm when using LeCun Normal initialization
Sourcefn simd_hardsigmoid(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_hardsigmoid(a: &ArrayView1<'_, Self>) -> Array1<Self>
Hardsigmoid activation function
Hardsigmoid(x) = clip((x + 3) / 6, 0, 1) Piecewise linear approximation of sigmoid Used in MobileNetV3 for efficient inference Avoids expensive exp() computation
Sourcefn simd_hardswish(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_hardswish(a: &ArrayView1<'_, Self>) -> Array1<Self>
Hardswish activation function
Hardswish(x) = x * hardsigmoid(x) = x * clip((x + 3) / 6, 0, 1) Piecewise linear approximation of Swish Used in MobileNetV3 for efficient inference Avoids expensive exp() computation while maintaining self-gating
Sourcefn simd_sinc(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_sinc(a: &ArrayView1<'_, Self>) -> Array1<Self>
Sinc function (normalized)
sinc(x) = sin(πx) / (πx) for x ≠ 0, sinc(0) = 1 Critical for signal processing, windowing, interpolation Properties: sinc(n) = 0 for all non-zero integers n
Sourcefn simd_log_softmax(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_log_softmax(a: &ArrayView1<'_, Self>) -> Array1<Self>
Log-softmax function for numerically stable probability computation
log_softmax(x_i) = x_i - log(Σ_j exp(x_j)) Critical for neural networks, especially cross-entropy loss More numerically stable than computing log(softmax(x)) Used in Transformers, LLMs, and classification networks
Sourcefn simd_asinh(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_asinh(a: &ArrayView1<'_, Self>) -> Array1<Self>
Inverse hyperbolic sine: asinh(x) = ln(x + √(x² + 1))
Domain: (-∞, +∞), Range: (-∞, +∞) Used in: hyperbolic geometry, conformal mapping, special relativity (rapidity)
Sourcefn simd_acosh(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_acosh(a: &ArrayView1<'_, Self>) -> Array1<Self>
Inverse hyperbolic cosine: acosh(x) = ln(x + √(x² - 1))
Domain: [1, +∞), Range: [0, +∞) Returns NaN for x < 1 Used in: hyperbolic geometry, distance calculations, special relativity
Sourcefn simd_atanh(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_atanh(a: &ArrayView1<'_, Self>) -> Array1<Self>
Inverse hyperbolic tangent: atanh(x) = 0.5 * ln((1+x)/(1-x))
Domain: (-1, 1), Range: (-∞, +∞) Returns ±∞ at x = ±1, NaN for |x| > 1 Used in: statistical transformations (Fisher’s z), probability
Sourcefn simd_beta(a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_beta(a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>) -> Array1<Self>
Beta function: B(a, b) = Γ(a)Γ(b)/Γ(a+b)
The beta function is fundamental for:
- Beta distribution (Bayesian priors)
- Binomial coefficients: C(n,k) = 1/(n+1)/B(n-k+1, k+1)
- Statistical hypothesis testing
- Incomplete beta function (regularized)
Sourcefn simd_ln_beta(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
) -> Array1<Self>
fn simd_ln_beta( a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>, ) -> Array1<Self>
Log-Beta function: ln(B(a, b)) = ln(Γ(a)) + ln(Γ(b)) - ln(Γ(a+b))
More numerically stable than computing B(a,b) for large arguments. Returns ln(B(a,b)) for each pair of inputs.
Sourcefn simd_lerp(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
t: Self,
) -> Array1<Self>
fn simd_lerp( a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>, t: Self, ) -> Array1<Self>
Linear interpolation: lerp(a, b, t) = a + t * (b - a) = a * (1 - t) + b * t
Computes element-wise linear interpolation between arrays a and b
using interpolation parameter t. When t=0, returns a; when t=1, returns b.
Critical for:
- Animation blending (skeletal animation, morph targets)
- Quaternion SLERP approximation (for small angles)
- Gradient computation in neural networks
- Smooth parameter transitions
- Color blending and image processing
Sourcefn simd_smoothstep(
edge0: Self,
edge1: Self,
x: &ArrayView1<'_, Self>,
) -> Array1<Self>
fn simd_smoothstep( edge0: Self, edge1: Self, x: &ArrayView1<'_, Self>, ) -> Array1<Self>
Smoothstep interpolation: smoothstep(edge0, edge1, x)
Returns smooth Hermite interpolation between 0 and 1 when edge0 < x < edge1.
- Returns 0 if x <= edge0
- Returns 1 if x >= edge1
- Returns smooth curve: 3t² - 2t³ where t = (x - edge0) / (edge1 - edge0)
Critical for:
- Shader programming (lighting, transitions)
- Activation function variants
- Smooth threshold functions
- Anti-aliasing and blending
Sourcefn simd_hypot(
x: &ArrayView1<'_, Self>,
y: &ArrayView1<'_, Self>,
) -> Array1<Self>
fn simd_hypot( x: &ArrayView1<'_, Self>, y: &ArrayView1<'_, Self>, ) -> Array1<Self>
Hypotenuse: hypot(x, y) = sqrt(x² + y²)
Computes element-wise hypotenuse without overflow/underflow issues. Uses the standard library implementation which handles extreme values.
Critical for:
- Distance calculations in 2D/3D
- Computing vector magnitudes
- Graphics and physics simulations
- Complex number modulus: |a+bi| = hypot(a, b)
Sourcefn simd_copysign(
x: &ArrayView1<'_, Self>,
y: &ArrayView1<'_, Self>,
) -> Array1<Self>
fn simd_copysign( x: &ArrayView1<'_, Self>, y: &ArrayView1<'_, Self>, ) -> Array1<Self>
Copysign: copysign(x, y) returns x with the sign of y
For each element, returns the magnitude of x with the sign of y.
- copysign(1.0, -2.0) = -1.0
- copysign(-3.0, 4.0) = 3.0
Critical for:
- Sign manipulation in numerical algorithms
- Implementing special functions (e.g., reflection formula)
- Gradient sign propagation
Sourcefn simd_smootherstep(
edge0: Self,
edge1: Self,
x: &ArrayView1<'_, Self>,
) -> Array1<Self>
fn simd_smootherstep( edge0: Self, edge1: Self, x: &ArrayView1<'_, Self>, ) -> Array1<Self>
Smootherstep (Ken Perlin’s improved smoothstep): 6t⁵ - 15t⁴ + 10t³
An improved version of smoothstep with second-order continuous derivatives. The first AND second derivatives are zero at the boundaries.
Critical for:
- Perlin noise and procedural generation
- High-quality animation easing
- Shader programming (better lighting transitions)
- Gradient-based optimization (smoother loss landscapes)
Sourcefn simd_logaddexp(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
) -> Array1<Self>
fn simd_logaddexp( a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>, ) -> Array1<Self>
Logaddexp: log(exp(a) + exp(b)) computed in a numerically stable way
Uses the identity: log(exp(a) + exp(b)) = max(a,b) + log(1 + exp(-|a-b|)) This avoids overflow/underflow for large positive or negative values.
Critical for:
- Log-probability computations (Bayesian inference)
- Log-likelihood calculations in ML
- Hidden Markov Model forward/backward algorithms
- Neural network loss functions (cross-entropy)
Sourcefn simd_logit(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_logit(a: &ArrayView1<'_, Self>) -> Array1<Self>
Logit function: log(p / (1-p)) - inverse of sigmoid
Maps probabilities in (0, 1) to log-odds in (-∞, +∞). The logit function is the inverse of the sigmoid (logistic) function.
Critical for:
- Logistic regression (log-odds interpretation)
- Probability calibration
- Converting probabilities to unbounded space for optimization
- Statistical modeling (link functions)
Sourcefn simd_square(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_square(a: &ArrayView1<'_, Self>) -> Array1<Self>
Element-wise square: x²
More efficient than simd_pow(x, 2) or simd_mul(x, x) as it’s a single multiplication.
Critical for:
- Variance computation: E[X²] - E[X]²
- Distance calculations: ||a - b||² = (a - b)²
- Neural network loss functions (MSE)
- Physics simulations (kinetic energy: ½mv²)
Sourcefn simd_rsqrt(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_rsqrt(a: &ArrayView1<'_, Self>) -> Array1<Self>
Inverse square root: 1/sqrt(x)
More efficient than simd_div(1, simd_sqrt(x)) for normalization operations.
Critical for:
- Vector normalization: v * rsqrt(dot(v,v))
- Graphics (lighting, physics simulations)
- Layer normalization in neural networks
- Quaternion normalization
Sourcefn simd_sincos(a: &ArrayView1<'_, Self>) -> (Array1<Self>, Array1<Self>)
fn simd_sincos(a: &ArrayView1<'_, Self>) -> (Array1<Self>, Array1<Self>)
Simultaneous sin and cos: returns (sin(x), cos(x))
More efficient than calling sin and cos separately when both are needed. Returns a tuple of two arrays.
Critical for:
- Rotation matrices (2D and 3D)
- Fourier transforms
- Wave simulations
- Animation and physics
Sourcefn simd_expm1(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_expm1(a: &ArrayView1<'_, Self>) -> Array1<Self>
Numerically stable exp(x) - 1
Returns exp(x) - 1 accurately for small x values where exp(x) ≈ 1. For small x, the direct calculation exp(x) - 1 suffers from catastrophic cancellation.
Critical for:
- Financial calculations (compound interest for small rates)
- Numerical integration of differential equations
- Statistical distributions (Poisson, exponential)
- Machine learning (softplus, log-sum-exp)
Sourcefn simd_log1p(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_log1p(a: &ArrayView1<'_, Self>) -> Array1<Self>
Numerically stable ln(1 + x)
Returns ln(1 + x) accurately for small x values where 1 + x ≈ 1. For small x, the direct calculation ln(1 + x) suffers from catastrophic cancellation.
Critical for:
- Log-probability calculations (log(1 - p) for small p)
- Numerical integration
- Statistical distributions
- Machine learning (binary cross-entropy loss)
Sourcefn simd_sum_squares(a: &ArrayView1<'_, Self>) -> Self
fn simd_sum_squares(a: &ArrayView1<'_, Self>) -> Self
Sum of squares
Sourcefn simd_multiply(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
) -> Array1<Self>
fn simd_multiply( a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>, ) -> Array1<Self>
Element-wise multiplication (alias for simd_mul)
Sourcefn simd_available() -> bool
fn simd_available() -> bool
Check if SIMD is available for this type
Sourcefn simd_sub_f32_ultra(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
result: &mut ArrayViewMut1<'_, Self>,
)
fn simd_sub_f32_ultra( a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>, result: &mut ArrayViewMut1<'_, Self>, )
Ultra-optimized subtraction (alias for simd_sub for compatibility)
Sourcefn simd_mul_f32_ultra(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
result: &mut ArrayViewMut1<'_, Self>,
)
fn simd_mul_f32_ultra( a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>, result: &mut ArrayViewMut1<'_, Self>, )
Ultra-optimized multiplication (alias for simd_mul for compatibility)
Sourcefn simd_sum_cubes(a: &ArrayView1<'_, Self>) -> Self
fn simd_sum_cubes(a: &ArrayView1<'_, Self>) -> Self
Ultra-optimized cubes sum (power 3 sum)
Sourcefn simd_div_f32_ultra(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
result: &mut ArrayViewMut1<'_, Self>,
)
fn simd_div_f32_ultra( a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>, result: &mut ArrayViewMut1<'_, Self>, )
Ultra-optimized division (alias for simd_div for compatibility)
Sourcefn simd_sin_f32_ultra(
a: &ArrayView1<'_, Self>,
result: &mut ArrayViewMut1<'_, Self>,
)
fn simd_sin_f32_ultra( a: &ArrayView1<'_, Self>, result: &mut ArrayViewMut1<'_, Self>, )
Ultra-optimized sine function
Sourcefn simd_add_f32_ultra(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
result: &mut ArrayViewMut1<'_, Self>,
)
fn simd_add_f32_ultra( a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>, result: &mut ArrayViewMut1<'_, Self>, )
Ultra-optimized addition (alias for simd_add for compatibility)
Sourcefn simd_fma_f32_ultra(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
c: &ArrayView1<'_, Self>,
result: &mut ArrayViewMut1<'_, Self>,
)
fn simd_fma_f32_ultra( a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>, c: &ArrayView1<'_, Self>, result: &mut ArrayViewMut1<'_, Self>, )
Ultra-optimized fused multiply-add
Sourcefn simd_pow_f32_ultra(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
result: &mut ArrayViewMut1<'_, Self>,
)
fn simd_pow_f32_ultra( a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>, result: &mut ArrayViewMut1<'_, Self>, )
Ultra-optimized power function
Sourcefn simd_exp_f32_ultra(
a: &ArrayView1<'_, Self>,
result: &mut ArrayViewMut1<'_, Self>,
)
fn simd_exp_f32_ultra( a: &ArrayView1<'_, Self>, result: &mut ArrayViewMut1<'_, Self>, )
Ultra-optimized exponential function
Sourcefn simd_cos_f32_ultra(
a: &ArrayView1<'_, Self>,
result: &mut ArrayViewMut1<'_, Self>,
)
fn simd_cos_f32_ultra( a: &ArrayView1<'_, Self>, result: &mut ArrayViewMut1<'_, Self>, )
Ultra-optimized cosine function
Sourcefn simd_dot_f32_ultra(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
) -> Self
fn simd_dot_f32_ultra( a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>, ) -> Self
Ultra-optimized dot product
Sourcefn simd_variance(a: &ArrayView1<'_, Self>) -> Self
fn simd_variance(a: &ArrayView1<'_, Self>) -> Self
Variance (population variance)
Sourcefn simd_std(a: &ArrayView1<'_, Self>) -> Self
fn simd_std(a: &ArrayView1<'_, Self>) -> Self
Standard deviation
Sourcefn simd_norm_l1(a: &ArrayView1<'_, Self>) -> Self
fn simd_norm_l1(a: &ArrayView1<'_, Self>) -> Self
L1 norm (Manhattan norm)
Sourcefn simd_norm_linf(a: &ArrayView1<'_, Self>) -> Self
fn simd_norm_linf(a: &ArrayView1<'_, Self>) -> Self
L∞ norm (Chebyshev norm / max absolute)
Sourcefn simd_cosine_similarity(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
) -> Self
fn simd_cosine_similarity( a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>, ) -> Self
Cosine similarity between two vectors
Sourcefn simd_distance_euclidean(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
) -> Self
fn simd_distance_euclidean( a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>, ) -> Self
Euclidean distance between two vectors
Sourcefn simd_distance_manhattan(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
) -> Self
fn simd_distance_manhattan( a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>, ) -> Self
Manhattan distance between two vectors
Sourcefn simd_distance_chebyshev(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
) -> Self
fn simd_distance_chebyshev( a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>, ) -> Self
Chebyshev distance between two vectors
Sourcefn simd_distance_cosine(
a: &ArrayView1<'_, Self>,
b: &ArrayView1<'_, Self>,
) -> Self
fn simd_distance_cosine( a: &ArrayView1<'_, Self>, b: &ArrayView1<'_, Self>, ) -> Self
Cosine distance (1 - cosine_similarity)
Sourcefn simd_weighted_sum(
values: &ArrayView1<'_, Self>,
weights: &ArrayView1<'_, Self>,
) -> Self
fn simd_weighted_sum( values: &ArrayView1<'_, Self>, weights: &ArrayView1<'_, Self>, ) -> Self
Weighted sum
Sourcefn simd_weighted_mean(
values: &ArrayView1<'_, Self>,
weights: &ArrayView1<'_, Self>,
) -> Self
fn simd_weighted_mean( values: &ArrayView1<'_, Self>, weights: &ArrayView1<'_, Self>, ) -> Self
Weighted mean
Sourcefn simd_argmin(a: &ArrayView1<'_, Self>) -> Option<usize>
fn simd_argmin(a: &ArrayView1<'_, Self>) -> Option<usize>
Find index of minimum element (argmin)
Sourcefn simd_argmax(a: &ArrayView1<'_, Self>) -> Option<usize>
fn simd_argmax(a: &ArrayView1<'_, Self>) -> Option<usize>
Find index of maximum element (argmax)
Sourcefn simd_clip(
a: &ArrayView1<'_, Self>,
min_val: Self,
max_val: Self,
) -> Array1<Self>
fn simd_clip( a: &ArrayView1<'_, Self>, min_val: Self, max_val: Self, ) -> Array1<Self>
Clip values to [min_val, max_val] range
Sourcefn simd_log_sum_exp(a: &ArrayView1<'_, Self>) -> Self
fn simd_log_sum_exp(a: &ArrayView1<'_, Self>) -> Self
Log-sum-exp for numerically stable softmax computation
Sourcefn simd_softmax(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_softmax(a: &ArrayView1<'_, Self>) -> Array1<Self>
Softmax for probability distribution (softmax = exp(x - log_sum_exp(x)))
Sourcefn simd_cumsum(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_cumsum(a: &ArrayView1<'_, Self>) -> Array1<Self>
Cumulative sum
Sourcefn simd_cumprod(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_cumprod(a: &ArrayView1<'_, Self>) -> Array1<Self>
Cumulative product
Sourcefn simd_diff(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_diff(a: &ArrayView1<'_, Self>) -> Array1<Self>
First-order difference (a[i+1] - a[i])
Sourcefn simd_sign(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_sign(a: &ArrayView1<'_, Self>) -> Array1<Self>
Sign function: returns -1 for negative, 0 for zero, +1 for positive
Sourcefn simd_relu(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_relu(a: &ArrayView1<'_, Self>) -> Array1<Self>
ReLU activation: max(0, x)
Sourcefn simd_leaky_relu(a: &ArrayView1<'_, Self>, alpha: Self) -> Array1<Self>
fn simd_leaky_relu(a: &ArrayView1<'_, Self>, alpha: Self) -> Array1<Self>
Leaky ReLU: x if x > 0 else alpha * x
Sourcefn simd_normalize(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_normalize(a: &ArrayView1<'_, Self>) -> Array1<Self>
L2 normalization (unit vector)
Sourcefn simd_standardize(a: &ArrayView1<'_, Self>) -> Array1<Self>
fn simd_standardize(a: &ArrayView1<'_, Self>) -> Array1<Self>
Standardization: (x - mean) / std
Provided Methods§
Sourcefn simd_sum_f32_ultra(a: &ArrayView1<'_, Self>) -> Self
fn simd_sum_f32_ultra(a: &ArrayView1<'_, Self>) -> Self
Ultra-optimized sum reduction (alias for simd_sum for compatibility)
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.