Simplify/clarify the get_surface_pressure_in_mbar() function

Instead of maintaining a rolling average and re-calculating it at each
stage, just calculate the surface_pressure average the natural way: as
the sum divided by the number of entries.

This results in a single rounding, rather than doing rounding multiple
times and possibly rounding wrong as a result.

Not that we care all that deeply about the LSB of the mbar value, but
the code is simpler and more obvious this way too.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Linus Torvalds 2013-02-09 10:23:15 +11:00 committed by Dirk Hohndel
parent ff969cd5c8
commit b286ea638c
2 changed files with 19 additions and 13 deletions

View file

@ -539,7 +539,7 @@ static void show_single_dive_stats(struct dive *dive)
double value;
int decimals;
const char *unit;
int idx, offset, gas_used;
int idx, offset, gas_used, mbar;
struct dive *prev_dive;
struct tm tm;
@ -579,8 +579,9 @@ static void show_single_dive_stats(struct dive *dive)
} else {
set_label(single_w.air_temp, "");
}
if (get_surface_pressure_in_mbar(dive, FALSE)) {
set_label(single_w.air_press, "%d mbar", dive->dc.surface_pressure.mbar);
mbar = get_surface_pressure_in_mbar(dive, FALSE);
if (mbar) {
set_label(single_w.air_press, "%d mbar", mbar);
} else {
set_label(single_w.air_press, _("unknown"));
}