silx_types/types/
num.rs

1#![allow(non_camel_case_types)]
2
3#[cfg(feature = "use_nalgebra")]
4use nalgebra::{ Field, RealField, ComplexField, };
5#[cfg(feature = "use_nalgebra")]
6use simba::{
7    scalar::SubsetOf, simd::{ SimdValue, PrimitiveSimdValue, },
8};
9use hashed_type_def::HashedTypeDef;
10
11use approx::{ RelativeEq, UlpsEq, AbsDiffEq, };
12use serde::{ Serialize as SerdeSerialize, Deserialize as SerdeDeserialize, };
13#[cfg(feature = "be_silx")]
14use rend::BigEndian;
15#[cfg(not(feature = "be_silx"))]
16use rend::LittleEndian;
17use std::{ pin::Pin, fmt, fmt::{ Display, Debug, }, };
18pub use std::{
19    ops::{
20        Add, AddAssign, Div, DivAssign, 
21        Mul, MulAssign, Neg, Rem, RemAssign, Sub, SubAssign,
22        Not, BitAnd, BitAndAssign, BitOr, BitOrAssign, BitXor, BitXorAssign, Shl, ShlAssign, Shr, ShrAssign,
23    },
24    iter::{Sum, Product,},
25    num::FpCategory, hash::{ Hash, Hasher, },
26}; 
27pub use num_traits::{ 
28    Num, Bounded, Float, FloatConst, AsPrimitive, FromPrimitive, NumCast, ToPrimitive, One, Zero, PrimInt,
29    CheckedAdd, CheckedDiv, CheckedMul, CheckedNeg, CheckedRem, CheckedShl, CheckedShr, CheckedSub, CheckedEuclid, Euclid,
30    Inv, MulAdd, MulAddAssign, Saturating, SaturatingAdd, SaturatingMul, SaturatingSub, WrappingAdd, WrappingMul, WrappingNeg, 
31    WrappingShl, WrappingShr, WrappingSub, Pow, Signed, Unsigned,
32    one, zero, checked_pow, pow, abs, abs_sub, signum, bounds, cast, float, identities, int, ops, real, sign,
33};
34
35use silx_core::{ types::{DerefArch, DerefMutArch}, utils::ArchData, };
36use super::{ 
37    SlxFrom, SlxInto, macros::{ 
38        impl_num_char_type, impl_inc_int_type, impl_inc_num_type, impl_inc_signed_num_type, impl_inc_int_char_type, impl_inc_float_type,
39    },
40};
41
42// definitions of u8slx, i8slx, u16slx, u32slx, u64slx, u128slx, i16slx, i32slx, i64slx, i128slx, f32slx, f64slx, char_slx
43pub type u8slx = u8;
44pub type i8slx = i8;
45impl_num_char_type! { // and first implementations
46    u16slx-u16, u32slx-u32, u64slx-u64, u128slx-u128, i16slx-i16, i32slx-i32, i64slx-i64, i128slx-i128, f32slx-f32, f64slx-f64, char_slx-char,
47}
48
49impl_inc_int_type! { // implementations of operators specific to integer types
50    u16slx-u16slx-u16slx, 
51    u32slx-u32slx-u32slx, 
52    u64slx-u64slx-u64slx, 
53    u128slx-u128slx-u128slx, 
54    i16slx-i16slx-i16slx, 
55    i32slx-i32slx-i32slx, 
56    i64slx-i64slx-i64slx, 
57    i128slx-i128slx-i128slx, 
58}
59
60impl_inc_num_type! { // implementations specific to numeric types
61    u16slx-u16, u32slx-u32, u64slx-u64, u128slx-u128, i16slx-i16, i32slx-i32, i64slx-i64, i128slx-i128, f32slx-f32, f64slx-f64, 
62}
63
64impl_inc_signed_num_type! { // implementations specific to signed types
65    i16slx-i16, i32slx-i32, i64slx-i64, i128slx-i128, f32slx-f32, f64slx-f64, 
66}
67
68impl_inc_int_char_type! { // implementations specific to integer and char types
69    u16slx-u16, u32slx-u32, u64slx-u64, u128slx-u128, 
70    i16slx-i16, i32slx-i32, i64slx-i64, i128slx-i128, char_slx-char, 
71}
72
73impl_inc_float_type! { // implementations specific to float types
74    f32slx-f32, f64slx-f64,
75}