From a926031dd0b997772300353edd6dde3f9080d540 Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Mon, 13 Nov 2017 16:21:48 +0100 Subject: [PATCH] new rs --- libft/includes/libft.h | 1 + libft/includes/rs.h | 26 +++++++++++----------- libft/srcs/rs/rs.c | 49 +++++++++++++++++++++--------------------- 3 files changed, 39 insertions(+), 37 deletions(-) diff --git a/libft/includes/libft.h b/libft/includes/libft.h index 47becf5c..30bc5d56 100644 --- a/libft/includes/libft.h +++ b/libft/includes/libft.h @@ -19,6 +19,7 @@ # include # include # include +# include # include # include diff --git a/libft/includes/rs.h b/libft/includes/rs.h index 279ba4e8..0296bbdb 100644 --- a/libft/includes/rs.h +++ b/libft/includes/rs.h @@ -17,18 +17,20 @@ # include # include -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 diff --git a/libft/srcs/rs/rs.c b/libft/srcs/rs/rs.c index 7e83bdff..55f46992 100644 --- a/libft/srcs/rs/rs.c +++ b/libft/srcs/rs/rs.c @@ -13,50 +13,49 @@ #include "libft.h" #include -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); }