
On Thu, Nov 29, 2012 at 2:02 PM, Johan Tibell
On Thu, Nov 29, 2012 at 2:01 PM, Daniel Fischer
wrote: 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.
Yes, but the result is very different.
Doh, I guess I didn't look at the output carefully enough.
One obvious error is that the C code has one loop go from 1..n where I just naively assumed all loops go from 0..n-1. This fixes that: outer i | i <= VNUM = inner (fromIntegral i) 0 >> outer (i + 1) | otherwise = return () outer (1 :: Int) Perhaps the other issue is that word2Double (W# w) = D# (int2Double# (word2Int# w)) is possibly the wrong way and we need a word2Double#. -- Johan