# Simple numerical methods for calculating the digits of $\pi$

Are there any simple methods for calculating the digits of $\pi$? Computers are able to calculate billions of digits, so there must be an algorithm for computing them. Is there a simple algorithm that can be computed by hand in order to compute the first few digits?

-
I've removed the tag [constant]. –  user126 Jul 21 '10 at 8:44
I added the tag "pi." It seems like the sort of thing we should expect lots of questions about here... –  Noah Snyder Jul 21 '10 at 16:50
My first downvote! How exciting :) –  e.James Jul 22 '10 at 13:24
Since it hasn't been mentioned yet, I would recommend the interested to look at Borwein and Borwein's "Pi and the AGM": amazon.com/dp/047131515X –  Ｊ. Ｍ. Sep 4 '10 at 0:39
If it's only the first few digits, try wolframalpha.com/input/?i=pi+to+1000+digits –  lhf Sep 4 '10 at 3:42

One of the simplest is the series for arctangent:

$$\tan^{-1}x = x - \frac{x^3}{3} + \frac{x^5}{5} - \frac{x^7}{7} \ldots$$

$\pi/4 = \tan^{-1} 1$, but that converges slowly.

You can use the addition formula for the tangent $(\tan (a+b) = (\tan a + \tan b) / (1 - \tan a \tan b))$ to break down $\pi/4$ to the sum of two angles and repeat; this can be used to come up with values for the arctangent that are smaller than 1 and therefore converge faster.

exercise for the reader: show that $\pi/4 = 2 \tan^{-1} 2/11 + 3 \tan^{-1} 1/7$

This then means that $\pi; = 8 \tan^{-1} 2/11 + 12 \tan^{-1} 1/7$

Use the arctangent formula with only a few terms and you will have pi to quite a few decimal places. ($3$ terms yields $3.14160$, $4$ terms yields $3.1415924$, $5$ terms yields $3.1415926592$)

-
For casual readers: Jason here employed a variant of Machin's formulae: en.wikipedia.org/wiki/Machin-like_formula –  Ｊ. Ｍ. Sep 4 '10 at 0:36

Some of the easiest algorithms to use are the spigot algorithms. They allow you to jump rapidly to the nth digit without computing the n-1 digits before. The catch is that they only really work in binary. Here are some implementations in Python. You can see how short they are.

-
+1 for spigot algorithms link. –  Jason S Aug 2 '10 at 13:35

Check out the questions tagged 'pi' at Stack Overflow. Many of them discuss simple numerical methods for calculating any number of digits of pi.

-

There is also the option of approximating $\pi$ using Monte Carlo integration.

The idea is this: If we agree that the area of a circle is $\pi r^2$, for simplicity we build a circle of area $\pi$ by setting $r=1$. Placing this circle wholly inside of another region of known area, preferably by inscribing it in a square of side length 2, then we have a ratio of the circle's area to the total area of the square (in this example that ratio is $\frac{\pi}{4}$).

The Monte Carlo method works by approximating areas based on the ratio of the number of sample points lying within our region of interest and the total number of sample points we choose to try. If we spread a uniformly distributed sequence of $N$ points over our square of area 4, and call the number of points that land inside of the inscribed circle $p$, then we can say $\frac{\pi}{4} = \frac{p}{N}$.

My implementation of this in Matlab requires tens of thousands of test points to achieve 3.14159xxxx, but I have not tried it for low-discrepancy sequences, or any other uniformly distributed point sets.

-

Check out the wiki page on approximations to pi, http://en.wikipedia.org/wiki/Numerical_approximations_of_%CF%80#20th_century

I really love Ramanujan's method, which I recall converges extremely rapidly.

-

Since the AGM hasn't been mentioned yet (apart from my plug to read the Borwein and Borwein book), here's how to use the AGM to compute $\pi$:

a←(1+1/√(2))/2
c←1/(8a)
s←a^2
f←1
repeat
a←(a+√((a-c)(a+c)))/2
c←(c^2)/(4a)
f←2f
s←s-fc^2
until |c| is small enough
(2a^2)/(2s-1)


which exploits the Legendre relation.

-