Almkvist-Giullera formula for pi: Difference between revisions

m
→‎{{header|Haskell}}: Formatting; switch from mapM_ to forM_ for legibility
m (→‎{{header|Haskell}}: Fix names.)
m (→‎{{header|Haskell}}: Formatting; switch from mapM_ to forM_ for legibility)
Line 580:
{{libheader|numbers}}
{{trans|Common Lisp}}
<lang haskell>import GHCControl.IntegerMonad
import Data.Number.CReal
import GHC.Integer
import Text.Printf
 
Line 597 ⟶ 598:
-- The almkvistGiulleraIntegral part of the Nth term in the Almkvist-Giullera series
almkvistGiulleraIntegral :: Integer -> Integer
almkvistGiulleraIntegral n =
let polynomial = (532 `timesInteger` n `timesInteger` n) `plusInteger` (126 `timesInteger` n) `plusInteger` 9
numerator = 32 `timesInteger` (facInteger (6 `timesInteger` n)) `timesInteger` polynomial
Line 622 ⟶ 623:
iterations = 52
main :: IO ()
main = do
(printf "N. %44s %4s %s\n" "Integral part of Nth term" "×10^" "=Actual value of Nth term")
"Integral part of Nth term" "×10^" "=Actual value of Nth term"
mapM_ (\n -> printf "%d. %44d %4d %s\n" n (almkvistGiulleraIntegral n) (tenExponent n) (showCReal 50 (almkvistGiullera n))) [0..9]
 
forM_ [0..9] $ \n ->
printf "%d. %44d %4d %s\n" n
(almkvistGiulleraIntegral n)
(tenExponent n)
(showCReal 50 (almkvistGiullera n))
 
printf "\nPi after %d iterations:\n" iterations
putStrLn $ showCReal 70 $ almkvistGiulleraPi iterations</lang>
</lang>
 
{{Out}}
1,480

edits