summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDamien Lespiau <damien.lespiau@intel.com>2015-06-27 11:12:01 +0100
committerDamien Lespiau <damien.lespiau@intel.com>2015-06-27 16:04:07 +0100
commit0e4c175e04abadc1f0f76e3c144debf1527cf057 (patch)
treefb6ca7d53caba7ff0deb94ba09ce2b6fe76ddf7b /lib
parent4a89a841a11cb872f9b0b0959c306fcb96f87d75 (diff)
stats: Add igt_stats_get_range()
Somewhat useful, for instance to size an histogram. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/igt_stats.c16
-rw-r--r--lib/igt_stats.h1
-rw-r--r--lib/tests/igt_stats.c11
3 files changed, 28 insertions, 0 deletions
diff --git a/lib/igt_stats.c b/lib/igt_stats.c
index 477d2043..26e4fbf9 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 145b77b4..65e5a02b 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 dc5fe39c..f09c0793 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();