-2

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

1 回答 1

1

使用任意精度的库都将比浮点数慢得多,尤其是对于计算 Mandelbrot 集这样的东西,它会进行很多次重复迭代。如果您想要速度,我建议您使用gmplib 之类的库在 C 中重写它。

您的代码中的问题是您在循环中的第一行使用 abcadd而不是 a bcmul

于 2012-12-17T22:02:19.983 回答