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§
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>
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
impl SimdF64 for f64
Source§fn simd_scalar_mul(view: &ArrayView1<'_, f64>, scalar: f64) -> Array1<f64>
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>
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>
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>
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
fn simd_dot(a: &[f64], b: &[f64]) -> f64
Dot product with 4-wide accumulator unrolling to reduce dependency chains
Source§fn simd_fmadd(a: &[f64], b: &[f64], c: &[f64]) -> Vec<f64>
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