我需要帮助实现更精确的浮动。 (Mandelbrot Renderer)代码

问题描述 投票:-1回答:1

__float128太慢了

我对GMP或MPFR没有经验。

有什么我能做的吗?

这是我的代码的一个非常简化的版本。

The cut down code is missing many elements:

Code

我是堆叠溢出的新手

#include <SFML/Graphics.hpp>

typedef long double num;

void drawFract(const unsigned int threadNum)
{
    for(unsigned int iy = 0; iy < threadHeight; iy++)
    {
        num px = xStart;
        for(unsigned int ix = 0; ix < w; ix++)
        {
            pixels[counter + 0] = 0; pixels[counter + 1] = 0;
            pixels[counter + 2] = 0; pixels[counter + 3] = 255;

            num zr = px, zi = py;
            for(unsigned int i = 0; i < iter; i++)
            {
                const num   sqzr = zr * zr,
                            sqzi = zi * zi,
                            add = zr + zi;

                zi = py + add*add - sqzr - sqzi;
                zr = sqzr - sqzi + px;

                if(sqzr + sqzi > bail)
                {
                    i %= colors;
                    pixels[counter + 0] = r[i];
                    pixels[counter + 1] = g[i];
                    pixels[counter + 2] = b[i];
                    break;
                }
            }
            px += xIter;
            counter += 4;
        }
        py += yIter;
    }

    return;
}

int main()
{
    app.setFramerateLimit(64);

    sf::Thread  bot0(drawFract,0), bot1(drawFract,1),
                bot2(drawFract,2), bot3(drawFract,3),
                bot4(drawFract,4), bot5(drawFract,5),
                bot6(drawFract,6), bot7(drawFract,7);

    /* My position manager system */
}

对不起,我真的需要帮助,不是为了工作,只是为了好玩。

c++ gmp mandelbrot
1个回答
0
投票

MPFR是任意精度浮点的标准。但是,如果你对表现很认真,那么你应该考虑使用rendering optimizations

© www.soinside.com 2019 - 2024. All rights reserved.