Ticket #7322: ParTest0.hs

File ParTest0.hs, 517 bytes (added by ydewit, 2 years ago)
Line 
1import Control.Parallel.Strategies
2
3main = print $ run
4       
5run = runEval $ do
6       r1 <- rpar (maxC lo (m - 1)) 
7       r2 <- rpar (maxC m hi)       
8       return (max r1 r2)
9  where
10         m = (lo + hi) `div` 2
11         lo = 1
12         hi = 100000
13         
14collatz :: Integer -> Int
15collatz 0      =  0
16collatz 1      =  0
17collatz n
18  | even n     =  1 + collatz (n `div` 2)
19  | otherwise  =  1 + collatz (3 * n + 1)
20
21maxC :: Int -> Int -> Int
22maxC lo hi = maximum (map (collatz . fromIntegral) [lo..hi])