summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/igt_stats.c16
-rw-r--r--lib/igt_stats.h1
2 files changed, 17 insertions, 0 deletions
diff --git a/lib/igt_stats.c b/lib/igt_stats.c
index cec35876..b7053c3c 100644
--- a/lib/igt_stats.c
+++ b/lib/igt_stats.c
@@ -528,3 +528,19 @@ double igt_stats_get_iqm(igt_stats_t *stats)
return mean;
}
+
+/**
+ * igt_stats_get_trimean:
+ * @stats: An #igt_stats_t instance
+ *
+ * Retrieves the trimean of the @stats dataset.
+ *
+ * The trimean is a the most efficient 3-point L-estimator, even more
+ * robust than the median at estimating the average of a sample population.
+ */
+double igt_stats_get_trimean(igt_stats_t *stats)
+{
+ double q1, q2, q3;
+ igt_stats_get_quartiles(stats, &q1, &q2, &q3);
+ return (q1 + 2*q2 + q3) / 4;
+}
diff --git a/lib/igt_stats.h b/lib/igt_stats.h
index 00fb9b1f..554ab158 100644
--- a/lib/igt_stats.h
+++ b/lib/igt_stats.h
@@ -63,6 +63,7 @@ void igt_stats_get_quartiles(igt_stats_t *stats,
double igt_stats_get_iqr(igt_stats_t *stats);
double igt_stats_get_iqm(igt_stats_t *stats);
double igt_stats_get_mean(igt_stats_t *stats);
+double igt_stats_get_trimean(igt_stats_t *stats);
double igt_stats_get_median(igt_stats_t *stats);
double igt_stats_get_variance(igt_stats_t *stats);
double igt_stats_get_std_deviation(igt_stats_t *stats);