pub struct AbsSum;Expand description
Absolute-sum reduction: computes Σ |data[i]| (the L1 norm accumulator).
Identity element is T::ZERO. The per-element transform is abs, applied
lane-wise before the additive fold (scalar_accumulate mirrors it on the
tail). Signed-integer abs follows T::abs semantics, including its
behavior at T::MIN.
Trait Implementations§
impl Copy for AbsSum
impl Eq for AbsSum
Source§impl<T: Scalar> ReductionOp<T> for AbsSum
impl<T: Scalar> ReductionOp<T> for AbsSum
Source§unsafe fn accumulate<Arch: SimdKernel<T>>(
acc: Arch::Vector,
v: Arch::Vector,
) -> Arch::Vector
unsafe fn accumulate<Arch: SimdKernel<T>>( acc: Arch::Vector, v: Arch::Vector, ) -> Arch::Vector
Source§unsafe fn finalize<Arch: SimdKernel<T>>(acc: Arch::Vector) -> T
unsafe fn finalize<Arch: SimdKernel<T>>(acc: Arch::Vector) -> T
Reduce the final accumulator to a scalar. Read more
Source§fn identity_scalar() -> T
fn identity_scalar() -> T
The identity element for this reduction as a scalar. Read more
Source§fn scalar_combine(a: T, b: T) -> T
fn scalar_combine(a: T, b: T) -> T
Combine two scalar partial results using this reduction. Read more
Source§fn scalar_accumulate(acc: T, elem: T) -> T
fn scalar_accumulate(acc: T, elem: T) -> T
Source§unsafe fn transform_vector<Arch: SimdKernel<T>>(v: Arch::Vector) -> Arch::Vector
unsafe fn transform_vector<Arch: SimdKernel<T>>(v: Arch::Vector) -> Arch::Vector
Per-element lane transform applied before combining (identity by default). Read more
Source§unsafe fn combine_vectors<Arch: SimdKernel<T>>(
a: Arch::Vector,
b: Arch::Vector,
) -> Arch::Vector
unsafe fn combine_vectors<Arch: SimdKernel<T>>( a: Arch::Vector, b: Arch::Vector, ) -> Arch::Vector
Merge two partial accumulators WITHOUT the per-element transform. Read more
Source§unsafe fn fma_pair_accumulate<Arch: SimdKernel<T>>(
acc: Arch::Vector,
a: Arch::Vector,
b: Arch::Vector,
) -> Arch::Vector
unsafe fn fma_pair_accumulate<Arch: SimdKernel<T>>( acc: Arch::Vector, a: Arch::Vector, b: Arch::Vector, ) -> Arch::Vector
FMA-aware pairwise accumulation:
acc = fuse(acc, a, b) where fuse may use
a single fused multiply-add instruction rather than a separate mul + accumulate. Read moreSource§unsafe fn identity_vector<Arch: SimdKernel<T>>() -> Arch::Vector
unsafe fn identity_vector<Arch: SimdKernel<T>>() -> Arch::Vector
Splat the identity element into a vector register. Read more
impl StructuralPartialEq for AbsSum
Auto Trait Implementations§
impl Freeze for AbsSum
impl RefUnwindSafe for AbsSum
impl Send for AbsSum
impl Sync for AbsSum
impl Unpin for AbsSum
impl UnsafeUnpin for AbsSum
impl UnwindSafe for AbsSum
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Returns whether the given value has been niched. Read more
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
Writes data to
out indicating that a T is niched.