1/* -*- mode: C; c-basic-offset: 2; indent-tabs-mode: nil; -*- */
2
3#include <math.h>
4#include "variable.h"
5
6void
7variable_init (Variable *variable)
8{
9 variable->weight = 0.0;
10 variable->sum = 0.0;
11 variable->sum2 = 0.0;
12}
13
14void
15variable_add_weighted (Variable *variable,
16 double value,
17 double weight)
18{
19 variable->weight += weight;
20 variable->sum += weight * value;
21 variable->sum2 += weight * value * value;
22}
23
24void
25variable_add (Variable *variable,
26 double value)
27{
28 variable_add_weighted (variable, value, weight: 1.);
29}
30
31double
32variable_mean (Variable *variable)
33{
34 return variable->sum / variable->weight;
35}
36
37double
38variable_standard_deviation (Variable *variable)
39{
40 double mean = variable_mean (variable);
41 return sqrt (x: variable->sum2 / variable->weight - mean * mean);
42}
43

source code of gtk/tests/variable.c