Skip to main content

PlusTimes

Struct PlusTimes 

Source
pub struct PlusTimes;
Expand description

+.×, the matrix product, at i64, f32 and f64, and complex numbers with parts of either type. Native float steps use fused multiply-add where the target has one; Accelerate computes them on macOS. Nonfinite complex results need not match scalar arithmetic. Native complex products form each part from two real products of the parts, as scalar multiplication does. A small imaginary part beside a large real part keeps its own relative accuracy.

Trait Implementations§

Source§

impl Default for PlusTimes

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Inner<Complex<f32>> for PlusTimes

Source§

type Out = Complex<f32>

The type of each result.
Source§

fn inner_ops( &self, a: &[Complex<f32>], b: &[Complex<f32>], [oa, ob]: [Orientation; 2], [m, k, n]: [usize; 3], ) -> Vec<Complex<f32>>

inner of the matrices that a and b give in the orientations given, with size [m, k, n] for those matrices. A transposed a holds a k×m matrix, row-major, and gives its m×k transpose. This default copies a transposed operand into its orientation. Float and complex PlusTimes read it in place.
Source§

fn inner_into( &self, a: &[Complex<f32>], b: &[Complex<f32>], [m, k, n]: [usize; 3], c: &mut [Complex<f32>], )

The m×n inner product of a, an m×k matrix, and b, a k×n matrix, both row-major, written row-major into out, which holds m×n items. size is [m, k, n]. Where k is 0, each result is the identity of f. An integer result that doesn’t fit its type panics, where checked_into gives false.
Source§

fn inner_mapped_into( &self, a: Mapped<'_, Complex<f32>>, b: Mapped<'_, Complex<f32>>, orientations: [Orientation; 2], size: [usize; 3], out: &mut [Complex<f32>], )

inner_into of operands whose items come through mappings, as Mapped describes. This default reads each operand whole and copies transposed operands into their orientations. Float and complex PlusTimes read an operand that isn’t held in order one block of its stored rows at a time and multiply each block as it’s read. Only one block of that operand then exists at once.
Source§

fn inner(&self, a: &[T], b: &[T], size: [usize; 3]) -> Vec<Self::Out>

inner_into’s results, as a new row-major matrix.
Source§

fn checked_into( &self, a: &[T], b: &[T], size: [usize; 3], out: &mut [Self::Out], ) -> bool

inner_into, or false where an integer result doesn’t fit its type, for callers that keep integers exact or report overflow. Where it gives true, out holds the exact results. Floats always give true.
Source§

fn inner_mapped( &self, a: Mapped<'_, T>, b: Mapped<'_, T>, orientations: [Orientation; 2], size: [usize; 3], ) -> Vec<Self::Out>
where T: Element,

inner_mapped_into’s results, as a new row-major matrix.
Source§

impl Inner<Complex<f64>> for PlusTimes

Source§

type Out = Complex<f64>

The type of each result.
Source§

fn inner_ops( &self, a: &[Complex<f64>], b: &[Complex<f64>], [oa, ob]: [Orientation; 2], [m, k, n]: [usize; 3], ) -> Vec<Complex<f64>>

inner of the matrices that a and b give in the orientations given, with size [m, k, n] for those matrices. A transposed a holds a k×m matrix, row-major, and gives its m×k transpose. This default copies a transposed operand into its orientation. Float and complex PlusTimes read it in place.
Source§

fn inner_into( &self, a: &[Complex<f64>], b: &[Complex<f64>], [m, k, n]: [usize; 3], c: &mut [Complex<f64>], )

The m×n inner product of a, an m×k matrix, and b, a k×n matrix, both row-major, written row-major into out, which holds m×n items. size is [m, k, n]. Where k is 0, each result is the identity of f. An integer result that doesn’t fit its type panics, where checked_into gives false.
Source§

fn inner_mapped_into( &self, a: Mapped<'_, Complex<f64>>, b: Mapped<'_, Complex<f64>>, orientations: [Orientation; 2], size: [usize; 3], out: &mut [Complex<f64>], )

inner_into of operands whose items come through mappings, as Mapped describes. This default reads each operand whole and copies transposed operands into their orientations. Float and complex PlusTimes read an operand that isn’t held in order one block of its stored rows at a time and multiply each block as it’s read. Only one block of that operand then exists at once.
Source§

fn inner(&self, a: &[T], b: &[T], size: [usize; 3]) -> Vec<Self::Out>

inner_into’s results, as a new row-major matrix.
Source§

fn checked_into( &self, a: &[T], b: &[T], size: [usize; 3], out: &mut [Self::Out], ) -> bool

inner_into, or false where an integer result doesn’t fit its type, for callers that keep integers exact or report overflow. Where it gives true, out holds the exact results. Floats always give true.
Source§

fn inner_mapped( &self, a: Mapped<'_, T>, b: Mapped<'_, T>, orientations: [Orientation; 2], size: [usize; 3], ) -> Vec<Self::Out>
where T: Element,

inner_mapped_into’s results, as a new row-major matrix.
Source§

impl Inner<f16> for PlusTimes

+.× of f16 matrices, summed and returned at f32. rustymath’s own kernels convert each item to f32 as they pack it, so neither operand is copied whole. Accelerate has no f16 product, so where it serves the process, both operands convert to f32 copies for its f32 product.

Source§

type Out = f32

The type of each result.
Source§

fn inner_into(&self, a: &[f16], b: &[f16], size: [usize; 3], c: &mut [f32])

The m×n inner product of a, an m×k matrix, and b, a k×n matrix, both row-major, written row-major into out, which holds m×n items. size is [m, k, n]. Where k is 0, each result is the identity of f. An integer result that doesn’t fit its type panics, where checked_into gives false.
Source§

fn inner(&self, a: &[T], b: &[T], size: [usize; 3]) -> Vec<Self::Out>

inner_into’s results, as a new row-major matrix.
Source§

fn checked_into( &self, a: &[T], b: &[T], size: [usize; 3], out: &mut [Self::Out], ) -> bool

inner_into, or false where an integer result doesn’t fit its type, for callers that keep integers exact or report overflow. Where it gives true, out holds the exact results. Floats always give true.
Source§

fn inner_ops( &self, a: &[T], b: &[T], [oa, ob]: [Orientation; 2], [m, k, n]: [usize; 3], ) -> Vec<Self::Out>
where T: Copy,

inner of the matrices that a and b give in the orientations given, with size [m, k, n] for those matrices. A transposed a holds a k×m matrix, row-major, and gives its m×k transpose. This default copies a transposed operand into its orientation. Float and complex PlusTimes read it in place.
Source§

fn inner_mapped( &self, a: Mapped<'_, T>, b: Mapped<'_, T>, orientations: [Orientation; 2], size: [usize; 3], ) -> Vec<Self::Out>
where T: Element,

inner_mapped_into’s results, as a new row-major matrix.
Source§

fn inner_mapped_into( &self, a: Mapped<'_, T>, b: Mapped<'_, T>, [oa, ob]: [Orientation; 2], size: [usize; 3], out: &mut [Self::Out], )
where T: Element,

inner_into of operands whose items come through mappings, as Mapped describes. This default reads each operand whole and copies transposed operands into their orientations. Float and complex PlusTimes read an operand that isn’t held in order one block of its stored rows at a time and multiply each block as it’s read. Only one block of that operand then exists at once.
Source§

impl Inner<f32> for PlusTimes

Source§

type Out = f32

The type of each result.
Source§

fn inner_ops( &self, a: &[f32], b: &[f32], [oa, ob]: [Orientation; 2], [m, k, n]: [usize; 3], ) -> Vec<f32>

inner of the matrices that a and b give in the orientations given, with size [m, k, n] for those matrices. A transposed a holds a k×m matrix, row-major, and gives its m×k transpose. This default copies a transposed operand into its orientation. Float and complex PlusTimes read it in place.
Source§

fn inner_into(&self, a: &[f32], b: &[f32], [m, k, n]: [usize; 3], c: &mut [f32])

The m×n inner product of a, an m×k matrix, and b, a k×n matrix, both row-major, written row-major into out, which holds m×n items. size is [m, k, n]. Where k is 0, each result is the identity of f. An integer result that doesn’t fit its type panics, where checked_into gives false.
Source§

fn inner_mapped_into( &self, a: Mapped<'_, f32>, b: Mapped<'_, f32>, orientations: [Orientation; 2], size: [usize; 3], out: &mut [f32], )

inner_into of operands whose items come through mappings, as Mapped describes. This default reads each operand whole and copies transposed operands into their orientations. Float and complex PlusTimes read an operand that isn’t held in order one block of its stored rows at a time and multiply each block as it’s read. Only one block of that operand then exists at once.
Source§

fn inner(&self, a: &[T], b: &[T], size: [usize; 3]) -> Vec<Self::Out>

inner_into’s results, as a new row-major matrix.
Source§

fn checked_into( &self, a: &[T], b: &[T], size: [usize; 3], out: &mut [Self::Out], ) -> bool

inner_into, or false where an integer result doesn’t fit its type, for callers that keep integers exact or report overflow. Where it gives true, out holds the exact results. Floats always give true.
Source§

