Browse Source

Added parallelism to sum calculation

Josh Bicking 6 years ago
parent
commit
710a60a69f
2 changed files with 10 additions and 2 deletions
  1. 9 2
      app/Main.hs
  2. 1 0
      pi-digits.cabal

+ 9 - 2
app/Main.hs

@@ -6,13 +6,20 @@ import Text.Read (readMaybe)
 import System.IO (hFlush, stdout)
 import System.Environment (getArgs)
 import System.Exit (exitWith, ExitCode(ExitSuccess))
-
+import Control.Parallel
 
 -- Get the hex representation of Pi at place n.
 hexPi :: Integer -> Integer
 hexPi n =
   let
-    summation = (4 * sumPi n 1) - (2 * sumPi n 4) - (sumPi n 5) - (sumPi n 6)
+    summation = let
+      sone = (4 * sumPi n 1)
+      sfour = (2 * sumPi n 4)
+      sfive = (sumPi n 5)
+      ssix = (sumPi n 6)
+      in
+      sone `par` sfour `par` sfive `par` ssix `par` sone - sfour - sfive - ssix
+    
     skimmedSum = summation - (fromIntegral (floor summation :: Integer)) -- Take only the decimal portion
   in
     floor (16 * skimmedSum) :: Integer

+ 1 - 0
pi-digits.cabal

@@ -26,6 +26,7 @@ executable pi-digits-exe
   build-depends:       base
                      , pi-digits
                      , split
+                     , parallel
   default-language:    Haskell2010
 
 test-suite pi-digits-test