Public feed
#529391
instance Readable Double where
readItem = {-# SCC "readItem::Double" #-}
do W64# x# <- readItem :: Reader m => m Word64
return (D# (unsafeCoerce# x#))
{-
do x <- readItem :: Reader m => m Word32
y <- readItem :: Reader m => m Word32
let negative = testBit x 31
let exp = fromIntegral (x `shiftR` 20 .&. 2047) :: Int
let xmant = fromIntegral (x .&. (2^20 - 1)) :: Integer
let mant = (xmant `shiftL` 32) .|. fromIntegral y
let num = case exp of
2047 -> case mant of
0 -> 1.0 / 0.0
_ -> 0.0 / 0.0
0 -> encodeFloat mant (-1022 - 52)
_ -> encodeFloat (mant `setBit` 52)
(exp - 1023 - 52)
return (if negative then -num else num)
-}