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