http://d.puremagic.com/issues/show_bug.cgi?id=3751
--- Comment #7 from Witold Baryluk <bary...@smp.if.uj.edu.pl> 2010-01-29 05:50:47 PST --- (In reply to comment #5) > > I think this is exactly the problem. You are using floating point expecting > that all floats are created equal. > > One rule about floating point is never to build an infinite loop waiting for > two floats to converge using ==. You must use an epsilon if you expect any > reasonable result. I know this. > > Your exit condition is this: > > if (left == half || right == half) > > What about trying this: > > if(half - left < SOME_EPSILON || right - half < SOME_EPSILON) > > where SOME_EPSILON is a very small insignificant number, like 0.000001 > > floating point convergence is an art form, you need to understand its > limitations. Yes I know, but I was relaying of IEEE 754 semantic, in which my code should work (there will be point in execuion when left == half or right == half exactly!). I was just trying to write this routine to be slightly faster just by not using EPSILONS and substractions. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------