Techincal Details - ZERICO2005/ABS-Fractal-Explorer GitHub Wiki
This page covers the technical details and limits of ABS-Fractal-Explorer.
Maximum Zoom
Unfortunately, computers do not have infinite precision, and will eventually run out of decimal places when zooming in. There is a tradeoff to be made between speed and precision:
- Greater precision will allow one to zoom further at the expense of rendering speed.
- Lower precision will allow one to render faster and with higher quality at the cost of being limited in how far one can zoom in.
ABS Fractal Explorer supports multiple levels of precision from 32bit to 128bit floats, including the use of Dekker-Floats to further increase precision. The approximate maximum zoom (where a 32x32 pixel area is still discernible) is based off the number of mantissa bits of each floating point type. (mantissa_bits * log10(2)) - log10(32 / 2)
fp32: ~10.0^5.7
fp32x2: ~10.0^12.6
fp64: ~10.0^14.4
fp80: ~10.0^17.8
fp64x2: ~10.0^30.7
fp128: ~10.0^32.5 (Although it is very slow to render with)
fp80x2: ~10.0^36.7
fp128x2: ~10.0^66.2 (Even slower than the already slow fp128)
The CPU supports all precision levels while the GPU only supports fp32 and fp64.
Dekker floats are a bit unique, because they can store values such as 1.0 + FLOAT_MIN
. This allows them to zoom extremely far into very specific coordinates, with the main limitation being the exponent range as opposed to the mantissa size. One of these coordinates is 0 + 1i
on the Mandelbrot set, where Float32x2 is able to zoom up to ~10^36.7 (Or ~10^43.6 with subnormal numbers), well beyond the maximum zoom for Float128. Because Float80x2 and Float128x2 share the same 15bit exponent, they are limited to a maximum zoom of ~10^4930.3, on par with many fractal deep-zoom videos. Although, the theoretical maximum zoom is only available for a very limited selection of points.
Some GPU's can preform fp16 operations a bit faster than fp32 due to special hardware; but when the smallest representable number greater than 1.0 is around ~1.001 (1.0009765625), it quickly starts to become a major limiting factor. Resulting in an incredible maximum zoom of 10^1.8.
Image Aspect Ratio
The central 1:1 square of radius 1.0 / 10.0^zoom
will always be visible no matter what aspect ratio the screen/window is. This can be helpful if you are wanting to take photos or screenshots because the center 1:1 square is guaranteed to be inside the picture/frame. If you are using a wide aspect ratio, extra pixels are added to the left and right sides of the screen; and if you are using a tall aspect ratio, the extra pixels are instead added to the top and bottom.
You can see a demonstration of how the aspect ratio calculation works when viewing the Mandelbrot Set. If you go to Real: -1.0, Imag: 0.0, and zoom in ~0.602 or log10(4). You will find a perfect circle with a radius of 1/2 that should touch the borders of the window. If you resize the window to various aspect ratios, the circle will not be cropped or go out of view.
See Also: