< Prev           Iterated Dynamics Version 1.0          Page 166 Next >
 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.