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}