Almkvist-Giullera formula for pi: Difference between revisions

m
m (→‎{{header|Haskell}}: Fix names.)
Line 595:
powInteger b e = b `timesInteger` powInteger b (e `minusInteger` 1)
 
-- The integralalmkvistGiulleraIntegral part of the Nth term in the Almkvist-Giullera series
integralalmkvistGiulleraIntegral :: Integer -> Integer
almkvistGiulleraIntegral n =
integral n =
let polynomial = (532 `timesInteger` n `timesInteger` n) `plusInteger` (126 `timesInteger` n) `plusInteger` 9
numerator = 32 `timesInteger` (facInteger (6 `timesInteger` n)) `timesInteger` polynomial
Line 608:
 
-- The Nth term in the series
almkvist'giulleraalmkvistGiullera :: Integer -> CReal
almkvist'giulleraalmkvistGiullera n = fromInteger (integralalmkvistGiulleraIntegral n) / fromInteger (powInteger 10 (abs (tenExponent n)))
 
-- The sum of the first N terms
a'g_sumalmkvistGiulleraSum :: Integer -> CReal
a'g_sumalmkvistGiulleraSum n = sum $ map almkvist'giulleraalmkvistGiullera [0 .. n]
 
-- The approximation of pi from the first N terms
a'g_pialmkvistGiulleraPi :: Integer -> CReal
a'g_pialmkvistGiulleraPi n = sqrt $ 1 / a'g_sumalmkvistGiulleraSum n
 
 
Line 624:
main = do
(printf "N. %44s %4s %s\n" "Integral part of Nth term" "×10^" "=Actual value of Nth term")
mapM_ (\n -> printf "%d. %44d %4d %s\n" n (integralalmkvistGiulleraIntegral n) (tenExponent n) (showCReal 50 (almkvist'giulleraalmkvistGiullera n))) [0..9]
printf "\nPi after %d iterations:\n" iterations
putStrLn $ showCReal 70 $ a'g_pialmkvistGiulleraPi iterations</lang>
</lang>
 
{{Out}}
1,480

edits