The basic problem was that for gases containing more than 2147483648 ml
of nitrogen the calculations overflowed. This changes the code into
using floating point math for that calculation which will be more
accurate to.

Signed-off-by: Anton Lundin <gla...@acc.umu.se>
---
 statistics.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/statistics.c b/statistics.c
index 17667f8..f6c9202 100644
--- a/statistics.c
+++ b/statistics.c
@@ -342,8 +342,8 @@ static void get_gas_parts(struct gasmix mix, volume_t vol, 
int o2_in_topup, volu
                return;
        }
 
-       air.mliter = (vol.mliter * (1000 - get_he(&mix) - get_o2(&mix))) / 
(1000 - o2_in_topup);
-       he->mliter = (vol.mliter * get_he(&mix)) / 1000;
+       air.mliter = (vol.mliter * (1000.0 - get_he(&mix) - get_o2(&mix))) / 
(1000.0 - o2_in_topup);
+       he->mliter = (vol.mliter * get_he(&mix)) / 1000.0;
        o2->mliter += vol.mliter - he->mliter - air.mliter;
 }
 
-- 
1.9.1

_______________________________________________
subsurface mailing list
subsurface@subsurface-divelog.org
http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface

Reply via email to