At 08:08 +0200 2002/09/30, Thorsten Stocksmeier wrote: >Main> floor (logBase 2 (fromInteger 32768)) -- should be == floor 15.0 >> > 14 >> >>Rounding error I suspect. >> >>Prelude> logBase 2 (fromInteger 32768) - 15.0 >>-9.53674e-07 > >Okay, but is that my fault or hugs'?
Any code that treats floating point numbers as though they are exact numbers is faulty. >Independent of that: Is there a workaround? Before logBase >I used log n / log 2 as a simulation of logBase 2. Still have >to find out whether this solves the problem. (well maybe >logBase *is* in fact log/log - must stick my nose into the >prelude this afternoon) If you need to compare floating point numbers x, y, introduce a small epsilon > 0, and write abs(x - y) < epsilon instead of x == y. If you need them to be exact integers, make a roundoff. Etc. Hans Aberg _______________________________________________ Hugs-Bugs mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/hugs-bugs
