PI Digits

<?php

/**
 * pi_digits
 *
 * Calculate the digits of pi.
 *
 * @version 0.4
 * @author Contributors at eXorithm
 * @link /algorithm/view/pi_digits Listing at eXorithm
 * @link /algorithm/history/pi_digits History at eXorithm
 * @license /home/show/license
 *
 * @param number $digits 
 * @return mixed
 */
function pi_digits($digits=500)
{
	$n = floor($digits * 14/4);
	
	$scale = 10000;
	$init = 2000;
	$carry = 0;
	$result = '';
	
	for($i=0;$i<=$n;$i++) {
		$arr[$i] = $init;
	}
	
	for($i=$n;$i>0;$i=$i-14) {  
		$sum = 0;  
		for($j=$i;$j>0;$j--) {  
			$sum = ($sum * $j) + ($scale * $arr[$j]);  
			$arr[$j] = $sum % (($j*2)-1);  
			$sum = floor($sum / (($j*2)-1));  
		}
		$result .= sprintf("%04d", ($carry + ($sum / $scale)));
		$carry = $sum % $scale;  
	}
	
	if ($digits>1) {
		return $result[0].'.'.substr($result,1,$digits-1);
	} else {
		return substr($result,0,$digits);
	}
}

?>