8.2.2 Limitations of Integer Math (And How We Cope)
By default, Fractint uses 16-bit and/or 32-bit integer math to generate
nearly all its fractal types. The advantage of integer math is speed:
this is by far the fastest such plotter that we have ever seen on any
PC. The disadvantage is an accuracy limit. Integer math represents
numbers like 1.00 as 32-bit integers of the form [1.00 * (2^29)]
(approximately a range of 500,000,000) for the Mandelbrot and Julia
sets. Other integer fractal types use a bitshift of 24 rather than 29,
so 1.0 is stored internally as [1.00 * (2^24)]. This yields accuracy of
better than 8 significant digits, and works fine... until the initial
values of the calculations on consecutive pixels differ only in the
ninth decimal place.
At that point, if Fractint has a floating-point algorithm handy for that
particular fractal type (and virtually all of the fractal types have one
these days), it will silently switch over to the floating-point
algorithm and keep right on going. Fair warning - if you don't have an
FPU, the effect is that of a rocket sled hitting a wall of jello, and
even if you do, the slowdown is noticeable.
If it has no floating-point algorithm, Fractint does the best it can: it
switches to its minimal drawing mode, with adjacent pixels having
initial values differing by 1 (really 0.000000002). Attempts to zoom
further may result in moving the image around a bit, but won't actually
zoom. If you are stuck with an integer algorithm, you can reach minimal
mode with your fifth consecutive "maximum zoom", each of which covers
about 0.25% of the previous screen. By then your full-screen image is an
area less than 1/(10^13)th [~0.0000000000001] the area of the initial
screen. (If your image is rotated or stretched very slightly, you can
run into the wall of jello as early as the fourth consecutive maximum
zoom. Rotating or stretching by larger amounts has less impact on how
soon you run into it.)
Think of it this way: at minimal drawing mode, your VGA display would
have to have a surface area of over one million square miles just to be
able to display the entire M-set using the integer algorithms. Using
the floating-point algorithms, your display would have to be big enough
to fit the entire solar system out to the orbit of Saturn inside it. So
there's a considerable saving on hardware, electricity and desk space
involved here. Also, you don't have to take out asteroid insurance.
32 bit integers also limit the largest number which can be stored. This
doesn't matter much since numbers outside the supported range (which is
between -4 and +4) produce a boring single color. If you try to zoom-out
to reduce the entire Mandelbrot set to a speck, or to squeeze it to a
pancake, you'll find you can't do so in integer math mode.