This commit is contained in:
Jack Halford 2017-11-13 16:21:48 +01:00
parent 80837f0428
commit a926031dd0
3 changed files with 39 additions and 37 deletions

View file

@ -19,6 +19,7 @@
# include <errno.h>
# include <unistd.h>
# include <stdio.h>
# include <stdint.h>
# include <stdlib.h>
# include <time.h>

View file

@ -17,7 +17,9 @@
# include <dlfcn.h>
# include <math.h>
extern struct s_stats {
typedef struct s_rs t_rs;
struct s_rs {
int count;
double min;
double max;
@ -25,10 +27,10 @@ extern struct s_stats {
double m;
double stdev;
double var;
} g_rs;
};
void rs_clear();
void rs_push(double n);
void rs_calcmore();
void rs_init(t_rs *rs);
void rs_push(t_rs *rs, double n);
void rs_final(t_rs *rs);
#endif

View file

@ -13,50 +13,49 @@
#include "libft.h"
#include <math.h>
struct s_stats g_rs = {0, 0, 0, 0, 0, 0, 0};
double sqrt(double x);
void rs_clear(void)
void rs_init(t_rs *rs)
{
g_rs.count = 0;
g_rs.min = DBL_MAX;
g_rs.max = -DBL_MAX;
bzero(rs, sizeof(t_rs));
rs->count = 0;
rs->min = DBL_MAX;
rs->max = -DBL_MAX;
}
void rs_push(double n)
void rs_push(t_rs *rs, double n)
{
double delta;
g_rs.count++;
n < g_rs.min ? g_rs.min = n : (0);
n > g_rs.max ? g_rs.max = n : (0);
if (g_rs.count == 1)
rs->count++;
n < rs->min ? rs->min = n : (0);
n > rs->max ? rs->max = n : (0);
if (rs->count == 1)
{
g_rs.avg = n;
g_rs.m = 0;
rs->avg = n;
rs->m = 0;
}
else
{
delta = n - g_rs.avg;
g_rs.avg += delta / g_rs.count;
g_rs.m += delta * (n - g_rs.avg);
delta = n - rs->avg;
rs->avg += delta / rs->count;
rs->m += delta * (n - rs->avg);
}
}
void rs_calcmore(void)
void rs_final(t_rs *rs)
{
if (g_rs.count == 0)
if (rs->count == 0)
{
g_rs.min = 0;
g_rs.max = 0;
rs->min = 0;
rs->max = 0;
}
if (g_rs.count < 2)
if (rs->count < 2)
{
g_rs.var = 0;
g_rs.stdev = 0;
rs->var = 0;
rs->stdev = 0;
return ;
}
g_rs.var = g_rs.m / (g_rs.count - 1);
g_rs.stdev = sqrt(g_rs.var);
rs->var = rs->m / (rs->count - 1);
rs->stdev = sqrt(rs->var);
}