From 9dcc45d90b09d75d053ebb2d4e33a71a9fb2d069 Mon Sep 17 00:00:00 2001 From: Jaron Kent-Dobias Date: Tue, 27 Mar 2018 16:12:20 -0400 Subject: some optimizations --- lib/measurement.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'lib/measurement.c') diff --git a/lib/measurement.c b/lib/measurement.c index 435c749..ad824f6 100644 --- a/lib/measurement.c +++ b/lib/measurement.c @@ -2,10 +2,10 @@ #include "measurement.h" double add_to_avg(double mx, double x, count_t n) { - return mx * (n / (n + 1.0)) + x * 1.0 / (n + 1.0); + return mx * (n / (n + 1.0)) + x / (n + 1.0); } -void update_meas(meas_t *m, double x) { +void meas_update(meas_t *m, double x) { count_t n = m->n; m->x = add_to_avg(m->x, x, n); @@ -14,16 +14,30 @@ void update_meas(meas_t *m, double x) { m->m2 = add_to_avg(m->m2, pow(x - m->x, 2), n); m->m4 = add_to_avg(m->m4, pow(x - m->x, 4), n); + /* if (n > 1) { double s2 = n / (n - 1.) * (m->x2 - pow(m->x, 2)); m->dx = sqrt(s2 / n); m->c = s2; m->dc = sqrt((m->m4 - (n - 3.)/(n - 1.) * pow(m->m2, 2)) / n); } + */ (m->n)++; } +double meas_dx(const meas_t *m) { + return sqrt(1. / (m->n - 1.) * (m->x2 - pow(m->x, 2))); +} + +double meas_c(const meas_t *m) { + return m->n / (m->n - 1.) * (m->x2 - pow(m->x, 2)); +} + +double meas_dc(const meas_t *m) { + return sqrt((m->m4 - (m->n - 3.)/(m->n - 1.) * pow(m->m2, 2)) / m->n); +} + void update_autocorr(autocorr_t *OO, double O) { OO->O = add_to_avg(OO->O, O, OO->n); OO->O2 = add_to_avg(OO->O2, pow(O, 2), OO->n); @@ -56,7 +70,7 @@ void update_autocorr(autocorr_t *OO, double O) { OO->n++; } -double rho(autocorr_t *o, count_t i) { +double rho(const autocorr_t *o, count_t i) { return (o->OO[i] - pow(o->O, 2)) / (o->O2 - pow(o->O, 2)); } -- cgit v1.2.3-70-g09d2