Restore exact old semantics of `decodeFloat`

Authored by hvr on Nov 19 2014, 4:09 AM.

Description

Restore exact old semantics of decodeFloat

integer-gmp2 uses the new 64bit-based IEEE deconstructing primop
introduced in b62bd5ecf3be421778e4835010b6b334e95c5a56.

However, the returned values differ for exceptional IEEE values:

Previous (expected) semantics:

> decodeFloat (-1/0)
(-4503599627370496,972)

> decodeFloat (1/0)
(4503599627370496,972)

> decodeFloat (0/0)
(-6755399441055744,972)

Currently (broken) semantics:

> decodeFloat (-1/0 :: Double)
(-9223372036854775808,-53)

> decodeFloat (1/0 :: Double)
(-9223372036854775808,-53)

> decodeFloat (0/0 :: Double)
(-9223372036854775808,-53)

This patch reverts to the old expected semantics.

I plan to revisit the implementation during GHC 7.11 development.

This should address Trac #9810

Reviewed By: austin, ekmett, luite

Differential Revision: https://phabricator.haskell.org/D486

Details

Committed
hvrNov 19 2014, 4:37 AM
Pushed
bgamariAug 25 2016, 1:39 PM
Reviewer
austin
Differential Revision
D486: Restore exact old semantics of `decodeFloat`
Parents
rGHCDIFF42244668af6d: Reimplement im/export primitives for integer-gmp2
Branches
Unknown
Tags
Unknown