use cubecl::prelude::*;
#[cube]
pub(crate) fn normalize_to_flag<E: Numeric, N: Size>(item: Vector<E, N>) -> Vector<E, N> {
let zero = Vector::empty().fill(E::from_int(0));
let one = Vector::empty().fill(E::from_int(1));
select_many(item.not_equal(&zero), one, zero)
}
#[cube]
pub(crate) fn lowest_coordinate_matching<E: Scalar, N: Size>(
target: Vector<E, N>,
item: Vector<E, N>,
coordinate: Vector<u32, N>,
) -> Vector<u32, N> {
let is_candidate = item.equal(&target);
let candidate_coordinate =
select_many(is_candidate, coordinate, Vector::empty().fill(u32::MAX));
plane_min(candidate_coordinate)
}