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 <unistd.h>
|
||||
# include <stdio.h>
|
||||
# include <stdint.h>
|
||||
# include <stdlib.h>
|
||||
# include <time.h>
|
||||
|
||||
|
|
|
|||
|
|
@ -17,18 +17,20 @@
|
|||
# include <dlfcn.h>
|
||||
# include <math.h>
|
||||
|
||||
extern struct s_stats {
|
||||
int count;
|
||||
double min;
|
||||
double max;
|
||||
double avg;
|
||||
double m;
|
||||
double stdev;
|
||||
double var;
|
||||
} g_rs;
|
||||
typedef struct s_rs t_rs;
|
||||
|
||||
void rs_clear();
|
||||
void rs_push(double n);
|
||||
void rs_calcmore();
|
||||
struct s_rs {
|
||||
int count;
|
||||
double min;
|
||||
double max;
|
||||
double avg;
|
||||
double m;
|
||||
double stdev;
|
||||
double var;
|
||||
};
|
||||
|
||||
void rs_init(t_rs *rs);
|
||||
void rs_push(t_rs *rs, double n);
|
||||
void rs_final(t_rs *rs);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue