比如如下程序:function bcpi($precision=30, $accuracy=21){
bcscale($precision);
$n = 1;
$bcatan1 = 0;
$bcatan2 = 0;
while($n < $accuracy){ $bcatan1 = bcadd($bcatan1, bcmul(bcdiv(pow(-1, $n+1), $n * 2 - 1), bcpow(0.2, $n * 2 -1)));
$bcatan2 = bcadd($bcatan2, bcmul(bcdiv(pow(-1, $n+1), $n * 2 - 1), bcpow(bcdiv(1,239), $n * 2 -1)));
++$n;
}
return bcmul(4,bcsub(bcmul(4, $bcatan1),$bcatan2));
}echo bcpi(5e50,5e50);
//直接执行上面的语句必定会失败。Maximum execution time of 30 seconds因为服务器限制了30s执行完成,因此要执行他需要边执行边输出(fwrite),当29s的时候暂停执行,再继续可行么?如果可行又怎么做呢?CPU也有限制。最大2.5H (6.25GHz)
bcscale($precision);
$n = 1;
$bcatan1 = 0;
$bcatan2 = 0;
while($n < $accuracy){ $bcatan1 = bcadd($bcatan1, bcmul(bcdiv(pow(-1, $n+1), $n * 2 - 1), bcpow(0.2, $n * 2 -1)));
$bcatan2 = bcadd($bcatan2, bcmul(bcdiv(pow(-1, $n+1), $n * 2 - 1), bcpow(bcdiv(1,239), $n * 2 -1)));
++$n;
}
return bcmul(4,bcsub(bcmul(4, $bcatan1),$bcatan2));
}echo bcpi(5e50,5e50);
//直接执行上面的语句必定会失败。Maximum execution time of 30 seconds因为服务器限制了30s执行完成,因此要执行他需要边执行边输出(fwrite),当29s的时候暂停执行,再继续可行么?如果可行又怎么做呢?CPU也有限制。最大2.5H (6.25GHz)
不过要是实在很专业的计算,我看你得考虑换其他语言。