Repository : ssh://darcs.haskell.org//srv/darcs/packages/random

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/d37c1bf1b273cbc5a91b879f497a878d83439c0b

>---------------------------------------------------------------

commit d37c1bf1b273cbc5a91b879f497a878d83439c0b
Author: Ryan Newton <[email protected]>
Date:   Sat Jun 25 23:54:36 2011 -0400

    Small tweaks to fix Integer-defaulting warnings.

>---------------------------------------------------------------

 System/Random.hs |   17 +++++++++++++----
 1 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/System/Random.hs b/System/Random.hs
index d98f467..f8a7dd7 100644
--- a/System/Random.hs
+++ b/System/Random.hs
@@ -345,7 +345,6 @@ instance Random Double where
   randomR ival g = randomIvalDouble ival id g
   random g       = randomR (0::Double,1) g
   
--- hah, so you thought you were saving cycles by using Float?
 instance Random Float where
   randomR = randomIvalFrac
   random rng = 
@@ -353,12 +352,22 @@ instance Random Float where
       (x,rng') -> 
          let 
             -- We use 24 bits of randomness corresponding to the 24 bit 
significand:
-            rand = fromIntegral (mask24 .&. x) :: Float
+            rand = fromIntegral (mask24 .&. x) 
+                  :: Float
         in 
-         (rand / 2^24, rng')
+--         (rand / 2^24, rng')
+         (rand / fromIntegral twoto24, rng')
+        -- Note, encodeFloat is another option, but I'm not seeing slightly
+        --  worse performance with the following [2011.06.25]:
+--         (encodeFloat rand (-24), rng')
    where
      mask24 :: Int 
-     mask24 = 2^24 - 1
+--     mask24 = 2^24 - 1
+
+     mask24 = twoto24 - 1
+     -- RRN: Note, in my tests [2011.06.25] this worked as well as using 
Data.Bit:
+     twoto24 = (2::Int) ^ (24::Int)
+
 
 instance Random CFloat where
   randomR = randomIvalFrac



_______________________________________________
Cvs-libraries mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-libraries

Reply via email to