Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,48 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <math.h>
|
||||
|
||||
typedef enum Action { STDDEV, MEAN, VAR, COUNT } Action;
|
||||
|
||||
typedef struct stat_obj_struct {
|
||||
double sum, sum2;
|
||||
size_t num;
|
||||
Action action;
|
||||
} sStatObject, *StatObject;
|
||||
|
||||
StatObject NewStatObject( Action action )
|
||||
{
|
||||
StatObject so;
|
||||
|
||||
so = malloc(sizeof(sStatObject));
|
||||
so->sum = 0.0;
|
||||
so->sum2 = 0.0;
|
||||
so->num = 0;
|
||||
so->action = action;
|
||||
return so;
|
||||
}
|
||||
#define FREE_STAT_OBJECT(so) \
|
||||
free(so); so = NULL
|
||||
double stat_obj_value(StatObject so, Action action)
|
||||
{
|
||||
double num, mean, var, stddev;
|
||||
|
||||
if (so->num == 0.0) return 0.0;
|
||||
num = so->num;
|
||||
if (action==COUNT) return num;
|
||||
mean = so->sum/num;
|
||||
if (action==MEAN) return mean;
|
||||
var = so->sum2/num - mean*mean;
|
||||
if (action==VAR) return var;
|
||||
stddev = sqrt(var);
|
||||
if (action==STDDEV) return stddev;
|
||||
return 0;
|
||||
}
|
||||
|
||||
double stat_object_add(StatObject so, double v)
|
||||
{
|
||||
so->num++;
|
||||
so->sum += v;
|
||||
so->sum2 += v*v;
|
||||
return stat_obj_value(so, so->action);
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
double v[] = { 2,4,4,4,5,5,7,9 };
|
||||
|
||||
int main()
|
||||
{
|
||||
int i;
|
||||
StatObject so = NewStatObject( STDDEV );
|
||||
|
||||
for(i=0; i < sizeof(v)/sizeof(double) ; i++)
|
||||
printf("val: %lf std dev: %lf\n", v[i], stat_object_add(so, v[i]));
|
||||
|
||||
FREE_STAT_OBJECT(so);
|
||||
return 0;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue