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