43 lines
847 B
C
43 lines
847 B
C
|
/* -*- mode: C; c-basic-offset: 2; indent-tabs-mode: nil; -*- */
|
||
|
|
||
|
#include <math.h>
|
||
|
#include "variable.h"
|
||
|
|
||
|
void
|
||
|
variable_init (Variable *variable)
|
||
|
{
|
||
|
variable->weight = 0.0;
|
||
|
variable->sum = 0.0;
|
||
|
variable->sum2 = 0.0;
|
||
|
}
|
||
|
|
||
|
void
|
||
|
variable_add_weighted (Variable *variable,
|
||
|
double value,
|
||
|
double weight)
|
||
|
{
|
||
|
variable->weight += weight;
|
||
|
variable->sum += weight * value;
|
||
|
variable->sum2 += weight * value * value;
|
||
|
}
|
||
|
|
||
|
void
|
||
|
variable_add (Variable *variable,
|
||
|
double value)
|
||
|
{
|
||
|
variable_add_weighted (variable, value, 1.);
|
||
|
}
|
||
|
|
||
|
double
|
||
|
variable_mean (Variable *variable)
|
||
|
{
|
||
|
return variable->sum / variable->weight;
|
||
|
}
|
||
|
|
||
|
double
|
||
|
variable_standard_deviation (Variable *variable)
|
||
|
{
|
||
|
double mean = variable_mean (variable);
|
||
|
return sqrt (variable->sum2 / variable->weight - mean * mean);
|
||
|
}
|