vortex_sequence/compute/
min_max.rs

1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: Copyright the Vortex contributors
3
4use vortex_array::compute::{MinMaxKernel, MinMaxKernelAdapter, MinMaxResult};
5use vortex_array::register_kernel;
6use vortex_error::VortexResult;
7use vortex_scalar::Scalar;
8
9use crate::SequenceArray;
10use crate::array::SequenceVTable;
11
12impl MinMaxKernel for SequenceVTable {
13    fn min_max(&self, array: &SequenceArray) -> VortexResult<Option<MinMaxResult>> {
14        let base = array.base();
15        let last = array.last();
16        let (min, max) = if base < last {
17            (base, last)
18        } else {
19            (last, base)
20        };
21        Ok(Some(MinMaxResult {
22            min: Scalar::new(array.dtype().clone(), min.into()),
23            max: Scalar::new(array.dtype().clone(), max.into()),
24        }))
25    }
26}
27
28register_kernel!(MinMaxKernelAdapter(SequenceVTable).lift());