summaryrefslogtreecommitdiff
path: root/lib/igt_stats.c
AgeCommit message (Collapse)Author
2016-07-27lib: Update docs for igt_statsDaniel Vetter
Unfortunately gtkdoc refuses to acknowledge static inlines, so need to nuke them. It probably gets confused by that static ... Also unamed unions confuse gtk-doc, move everything else public up. Cc: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2015-09-08lib: various documentation fixesThomas Wood
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-07-19lib: Allow storing floating point values in igt_statsChris Wilson
We don't always have precise integers with which to store, so allow degrading to double precision floating point based on available input. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-07-02stats: Add wikipedia links to get_trimean() and get_iqm()Damien Lespiau
Useful knowledge for anyone looking at the documentation and following the linkes. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-07-01stats: Add trimeanChris Wilson
https://en.wikipedia.org/wiki/Trimean The trimean is a the most efficient 3-point L-estimator (estimator of central tendency, i.e. average), even more robust than the median at estimating the average of a sample population. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-07-01stats: Add the interquartile mean (IQM)Chris Wilson
https://en.wikipedia.org/wiki/Interquartile_mean The IQM is a truncated mean and so is very similar to the scoring method used in sports that are evaluated by a panel of judges: discard the lowest and the highest scores; calculate the mean value of the remaining scores. It's useful to hide outliers in measurements (due to cold cache etc), without having to worry too much about the actual distribution. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-06-27stats: Spwan igt_init_with_size() from igt_init()Damien Lespiau
It's all about good looking APIs. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-06-27stats: Allow the underlying arrays to grow at willDamien Lespiau
Chris mentioned he wanted to be able to measure a variable "for one second" and use igt_stats to store them. That's one case where we don't know the number of data points upfront. We should really support that, so here it is. v2: Just free ->sorted when a new capacity is needed. ensure_sorted_values() will then reallocate the array to the new capacity on demand (Chris) Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-06-27stats: Add support for the interquartile range (IQR)Damien Lespiau
IQR is a good measure of dispersion. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-06-27stats: Add support for quartiles (and thus median)Damien Lespiau
More stuff, quite useful characteristics of a dataset. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-06-27stats: Add a bulk version of _push()Damien Lespiau
In case we want to push a bunch of values in one go. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-06-27stats: Add igt_stats_get_range()Damien Lespiau
Somewhat useful, for instance to size an histogram. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-06-27stats: Add functions to retrieve min/max values of the datasetDamien Lespiau
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-06-27stats: Add a note about the standard deviation derived from unbiased varianceDamien Lespiau
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-06-27stats: Add a getter for the population propertyDamien Lespiau
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-06-27stats: Add a way to specify if the data set is a population or a sampleDamien Lespiau
This changes how we compute the variance. We want an unbiased variance when reasoning about a sample. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-06-27stats: Add gtkdoc section for igt_statsDamien Lespiau
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-06-27stats: Zero the whole structure at init() timeDamien Lespiau
Because the structure started small, I initialized every member directly, but that means that the new fields added weren't properly initialized (sigh!). Zero the whole thing first then. Also, the punishment for introducing a bug should be to write the corresponding unit test. It's not a perfect one, but I'll take it. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-06-27stats: Add a way to retrieve the standard deviationDamien Lespiau
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-06-27stats: Use an algorithm popularised by Knuth to compute mean and varianceDamien Lespiau
Suggested-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-06-27stats: Be more precise and talk about mean, not averageDamien Lespiau
There are several types of averages eg. mean, median and mode. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-06-25lib: Add a tiny utility function to compute averagesDamien Lespiau
The master plan would be to get a bit more stats in it, at least the standard deviation and confidence interval. Just need the average for now. Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>