为什么我的bc数学不起作用?

时间:2012-12-17 15:37:06

标签: php mandelbrot bcmath

在我的函数中,我想使用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;

1 个答案:

答案 0 :(得分:1)

使用任意精度库将比浮点数慢得多,特别是对于像计算Mandelbrot集这样做很多次重复迭代的事情。如果你想要速度,我建议使用像gmplib这样的库在C中重写它。

您的代码中的问题是您在循环内的第一行使用了bcadd而不是bcmul