[Haskell-cafe] Vedr: To my boss: The code is cool, but it is about 100 times slower than the old one...
Daniel Fischer
daniel.is.fischer at googlemail.com
Thu Nov 29 23:07:56 CET 2012
On Donnerstag, 29. November 2012, 13:40:42, Johan Tibell wrote:
>
> word2Double :: Word -> Double
> word2Double (W# w) = D# (int2Double# (word2Int# w))
>
> On my (64-bit) machine the Haskell and C versions are on par.
On my box, the Haskell is even faster then, but, as said, the result is
incorrect
With
correction :: Double
correction = 2 * int2Double minBound
word2Double :: Word -> Double
word2Double w = case fromIntegral w of
i | i < 0 -> int2Double i - correction
| otherwise -> int2Double i
I get
real 0m0.078s
user 0m0.077s
sys 0m0.001s
with correct results.
Okay, we **need** a better Word -> Double etc. conversion. We could start with
the above, that seems not too shabby.
More information about the Haskell-Cafe
mailing list