diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/igt_stats.c | 16 | ||||
-rw-r--r-- | lib/igt_stats.h | 1 | ||||
-rw-r--r-- | lib/tests/igt_stats.c | 11 |
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(); |