Browse Source Download (without any required ccan dependencies)

Module:

tally

Summary:

running tally of integers

Author:

Rusty Russell <rusty@rustcorp.com.au>

Dependencies:

Description:

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.

Example:

#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;
}

License:

LGPL (v3 or any later version)