encodeFloat 1 2047 = -1024.0
When the following code is compiled with optimization, it prints -1024.0, without optimization the result is Infinity.
main = print ((encodeFloat 1 2047) :: Double)
I think this might be caused by changes in decoding doubles in integer-gmp2. While decodeFloat is lossy, since we can not represent exceptional values, encodeFloat should never give a different answer here.
Also cgrun044 now gives a different result when compiled with optimization. It was broken anyway, since it claims some values are NaN, while actually Infinity is printed (also with 7.8), but it used to give the same answer regardless of optimization with GHC 7.8
Trac metadata
| Trac field | Value |
|---|---|
| Version | 7.9 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |