[Haskell-cafe] rounding errors with real numbers.

Brian Hulley brianh at metamilk.com
Sun Feb 26 12:06:11 EST 2006


Matthias Fischmann wrote:
>|     -- fix rounding error:
>|     repair [i] = [upper]
>|     repair (h:t) = h : repair t

Just to point out that this only fixes the last element of the list, so 
inputs like [1,2,10.8,10.8] would not be handled properly if you require the 
same input values to map to the same output values (I assume such inputs 
don't arise in the context you're using but in a general context the above 
wouldn't be a solution).

Another thing is that when using floating point numbers, is there really any 
difference between 1.0 and 0.9999999 anyway? It's usually not recommended to 
ever test floats for equality since, depending on the architecture, the 
"same" float can end up being represented differently depending on what 
optimizations are happening eg an implementation could conceivably be making 
use of two different fp units if values are passed between different 
concurrently executing threads in a multi-processor or distributed 
processing environment...

Regards, Brian. 



More information about the Haskell-Cafe mailing list