diff options
Diffstat (limited to 'tc/tc_estimator.c')
-rw-r--r-- | tc/tc_estimator.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/tc/tc_estimator.c b/tc/tc_estimator.c index e559add1..c40eea96 100644 --- a/tc/tc_estimator.c +++ b/tc/tc_estimator.c @@ -23,22 +23,23 @@ #include "tc_core.h" -int tc_setup_estimator(unsigned A, unsigned time_const, struct tc_estimator *est) +int tc_setup_estimator(unsigned int A, unsigned int time_const, struct tc_estimator *est) { - for (est->interval=0; est->interval<=5; est->interval++) { + for (est->interval = 0; est->interval <= 5; est->interval++) { if (A <= (1<<est->interval)*(TIME_UNITS_PER_SEC/4)) break; } if (est->interval > 5) return -1; est->interval -= 2; - for (est->ewma_log=1; est->ewma_log<32; est->ewma_log++) { + for (est->ewma_log = 1; est->ewma_log < 32; est->ewma_log++) { double w = 1.0 - 1.0/(1<<est->ewma_log); + if (A/(-log(w)) > time_const) break; } est->ewma_log--; - if (est->ewma_log==0 || est->ewma_log >= 31) + if (est->ewma_log == 0 || est->ewma_log >= 31) return -1; return 0; } |