Skip to main content

SimdF64

Trait SimdF64 

Source
pub trait SimdF64 {
Show 13 methods // Required methods fn simd_add(self, other: f64) -> f64; fn simd_sub(self, other: f64) -> f64; fn simd_mul(self, other: f64) -> f64; fn simd_scalar_mul(view: &ArrayView1<'_, f64>, scalar: f64) -> Array1<f64>; fn simd_add_arrays( a: &ArrayView1<'_, f64>, b: &ArrayView1<'_, f64>, ) -> Array1<f64>; fn simd_sub_arrays( a: &ArrayView1<'_, f64>, b: &ArrayView1<'_, f64>, ) -> Array1<f64>; fn simd_mul_arrays( a: &ArrayView1<'_, f64>, b: &ArrayView1<'_, f64>, ) -> Array1<f64>; fn simd_dot(a: &[f64], b: &[f64]) -> f64; fn simd_sum(slice: &[f64]) -> f64; fn simd_sum_array(a: &ArrayView1<'_, f64>) -> f64; fn simd_max(a: &[f64]) -> f64; fn simd_min(a: &[f64]) -> f64; fn simd_fmadd(a: &[f64], b: &[f64], c: &[f64]) -> Vec<f64>;
}
Expand description

Trait for SIMD-like batch operations on f64

Required Methods§

Source

fn simd_add(self, other: f64) -> f64

Source

fn simd_sub(self, other: f64) -> f64

Source

fn simd_mul(self, other: f64) -> f64

Source

fn simd_scalar_mul(view: &ArrayView1<'_, f64>, scalar: f64) -> Array1<f64>

Source

fn simd_add_arrays( a: &ArrayView1<'_, f64>, b: &ArrayView1<'_, f64>, ) -> Array1<f64>

Source

fn simd_sub_arrays( a: &ArrayView1<'_, f64>, b: &ArrayView1<'_, f64>, ) -> Array1<f64>

Source

fn simd_mul_arrays( a: &ArrayView1<'_, f64>, b: &ArrayView1<'_, f64>, ) -> Array1<f64>

Source

fn simd_dot(a: &[f64], b: &[f64]) -> f64

Source

fn simd_sum(slice: &[f64]) -> f64

Source

fn simd_sum_array(a: &ArrayView1<'_, f64>) -> f64

Source

fn simd_max(a: &[f64]) -> f64

Source

fn simd_min(a: &[f64]) -> f64

Source

fn simd_fmadd(a: &[f64], b: &[f64], c: &[f64]) -> Vec<f64>

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.

Implementations on Foreign Types§

Source§

impl SimdF64 for f64

Source§

fn simd_scalar_mul(view: &ArrayView1<'_, f64>, scalar: f64) -> Array1<f64>

Scalar-multiply every element, 4-wide unrolled

Source§

fn simd_add_arrays( a: &ArrayView1<'_, f64>, b: &ArrayView1<'_, f64>, ) -> Array1<f64>

Element-wise addition, 4-wide unrolled

Source§

fn simd_sub_arrays( a: &ArrayView1<'_, f64>, b: &ArrayView1<'_, f64>, ) -> Array1<f64>

Element-wise subtraction, 4-wide unrolled

Source§

fn simd_mul_arrays( a: &ArrayView1<'_, f64>, b: &ArrayView1<'_, f64>, ) -> Array1<f64>

Element-wise multiplication, 4-wide unrolled

Source§

fn simd_dot(a: &[f64], b: &[f64]) -> f64

Dot product with 4-wide accumulator unrolling to reduce dependency chains

Source§

fn simd_sum(slice: &[f64]) -> f64

Horizontal sum with 4-wide accumulator unrolling

Source§

fn simd_max(a: &[f64]) -> f64

Maximum value with 4-wide unrolled comparison

Source§

fn simd_min(a: &[f64]) -> f64

Minimum value with 4-wide unrolled comparison

Source§

fn simd_fmadd(a: &[f64], b: &[f64], c: &[f64]) -> Vec<f64>

Fused multiply-add: out[i] = a[i]*b[i] + c[i], 4-wide unrolled

Source§

fn simd_add(self, other: f64) -> f64

Source§

fn simd_sub(self, other: f64) -> f64

Source§

fn simd_mul(self, other: f64) -> f64

Source§

fn simd_sum_array(a: &ArrayView1<'_, f64>) -> f64

Implementors§