diff mbox

[i-g-t,10/18] stats: Add igt_stats_get_range()

Message ID 1435417696-28115-11-git-send-email-damien.lespiau@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Lespiau, Damien June 27, 2015, 3:08 p.m. UTC
Somewhat useful, for instance to size an histogram.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
---
 lib/igt_stats.c       | 16 ++++++++++++++++
 lib/igt_stats.h       |  1 +
 lib/tests/igt_stats.c | 11 +++++++++++
 3 files changed, 28 insertions(+)
diff mbox

Patch

diff --git a/lib/igt_stats.c b/lib/igt_stats.c
index 477d204..26e4fbf 100644
--- a/lib/igt_stats.c
+++ b/lib/igt_stats.c
@@ -187,6 +187,22 @@  uint64_t igt_stats_get_max(igt_stats_t *stats)
 	return stats->max;
 }
 
+/**
+ * igt_stats_get_range:
+ * @stats: An #igt_stats_t instance
+ *
+ * Retrieves the range of the values in @stats. The range is the difference
+ * between the highest and the lowest value.
+ *
+ * The range can be a deceiving characterization of the values, because there
+ * can be extreme minimal and maximum values that are just anomalies. Prefer
+ * the interquatile range or an histogram.
+ */
+uint64_t igt_stats_get_range(igt_stats_t *stats)
+{
+	return igt_stats_get_max(stats) - igt_stats_get_min(stats);
+}
+
 /*
  * Algorithm popularised by Knuth in:
  *
diff --git a/lib/igt_stats.h b/lib/igt_stats.h
index 145b77b..65e5a02 100644
--- a/lib/igt_stats.h
+++ b/lib/igt_stats.h
@@ -52,6 +52,7 @@  void igt_stats_set_population(igt_stats_t *stats, bool full_population);
 void igt_stats_push(igt_stats_t *stats, uint64_t value);
 uint64_t igt_stats_get_min(igt_stats_t *stats);
 uint64_t igt_stats_get_max(igt_stats_t *stats);
+uint64_t igt_stats_get_range(igt_stats_t *stats);
 double igt_stats_get_mean(igt_stats_t *stats);
 double igt_stats_get_variance(igt_stats_t *stats);
 double igt_stats_get_std_deviation(igt_stats_t *stats);
diff --git a/lib/tests/igt_stats.c b/lib/tests/igt_stats.c
index dc5fe39..f09c079 100644
--- a/lib/tests/igt_stats.c
+++ b/lib/tests/igt_stats.c
@@ -68,6 +68,16 @@  static void test_min_max(void)
 	igt_assert(igt_stats_get_max(&stats) == 10);
 }
 
+static void test_range(void)
+{
+	igt_stats_t stats;
+
+	igt_stats_init(&stats, 5);
+	push_fixture_1(&stats);
+
+	igt_assert(igt_stats_get_range(&stats) == 8);
+}
+
 static void test_mean(void)
 {
 	igt_stats_t stats;
@@ -139,6 +149,7 @@  igt_simple_main
 	test_init_zero();
 	test_init();
 	test_min_max();
+	test_range();
 	test_mean();
 	test_invalidate_mean();
 	test_std_deviation();