pub fn dense_rank_float<T: Float + Copy>(
window: FloatAVT<'_, T>,
) -> Result<IntegerArray<i32>, KernelError>Expand description
Computes SQL DENSE_RANK() ranking for floating-point data with IEEE 754 compliance.
Implements dense ranking for floating-point values where tied values receive identical consecutive ranks. Handles special floating-point values (NaN, infinity) according to IEEE 754 standards while maintaining dense rank sequence properties.
§Parameters
window- Float array view containing values for dense ranking
§Returns
Returns Result<IntegerArray<i32>, KernelError> containing:
- Success: Dense rank values with consecutive numbering
- Error: KernelError if capacity validation fails
- Zero values for null or NaN elements
- Null mask indicating positions with valid ranks
§Applications
- Scientific ranking: Dense ranking of experimental measurements
- Statistical analysis: Percentile calculations without rank gaps
- Financial modeling: Dense ranking of performance metrics
- Data preprocessing: Creating ordinal encodings for continuous variables
§Examples
ⓘ
use minarrow::FloatArray;
use simd_kernels::kernels::window::dense_rank_float;
let arr = FloatArray::<f64>::from_slice(&[1.5, 3.14, 2.71, 3.14]);
let result = dense_rank_float((&arr, 0, arr.len())).unwrap();
// Output: [1, 3, 2, 3] - dense ranking with tied 3.14 values