diff --git a/src/rrd_hw.c b/src/rrd_hw.c
index 98333e2794e356dcff31bf3d882006b3988c14db..af224fd016717fbc6924cb6088caf671d41a9db6 100644 (file)
--- a/src/rrd_hw.c
+++ b/src/rrd_hw.c
/*****************************************************************************
- * RRDtool 1.2.99907080300 Copyright by Tobi Oetiker, 1997-2007
+ * RRDtool 1.3.2 Copyright by Tobi Oetiker, 1997-2008
*****************************************************************************
* rrd_hw.c : Support for Holt-Winters Smoothing/ Aberrant Behavior Detection
*****************************************************************************
* Initial version by Jake Brutlag, WebTV Networks, 5/1/00
*****************************************************************************/
+#include <stdlib.h>
+
#include "rrd_tool.h"
#include "rrd_hw.h"
#include "rrd_hw_math.h"
rrd_value_t *working_average;
rrd_value_t *baseline;
- offset = floor(0.025 * row_count);
+ if (atoi(rrd->stat_head->version) >= 4) {
+ offset = floor(rrd->rra_def[rra_idx].
+ par[RRA_seasonal_smoothing_window].
+ u_val / 2 * row_count);
+ } else {
+ offset = floor(0.05 / 2 * row_count);
+ }
+
if (offset == 0)
return 0; /* no smoothing */
free(rrd_values);
return -1;
}
- rrd_flush(rrd_file);
+
/* could read all data in a single block, but we need to
* check for NA values */
for (i = 0; i < row_count; ++i) {
baseline[j];
}
/* flush cdp to disk */
- rrd_flush(rrd_file);
if (rrd_seek(rrd_file, sizeof(stat_head_t) +
rrd->stat_head->ds_cnt * sizeof(ds_def_t) +
rrd->stat_head->rra_cnt * sizeof(rra_def_t) +
/* endif CF_SEASONAL */
/* flush updated values to disk */
- rrd_flush(rrd_file);
if (rrd_seek(rrd_file, rra_start, SEEK_SET)) {
rrd_set_error("apply_smoother: seek to pos %d failed", rra_start);
free(rrd_values);
return -1;
}
- rrd_flush(rrd_file);
free(rrd_values);
free(baseline);
return 0;
hw_multiplicative_init_seasonality,
hw_calculate_seasonal_deviation,
hw_init_seasonal_deviation,
- 1.0 // identity value
+ 1.0 /* identity value */
};
static hw_functions_t hw_additive_functions = {
hw_additive_init_seasonality,
hw_calculate_seasonal_deviation,
hw_init_seasonal_deviation,
- 0.0 // identity value
+ 0.0 /* identity value */
};
rrd->cdp_prep[cdp_idx].scratch[CDP_scratch_idx].u_val = pdp_val;