Pseudo-random number generator in `foundation` test is insufficient for testing 64bit cases.
## Summary
It seems the random number generator used in the test currently only returns 31 bit numbers.
This means certain edge cases involving 64bit values, especially on 32bit platforms, will go untested.
This is because we sample numbers using this action:
```
atomicModifyIORef' var (\old_v -> let new_val = (old_v * a + c) `mod` m in (new_val, new_val))
```
However `m` is set to `m = 2^31` in the parameters.
## Steps to reproduce
Modify foundation.hs to export all bindings, then:
```haskell
ghc testsuite/tests/numeric/should_run/foundation.hs --interactive
import Control.Monad
gen <- newLCGGen (LCGParams { seed = 1238123213, m = 2^31, a = 1103515245, c = 12345 })
replicateM_ 100 (print =<< randomWord64 gen)
```
## Expected behavior
I would expect there to be a *somewhat* even distribution in the sampling.
## Environment
* GHC version used:
Optional:
* Operating System:
* System Architecture:
issue