Browse Source Download (without any required ccan dependencies)
tally
running tally of integers
Rusty Russell <rusty@rustcorp.com.au>
The tally module implements simple analysis of a stream of integers. Numbers are fed in via tally_add(), and then the mean, median, mode and a histogram can be read out.
#include <stdio.h>
#include <err.h>
#include <ccan/tally/tally.h>
int main(int argc, char *argv[])
{
struct tally *t;
unsigned int i;
size_t err;
ssize_t val;
char *histogram;
if (argc < 2)
errx(1, "Usage: %s <number>...\n", argv[0]);
t = tally_new(100);
for (i = 1; i < argc; i++)
tally_add(t, atol(argv[i]));
printf("Mean = %zi\n", tally_mean(t));
val = tally_approx_median(t, &err);
printf("Median = %zi (+/- %zu)\n", val, err);
val = tally_approx_mode(t, &err);
printf("Mode = %zi (+/- %zu)\n", val, err);
histogram = tally_histogram(t, 50, 10);
printf("Histogram:\n%s", histogram);
free(histogram);
return 0;
}
LGPL (v3 or any later version)