simba/simd/
simd_signed.rs1use crate::simd::SimdValue;
2use num::Signed;
3
4pub trait SimdSigned: SimdValue {
6    fn simd_abs(&self) -> Self;
8    fn simd_abs_sub(&self, other: &Self) -> Self;
13    fn simd_signum(&self) -> Self;
15    fn is_simd_positive(&self) -> Self::SimdBool;
17    fn is_simd_negative(&self) -> Self::SimdBool;
19}
20
21impl<T: Signed + SimdValue<SimdBool = bool>> SimdSigned for T {
22    #[inline(always)]
23    fn simd_abs(&self) -> Self {
24        self.abs()
25    }
26
27    #[inline(always)]
28    fn simd_abs_sub(&self, other: &Self) -> Self {
29        self.abs_sub(other)
30    }
31
32    #[inline(always)]
33    fn simd_signum(&self) -> Self {
34        self.signum()
35    }
36
37    #[inline(always)]
38    fn is_simd_positive(&self) -> Self::SimdBool {
39        self.is_positive()
40    }
41
42    #[inline(always)]
43    fn is_simd_negative(&self) -> Self::SimdBool {
44        self.is_negative()
45    }
46}