From 2f18c63f6c4ea4841661812fcefc0f2ff5158ac7 Mon Sep 17 00:00:00 2001 From: maitriupadhyay03-cell Date: Sun, 7 Jun 2026 23:58:45 +0530 Subject: [PATCH 1/2] feat: implement median function in primary module Implement median function to calculate median of f64 values. --- src/primary/median.rs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/primary/median.rs diff --git a/src/primary/median.rs b/src/primary/median.rs new file mode 100644 index 0000000..f70aeb4 --- /dev/null +++ b/src/primary/median.rs @@ -0,0 +1,29 @@ +/// Returns the median of a sequence of `f64` values. +/// +/// For an odd number of values, returns the middle value after sorting. +/// For an even number of values, returns the average of the two middle values. +/// Empty input returns `None`. +/// +/// # Example +/// ``` +/// use rustats::primary::median; +/// +/// let values = [1.0, 3.0, 2.0]; +/// let m = median(&values); +/// assert_eq!(m, Some(2.0)); +/// ``` +pub fn median(values: &[f64]) -> Option { + if values.is_empty() { + return None; + } + + let mut sorted = values.to_vec(); + sorted.sort_by(|a, b| a.partial_cmp(b).unwrap()); + + let len = sorted.len(); + if len % 2 == 1 { + Some(sorted[len / 2]) + } else { + Some((sorted[len / 2 - 1] + sorted[len / 2]) / 2.0) + } +} From d95829da2c304bf51cc84e874bbd41827fb54c12 Mon Sep 17 00:00:00 2001 From: maitriupadhyay03-cell Date: Mon, 8 Jun 2026 00:00:16 +0530 Subject: [PATCH 2/2] Add median module and export median function --- src/primary/mod.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/primary/mod.rs b/src/primary/mod.rs index e301a63..15070d3 100644 --- a/src/primary/mod.rs +++ b/src/primary/mod.rs @@ -1,3 +1,6 @@ pub mod mean; pub use mean::mean; + +pub mod median; +pub use median::median;