numericalIntegration :: Double -> Double -> Double -> (Double -> Double) -> Double numericalIntegration d a b f | b < a = numericalIntegration d b a f | otherwise = sum [(f (a+d*i) + f (a+d*(i+1)))*d/2 | i<-[0..n-1]] where n = (b-a)/d main = do a <- readLn :: IO Double b <- readLn :: IO Double let d = 0.00001 print $ numericalIntegration d a b (\x -> abs $ 4*pi*x)