aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/include/ndpi_api.h9
-rw-r--r--src/lib/ndpi_analyze.c27
2 files changed, 33 insertions, 3 deletions
diff --git a/src/include/ndpi_api.h b/src/include/ndpi_api.h
index d3b02a4d5..2edcd69ad 100644
--- a/src/include/ndpi_api.h
+++ b/src/include/ndpi_api.h
@@ -1714,13 +1714,15 @@ extern "C" {
double alpha, double beta, double gamma, float significance);
void ndpi_hw_free(struct ndpi_hw_struct *hw);
int ndpi_hw_add_value(struct ndpi_hw_struct *hw, const u_int64_t value, double *forecast, double *confidence_band);
-
+ void ndpi_hw_reset(struct ndpi_hw_struct *hw);
+
/* ******************************* */
int ndpi_ses_init(struct ndpi_ses_struct *ses, double alpha, float significance);
int ndpi_ses_add_value(struct ndpi_ses_struct *ses, const double _value, double *forecast, double *confidence_band);
void ndpi_ses_fitting(double *values, u_int32_t num_values, float *ret_alpha);
-
+ void ndpi_ses_reset(struct ndpi_ses_struct *ses);
+
/* ******************************* */
u_int32_t ndpi_crc32(const void* data, size_t n_bytes);
@@ -1730,7 +1732,8 @@ extern "C" {
int ndpi_des_init(struct ndpi_des_struct *des, double alpha, double beta, float significance);
int ndpi_des_add_value(struct ndpi_des_struct *des, const double _value, double *forecast, double *confidence_band);
void ndpi_des_fitting(double *values, u_int32_t num_values, float *ret_alpha, float *ret_beta);
-
+ void ndpi_des_reset(struct ndpi_des_struct *des);
+
/* ******************************* */
int ndpi_jitter_init(struct ndpi_jitter_struct *hw, u_int16_t num_periods);
diff --git a/src/lib/ndpi_analyze.c b/src/lib/ndpi_analyze.c
index 5eb2c1bea..178097b9f 100644
--- a/src/lib/ndpi_analyze.c
+++ b/src/lib/ndpi_analyze.c
@@ -1206,6 +1206,17 @@ int ndpi_hw_add_value(struct ndpi_hw_struct *hw, const u_int64_t _value, double
}
}
+/* *********************************************************** */
+
+void ndpi_hw_reset(struct ndpi_hw_struct *hw) {
+ hw->prev_error.sum_square_error = 0, hw->prev_error.num_values_rollup = 0;
+ hw->num_values = 0;
+ hw->u = hw->v = hw->sum_square_error = 0;
+
+ memset(&hw->y, 0, (hw->params.num_season_periods * sizeof(u_int64_t)));
+ memset(&hw->s, 0, (hw->params.num_season_periods * sizeof(double)));
+}
+
/* ********************************************************************************* */
/* ********************************************************************************* */
@@ -1348,6 +1359,14 @@ int ndpi_ses_add_value(struct ndpi_ses_struct *ses, const double _value, double
/* *********************************************************** */
+void ndpi_ses_reset(struct ndpi_ses_struct *ses) {
+ ses->prev_error.sum_square_error = 0, ses->prev_error.num_values_rollup = 0;
+ ses->num_values = 0;
+ ses->sum_square_error = ses->last_forecast = ses->last_value = 0;
+}
+
+/* *********************************************************** */
+
/*
Computes the best alpha value using the specified values used for training
*/
@@ -1430,6 +1449,14 @@ int ndpi_des_init(struct ndpi_des_struct *des, double alpha, double beta, float
/* *********************************************************** */
+void ndpi_des_reset(struct ndpi_des_struct *des) {
+ des->prev_error.sum_square_error = 0, des->prev_error.num_values_rollup = 0;
+ des->num_values = 0;
+ des->sum_square_error = des->last_forecast = des->last_trend = des->last_value = 0;
+}
+
+/* *********************************************************** */
+
/*
Returns the forecast and the band (forecast +/- band are the upper and lower values)