[Bug 873385] New: Random module fails on Doubles because of odd minBound behaviour

bugzilla at redhat.com bugzilla at redhat.com
Mon Nov 5 17:31:23 UTC 2012


https://bugzilla.redhat.com/show_bug.cgi?id=873385

            Bug ID: 873385
        QA Contact: extras-qa at fedoraproject.org
          Severity: unspecified
           Version: 17
          Priority: unspecified
                CC: haskell-devel at lists.fedoraproject.org,
                    petersen at redhat.com
          Assignee: petersen at redhat.com
           Summary: Random module fails on Doubles because of odd minBound
                    behaviour
        Regression: ---
      Story Points: ---
    Classification: Fedora
                OS: Unspecified
          Reporter: imc at cs.ox.ac.uk
              Type: Bug
     Documentation: ---
          Hardware: Unspecified
        Mount Type: ---
            Status: NEW
         Component: hugs98
           Product: Fedora

I'm not sure how live this project is any more, but here goes...

$ rpm -q hugs98
hugs98-2006.09-11.fc17.x86_64

$ hugs
Type :? for help
Hugs> :load Random 
Random> randomR (1::Double,10) (mkStdGen 3)
(
Program error: arithmetic overflow

The equivalent answer in ghci is:
(1.928919588914141,2109513658 1655838864)

This seems to happen because:

Random> minBound::Int
-2147483648
Random> toInteger (minBound::Int)
-18446744071562067968
Random> toInteger (maxBound::Int)
2147483647

The implementation of Random on Doubles uses the construction
"toInteger (minBound::Int)" to get an integer random number, but
the implementation of Random on integers falls over on values
greater than 2^32-1.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the haskell-devel mailing list