master
h 38 lines 1.85 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 #ifndef NETDATA_STATISTICAL_H
4 #define NETDATA_STATISTICAL_H 1
5
6 #include "../libnetdata.h"
7
8 void log_series_to_stderr(NETDATA_DOUBLE *series, size_t entries, NETDATA_DOUBLE result, const char *msg);
9
10 NETDATA_DOUBLE average(const NETDATA_DOUBLE *series, size_t entries);
11 NETDATA_DOUBLE moving_average(const NETDATA_DOUBLE *series, size_t entries, size_t period);
12 NETDATA_DOUBLE median(const NETDATA_DOUBLE *series, size_t entries);
13 NETDATA_DOUBLE moving_median(const NETDATA_DOUBLE *series, size_t entries, size_t period);
14 NETDATA_DOUBLE running_median_estimate(const NETDATA_DOUBLE *series, size_t entries);
15 NETDATA_DOUBLE standard_deviation(const NETDATA_DOUBLE *series, size_t entries);
16 NETDATA_DOUBLE single_exponential_smoothing(const NETDATA_DOUBLE *series, size_t entries, NETDATA_DOUBLE alpha);
17 extern NETDATA_DOUBLE
18 single_exponential_smoothing_reverse(const NETDATA_DOUBLE *series, size_t entries, NETDATA_DOUBLE alpha);
19 NETDATA_DOUBLE double_exponential_smoothing(const NETDATA_DOUBLE *series, size_t entries,
20 NETDATA_DOUBLE alpha,
21 NETDATA_DOUBLE beta,
22 NETDATA_DOUBLE *forecast);
23 NETDATA_DOUBLE holtwinters(const NETDATA_DOUBLE *series, size_t entries,
24 NETDATA_DOUBLE alpha,
25 NETDATA_DOUBLE beta,
26 NETDATA_DOUBLE gamma,
27 NETDATA_DOUBLE *forecast);
28 NETDATA_DOUBLE sum_and_count(const NETDATA_DOUBLE *series, size_t entries, size_t *count);
29 NETDATA_DOUBLE sum(const NETDATA_DOUBLE *series, size_t entries);
30 NETDATA_DOUBLE median_on_sorted_series(const NETDATA_DOUBLE *series, size_t entries);
31 NETDATA_DOUBLE percentile_on_sorted_series(const NETDATA_DOUBLE *series, size_t entries, double percentile);
32 NETDATA_DOUBLE *copy_series(const NETDATA_DOUBLE *series, size_t entries);
33 void sort_series(NETDATA_DOUBLE *series, size_t entries);
34
35 // unit tests
36 int statistical_unittest(void);
37
38 #endif //NETDATA_STATISTICAL_H