Skip to main content

SimdNumElement

Trait SimdNumElement 

Source
pub unsafe trait SimdNumElement: SimdElement + Num {
    // Required methods
    unsafe fn add(left: Self::Vector, right: Self::Vector) -> Self::Vector;
    unsafe fn sub(left: Self::Vector, right: Self::Vector) -> Self::Vector;
    unsafe fn mul(left: Self::Vector, right: Self::Vector) -> Self::Vector;
    unsafe fn div(left: Self::Vector, right: Self::Vector) -> Self::Vector;

    // Provided methods
    unsafe fn fma(
        a: Self::Vector,
        b: Self::Vector,
        c: Self::Vector,
    ) -> Self::Vector { ... }
    unsafe fn powi(x: Self::Vector, n: i32) -> Self::Vector { ... }
}
Expand description

A trait for type that may be used as numeric SIMD vector elements.

Required Methods§

Source

unsafe fn add(left: Self::Vector, right: Self::Vector) -> Self::Vector

Adds left and right.

§Safety

Make sure Self::is_available() returns true.

Source

unsafe fn sub(left: Self::Vector, right: Self::Vector) -> Self::Vector

Substructs left and right.

§Safety

Make sure Self::is_available() returns true.

Source

unsafe fn mul(left: Self::Vector, right: Self::Vector) -> Self::Vector

Multiples left and right.

§Safety

Make sure Self::is_available() returns true.

Source

unsafe fn div(left: Self::Vector, right: Self::Vector) -> Self::Vector

Divides left by right, then return the result.

§Safety

Make sure Self::is_available() returns true.

Provided Methods§

Source

unsafe fn fma(a: Self::Vector, b: Self::Vector, c: Self::Vector) -> Self::Vector

Calculates a * b + c. You should overload this when the architecture has dedicated operator.

§Safety

Make sure Self::is_available() returns true.

Source

unsafe fn powi(x: Self::Vector, n: i32) -> Self::Vector

Raises a number to an integer power.

§Safety

Make sure Self::is_available() returns true.

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.

Implementors§