Ticket #6121 (closed bug: fixed)
Very poor constant folding
|Reported by:||augustss||Owned by:||igloo|
|Type of failure:||Runtime performance bug||Difficulty:||Unknown|
|Test Case:||lib/integer/integerConstantFolding||Blocked By:|
GHC seems to lack constant folding for encodeFloat/decodeFloat. For many examples, compile the numeric-limits package on hackage, or just this snippet:
epsilon :: Double epsilon = r where r = 1 - encodeFloat (m-1) e (m, e) = decodeFloat (1 `asTypeOf` r)
This has a very simple value, but GHC refuses to compute it at compile time. This in turn inhibits other constant folding that should be going on.