dense_rank_float

Function dense_rank_float 

Source
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