fn inner_mapped( &self, a: Mapped<'_, T>, b: Mapped<'_, T>, orientations: [Orientation; 2], size: [usize; 3], ) -> Vec<Self::Out>
where T: Element,

inner_mapped_into’s results, as a new row-major matrix.
Source§

impl Inner<f64> for PlusTimes

Source§

type Out = f64

The type of each result.
Source§

fn inner_ops( &self, a: &[f64], b: &[f64], [oa, ob]: [Orientation; 2], [m, k, n]: [usize; 3], ) -> Vec<f64>

inner of the matrices that a and b give in the orientations given, with size [m, k, n] for those matrices. A transposed a holds a k×m matrix, row-major, and gives its m×k transpose. This default copies a transposed operand into its orientation. Float and complex PlusTimes read it in place.
Source§

fn inner_into(&self, a: &[f64], b: &[f64], [m, k, n]: [usize; 3], c: &mut [f64])

The m×n inner product of a, an m×k matrix, and b, a k×n matrix, both row-major, written row-major into out, which holds m×n items. size is [m, k, n]. Where k is 0, each result is the identity of f. An integer result that doesn’t fit its type panics, where checked_into gives false.
Source§

fn inner_mapped_into( &self, a: Mapped<'_, f64>, b: Mapped<'_, f64>, orientations: [Orientation; 2], size: [usize; 3], out: &mut [f64], )

inner_into of operands whose items come through mappings, as Mapped describes. This default reads each operand whole and copies transposed operands into their orientations. Float and complex PlusTimes read an operand that isn’t held in order one block of its stored rows at a time and multiply each block as it’s read. Only one block of that operand then exists at once.
Source§

fn inner(&self, a: &[T], b: &[T], size: [usize; 3]) -> Vec<Self::Out>

inner_into’s results, as a new row-major matrix.
Source§

fn checked_into( &self, a: &[T], b: &[T], size: [usize; 3], out: &mut [Self::Out], ) -> bool

inner_into, or false where an integer result doesn’t fit its type, for callers that keep integers exact or report overflow. Where it gives true, out holds the exact results. Floats always give true.
Source§

fn inner_mapped( &self, a: Mapped<'_, T>, b: Mapped<'_, T>, orientations: [Orientation; 2], size: [usize; 3], ) -> Vec<Self::Out>
where T: Element,

inner_mapped_into’s results, as a new row-major matrix.
Source§

impl Inner<i64> for PlusTimes

Source§

type Out = i64

The type of each result.
Source§

fn inner_into(&self, a: &[i64], b: &[i64], size: [usize; 3], out: &mut [i64])

The m×n inner product of a, an m×k matrix, and b, a k×n matrix, both row-major, written row-major into out, which holds m×n items. size is [m, k, n]. Where k is 0, each result is the identity of f. An integer result that doesn’t fit its type panics, where checked_into gives false.
Source§

fn checked_into( &self, a: &[i64], b: &[i64], size: [usize; 3], out: &mut [i64], ) -> bool

inner_into, or false where an integer result doesn’t fit its type, for callers that keep integers exact or report overflow. Where it gives true, out holds the exact results. Floats always give true.
Source§

fn inner(&self, a: &[T], b: &[T], size: [usize; 3]) -> Vec<Self::Out>

inner_into’s results, as a new row-major matrix.
Source§

fn inner_ops( &self, a: &[T], b: &[T], [oa, ob]: [Orientation; 2], [m, k, n]: [usize; 3], ) -> Vec<Self::Out>
where T: Copy,

inner of the matrices that a and b give in the orientations given, with size [m, k, n] for those matrices. A transposed a holds a k×m matrix, row-major, and gives its m×k transpose. This default copies a transposed operand into its orientation. Float and complex PlusTimes read it in place.
Source§

fn inner_mapped( &self, a: Mapped<'_, T>, b: Mapped<'_, T>, orientations: [Orientation; 2], size: [usize; 3], ) -> Vec<Self::Out>
where T: Element,

inner_mapped_into’s results, as a new row-major matrix.
Source§

fn inner_mapped_into( &self, a: Mapped<'_, T>, b: Mapped<'_, T>, [oa, ob]: [Orientation; 2], size: [usize; 3], out: &mut [Self::Out], )
where T: Element,

inner_into of operands whose items come through mappings, as Mapped describes. This default reads each operand whole and copies transposed operands into their orientations. Float and complex PlusTimes read an operand that isn’t held in order one block of its stored rows at a time and multiply each block as it’s read. Only one block of that operand then exists at once.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.