Path: blob/main/crates/polars-compute/src/min_max/mod.rs
8430 views
#[cfg(feature = "simd")]1use polars_utils::float16::pf16;2use polars_utils::min_max::MinMax;34pub use self::dyn_array::{5dyn_array_max_ignore_nan, dyn_array_max_propagate_nan, dyn_array_min_ignore_nan,6dyn_array_min_max_propagate_nan, dyn_array_min_propagate_nan,7};89/// Low-level min/max kernel.10pub trait MinMaxKernel {11type Scalar<'a>: MinMax12where13Self: 'a;1415fn min_ignore_nan_kernel(&self) -> Option<Self::Scalar<'_>>;16fn max_ignore_nan_kernel(&self) -> Option<Self::Scalar<'_>>;17fn min_max_ignore_nan_kernel(&self) -> Option<(Self::Scalar<'_>, Self::Scalar<'_>)> {18Some((self.min_ignore_nan_kernel()?, self.max_ignore_nan_kernel()?))19}2021fn min_propagate_nan_kernel(&self) -> Option<Self::Scalar<'_>>;22fn max_propagate_nan_kernel(&self) -> Option<Self::Scalar<'_>>;23fn min_max_propagate_nan_kernel(&self) -> Option<(Self::Scalar<'_>, Self::Scalar<'_>)> {24Some((25self.min_propagate_nan_kernel()?,26self.max_propagate_nan_kernel()?,27))28}29}3031// Trait to enable the scalar blanket implementation.32trait NotSimdPrimitive {}3334#[cfg(not(feature = "simd"))]35impl<T> NotSimdPrimitive for T {}3637#[cfg(feature = "simd")]38impl NotSimdPrimitive for u128 {}39#[cfg(feature = "simd")]40impl NotSimdPrimitive for i128 {}41#[cfg(feature = "simd")]42impl NotSimdPrimitive for pf16 {}4344mod dyn_array;45mod scalar;4647#[cfg(feature = "simd")]48mod simd;495051