# Happy Pi Day

In honor of Pi Day, I thought I would write a little Ruby script to generate pi to a few decimal places.

A quick trip to the Wikipedia page for pi turned up many formulas for computing pi. I took one of the easy ones and set about writing some code.

Most of the formulas involve the factorial function. Unfortunately, Ruby doesn’t have a built in method for computing the factorial. After a little Googling, I found a nice, functional example at the Rosetta Code wiki.

Putting that all together, I ended up with this:

```
def fact(n)
(1..n).reduce(1, :*)
end
sum = 0.0
(0..8).each do |n|
a = fact(2 * n) ** 3.0
b = 42.0 * n + 5.0
c = fact(n) ** 6.0
d = 16.0 ** (3.0 * n + 1.0)
sum += (a * b) / (c * d)
puts 1.0 / sum
end
```

Note that I’m only iterating 8 times. On my PC, that gives pi out to 15 decimal places which is all of the precision available in a floating point number.