Fix cylinder air size calculations

Commit 90d3c5614a ("Centralising and redefining values as integers")
broke SAC-rate calculations. In particular, it changed "to_ATM()": to
use the centralized SURFACE_PRESSURE helper define, but in the process
it changed a floating point calculation to an integer calculation, and
it threw away all the fractional details. Any user of "to_ATM()"
basically dropped to an accuracy of a single atmosphere.

The good news is that we didn't use to_ATM() for things like depth
calculations, but only for cylinder pressures. As a result, the error
ends up being relatively small, since the pressures involved are big,
and thus the error of rounding to whole atmospheres is usually in the
1% range. The cylinder sizing tends to be off by more than that
anyway. But it was wrong, and not intentional.

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-24 15:33:37 -08:00 committed by Dirk Hohndel
parent 7b20fb826c
commit d753805542

2
dive.h
View file

@ -205,7 +205,7 @@ static inline double bar_to_atm(double bar)
static inline double to_ATM(pressure_t pressure)
{
return pressure.mbar / SURFACE_PRESSURE;
return pressure.mbar / (double) SURFACE_PRESSURE;
}
static inline int mbar_to_PSI(int mbar)