Path: blob/main/crates/polars-compute/src/min_max/mod.rs
6939 views
use polars_utils::min_max::MinMax;12pub use self::dyn_array::{3dyn_array_max_ignore_nan, dyn_array_max_propagate_nan, dyn_array_min_ignore_nan,4dyn_array_min_max_propagate_nan, dyn_array_min_propagate_nan,5};67/// Low-level min/max kernel.8pub trait MinMaxKernel {9type Scalar<'a>: MinMax10where11Self: 'a;1213fn min_ignore_nan_kernel(&self) -> Option<Self::Scalar<'_>>;14fn max_ignore_nan_kernel(&self) -> Option<Self::Scalar<'_>>;15fn min_max_ignore_nan_kernel(&self) -> Option<(Self::Scalar<'_>, Self::Scalar<'_>)> {16Some((self.min_ignore_nan_kernel()?, self.max_ignore_nan_kernel()?))17}1819fn min_propagate_nan_kernel(&self) -> Option<Self::Scalar<'_>>;20fn max_propagate_nan_kernel(&self) -> Option<Self::Scalar<'_>>;21fn min_max_propagate_nan_kernel(&self) -> Option<(Self::Scalar<'_>, Self::Scalar<'_>)> {22Some((23self.min_propagate_nan_kernel()?,24self.max_propagate_nan_kernel()?,25))26}27}2829// Trait to enable the scalar blanket implementation.30trait NotSimdPrimitive {}3132#[cfg(not(feature = "simd"))]33impl<T> NotSimdPrimitive for T {}3435#[cfg(feature = "simd")]36impl NotSimdPrimitive for u128 {}37#[cfg(feature = "simd")]38impl NotSimdPrimitive for i128 {}3940mod dyn_array;41mod scalar;4243#[cfg(feature = "simd")]44mod simd;454647