From d753805542cf15a35000ca3b952c719a3470d388 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Sun, 24 Feb 2013 15:33:37 -0800 Subject: 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 Signed-off-by: Dirk Hohndel --- dive.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dive.h b/dive.h index 1ad5a9599..727f03033 100644 --- a/dive.h +++ b/dive.h @@ -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) -- cgit v1.2.3-70-g09d2