diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-24 15:33:37 -0800 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2013-02-24 15:45:59 -0800 |
commit | d753805542cf15a35000ca3b952c719a3470d388 (patch) | |
tree | ef81564c114ed6653b79fb5ccaebc8a9095963d6 | |
parent | 7b20fb826c9f7ff2ad9d26526e6457a5b5d9b9d5 (diff) | |
download | subsurface-d753805542cf15a35000ca3b952c719a3470d388.tar.gz |
Fix cylinder air size calculations
Commit 90d3c5614a9c ("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>
-rw-r--r-- | dive.h | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -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) |