From 1f016988b2aaf55b6a4e8868bea1bd1c4259195b Mon Sep 17 00:00:00 2001 From: Alan Mishchenko Date: Wed, 12 Dec 2018 22:15:10 -0800 Subject: Fixing float overflow during edge-flow computation in 'if' mapper (change to avoid dependence on the order of additions). --- src/map/if/ifCut.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/map/if') diff --git a/src/map/if/ifCut.c b/src/map/if/ifCut.c index 9d884e75..52603671 100644 --- a/src/map/if/ifCut.c +++ b/src/map/if/ifCut.c @@ -934,7 +934,11 @@ float If_CutAreaFlow( If_Man_t * p, If_Cut_t * pCut ) if ( Flow >= (float)1e32 || AddOn >= (float)1e32 ) Flow = (float)1e32; else + { Flow += AddOn; + if ( Flow > (float)1e32 ) + Flow = (float)1e32; + } } return Flow; } @@ -968,7 +972,11 @@ float If_CutEdgeFlow( If_Man_t * p, If_Cut_t * pCut ) if ( Flow >= (float)1e32 || AddOn >= (float)1e32 ) Flow = (float)1e32; else + { Flow += AddOn; + if ( Flow > (float)1e32 ) + Flow = (float)1e32; + } } return Flow; } -- cgit v1.2.3