packages feed

haskell-mpi-1.0.0: test/examples/PiByIntegration/PiSerial.hs

module Main where

import Control.Applicative ((<$>))
import System (getArgs)

main :: IO ()
main = do
   n <- read <$> head <$> getArgs
   print $ integrate n (1 / fromIntegral n)

integrate :: Int -> Double -> Double
integrate n h =
   h * (sum (map area [1..n]) :: Double)
   -- h * (sum (map area [1..n]))
   where
   area :: Int -> Double
   area i
      = 4 / (1 + x*x)
      where
      x = h * (fromIntegral i - 0.5)