new rs
This commit is contained in:
parent
80837f0428
commit
a926031dd0
3 changed files with 39 additions and 37 deletions
|
|
@ -19,6 +19,7 @@
|
||||||
# include <errno.h>
|
# include <errno.h>
|
||||||
# include <unistd.h>
|
# include <unistd.h>
|
||||||
# include <stdio.h>
|
# include <stdio.h>
|
||||||
|
# include <stdint.h>
|
||||||
# include <stdlib.h>
|
# include <stdlib.h>
|
||||||
# include <time.h>
|
# include <time.h>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,9 @@
|
||||||
# include <dlfcn.h>
|
# include <dlfcn.h>
|
||||||
# include <math.h>
|
# include <math.h>
|
||||||
|
|
||||||
extern struct s_stats {
|
typedef struct s_rs t_rs;
|
||||||
|
|
||||||
|
struct s_rs {
|
||||||
int count;
|
int count;
|
||||||
double min;
|
double min;
|
||||||
double max;
|
double max;
|
||||||
|
|
@ -25,10 +27,10 @@ extern struct s_stats {
|
||||||
double m;
|
double m;
|
||||||
double stdev;
|
double stdev;
|
||||||
double var;
|
double var;
|
||||||
} g_rs;
|
};
|
||||||
|
|
||||||
void rs_clear();
|
void rs_init(t_rs *rs);
|
||||||
void rs_push(double n);
|
void rs_push(t_rs *rs, double n);
|
||||||
void rs_calcmore();
|
void rs_final(t_rs *rs);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -13,50 +13,49 @@
|
||||||
#include "libft.h"
|
#include "libft.h"
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
struct s_stats g_rs = {0, 0, 0, 0, 0, 0, 0};
|
|
||||||
|
|
||||||
double sqrt(double x);
|
double sqrt(double x);
|
||||||
|
|
||||||
void rs_clear(void)
|
void rs_init(t_rs *rs)
|
||||||
{
|
{
|
||||||
g_rs.count = 0;
|
bzero(rs, sizeof(t_rs));
|
||||||
g_rs.min = DBL_MAX;
|
rs->count = 0;
|
||||||
g_rs.max = -DBL_MAX;
|
rs->min = DBL_MAX;
|
||||||
|
rs->max = -DBL_MAX;
|
||||||
}
|
}
|
||||||
|
|
||||||
void rs_push(double n)
|
void rs_push(t_rs *rs, double n)
|
||||||
{
|
{
|
||||||
double delta;
|
double delta;
|
||||||
|
|
||||||
g_rs.count++;
|
rs->count++;
|
||||||
n < g_rs.min ? g_rs.min = n : (0);
|
n < rs->min ? rs->min = n : (0);
|
||||||
n > g_rs.max ? g_rs.max = n : (0);
|
n > rs->max ? rs->max = n : (0);
|
||||||
if (g_rs.count == 1)
|
if (rs->count == 1)
|
||||||
{
|
{
|
||||||
g_rs.avg = n;
|
rs->avg = n;
|
||||||
g_rs.m = 0;
|
rs->m = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
delta = n - g_rs.avg;
|
delta = n - rs->avg;
|
||||||
g_rs.avg += delta / g_rs.count;
|
rs->avg += delta / rs->count;
|
||||||
g_rs.m += delta * (n - g_rs.avg);
|
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;
|
rs->min = 0;
|
||||||
g_rs.max = 0;
|
rs->max = 0;
|
||||||
}
|
}
|
||||||
if (g_rs.count < 2)
|
if (rs->count < 2)
|
||||||
{
|
{
|
||||||
g_rs.var = 0;
|
rs->var = 0;
|
||||||
g_rs.stdev = 0;
|
rs->stdev = 0;
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
g_rs.var = g_rs.m / (g_rs.count - 1);
|
rs->var = rs->m / (rs->count - 1);
|
||||||
g_rs.stdev = sqrt(g_rs.var);
|
rs->stdev = sqrt(rs->var);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue