在我的函数中,我想使用php bc-math来提高精度。我试图替换所有操作无济于事。这是浮点到字符串的转换问题吗?
function complex_iterate($re,$im)
{
$re=strval($re);
$im=strval($im);
$zisqr = $zrsqr = $iter = $zIm = $zRe = "0";
bcscale(50);
while (floatval(bcadd($zrsqr,$zisqr)) < 4
&& $iter < $this->iterations
)
{
$zIm = bcadd($zIm,$zRe);
$zIm = bcadd($zIm,$zIm);
$zIm = bcadd($zIm,$im);
$zRe = bcadd(bcsub($zrsqr,$zisqr),$re);
$zrsqr = bcmul($zRe,$zRe);
$zisqr = bcmul($zIm,$zIm);
++$iter;
}
return $iter;
答案 0 :(得分:1)
使用任意精度库将比浮点数慢得多,特别是对于像计算Mandelbrot集这样做很多次重复迭代的事情。如果你想要速度,我建议使用像gmplib这样的库在C中重写它。
您的代码中的问题是您在循环内的第一行使用了bcadd
而不是bcmul
。