円周率

円周率をプログラミングで出してみます。
phpだと、

<?php
echo pi();

もしくは

<?php
echo M_PI;

で求められます。
今回はアルゴリズムで円周率を求めてみたいと思います。
使用するのはマチンの公式

π / 4 = 4 arctan 1/ 5 - arctan 1/ 239

但し、arctan x = x - x ^ 3 / 3 + x ^ 5 / 5 - x ^7 / 7 + ・・・

です。
以下ソース

<?php

$p = 0;
$k = 1;
$t = 16 / 5;
do{
    $last = $p;
    $p += $t /$k;
    $t /= -5 * 5;
    $k += 2;
}while($p != $last);

$k = 1;
$t = 4 / 239;
do{
    $last = $p;
    $p -= $t / $k;
    $t /= -239 * 239;
    $k += 2;
}while($p != $last);
echo $p . "\n";

実行してみます。

php pi1.php 
3.1415926535898

求めることが出来ました。