Hola:
Aquí os pongo un programa que he creado para calcular los decimales de PI. Utiliza el método de Ramanujan.
<?
ini_set("max_execution_time", "0");
$decimales = '10000';
$n = "0";
$sumatoria = "0";
function factorial ($num) {
// inicializamos la variable
$factorial = 1;
// calculamos el factorial
// multiplicando el numero por todos
// los numeros entre el y 1
// Salida: "El factorial de 5 es 120"
for ($x=$num; $x>=1; $x--) {
$factorial = bcmul($factorial, $x);
}
return $factorial;
}
While ($n < $_GET['n']) {
$raiz = bcsqrt('2', $decimales);
$mult1 = bcmul('2', $raiz, $decimales);
$primera = bcdiv($mult1, '9801', $decimales);
$mult2 = bcmul(factorial(4*$n), bcadd('1103', bcmul('26390', $n, $decimales), $decimales), $decimales);
$mult22 = bcmul(factorial($n), factorial($n), $decimales);
$mult22 = bcmul($mult22, $mult22, $decimales);
$exponente = 4*$n;
$numero = 396;
$numeroo = 1;
for ($i=0; $i<$exponente; $i++)
{
$numeroo = bcmul($numeroo, $numero, $decimales);
}
$mult3 = bcmul($mult22, $numeroo, $decimales);
$div = bcdiv($mult2, $mult3, $decimales);
$sumatoria = bcadd($sumatoria, $div, $decimales);
#$sumatoria = $sumatoria + ((factorial(4*$n))*(1103+26390*$n))/(potencia (factorial($n), 4)*potencia (396, 4*$n));
$sum2 = bcmul($sumatoria, $primera, $decimales);
$sum3 = bcdiv('1', $sum2, $decimales);
$fp = fopen('pi.txt', "w");
$write = fputs($fp, $sum3);
fclose($fp);
$n=$n+1;
if ($n % 20 == 0)
{
sleep (1);
}
}
echo $sum3;
?>
Sólo hay que subirlo y entrar en www.tupagina.com/pagina.php?n=XXXX. Cuanto mayor sea XXXX más decimales correctos tendrá. En la línea 3 puedes cambiar la cantidad de decimales que quieres que muestre (pero cuanto mayor sea, más tarda en hacer las operaciones).
Lo hice ayer, lo probé y he conseguido 8.000 decimales correctos de Pi. Ahora mismo lo tengo trabajando para que obtenga más decimales.