polars_compute/min_max/
mod.rs1#[cfg(feature = "simd")]
2use polars_utils::float16::pf16;
3use polars_utils::min_max::MinMax;
4
5pub use self::dyn_array::{
6 dyn_array_max_ignore_nan, dyn_array_max_propagate_nan, dyn_array_min_ignore_nan,
7 dyn_array_min_max_propagate_nan, dyn_array_min_propagate_nan,
8};
9
10pub trait MinMaxKernel {
12 type Scalar<'a>: MinMax
13 where
14 Self: 'a;
15
16 fn min_ignore_nan_kernel(&self) -> Option<Self::Scalar<'_>>;
17 fn max_ignore_nan_kernel(&self) -> Option<Self::Scalar<'_>>;
18 fn min_max_ignore_nan_kernel(&self) -> Option<(Self::Scalar<'_>, Self::Scalar<'_>)> {
19 Some((self.min_ignore_nan_kernel()?, self.max_ignore_nan_kernel()?))
20 }
21
22 fn min_propagate_nan_kernel(&self) -> Option<Self::Scalar<'_>>;
23 fn max_propagate_nan_kernel(&self) -> Option<Self::Scalar<'_>>;
24 fn min_max_propagate_nan_kernel(&self) -> Option<(Self::Scalar<'_>, Self::Scalar<'_>)> {
25 Some((
26 self.min_propagate_nan_kernel()?,
27 self.max_propagate_nan_kernel()?,
28 ))
29 }
30}
31
32trait NotSimdPrimitive {}
34
35#[cfg(not(feature = "simd"))]
36impl<T> NotSimdPrimitive for T {}
37
38#[cfg(feature = "simd")]
39impl NotSimdPrimitive for u128 {}
40#[cfg(feature = "simd")]
41impl NotSimdPrimitive for i128 {}
42#[cfg(feature = "simd")]
43impl NotSimdPrimitive for pf16 {}
44
45mod dyn_array;
46mod scalar;
47
48#[cfg(feature = "simd")]
49mod simd;