Fractals

The images here were created with a bespoke C++/CUDA program that generates Mandelbrot set and Julia set fractals.

All calculation is performed on the GPU using either double-precision floating-point, or arbitrary-precision fixed-point arithmetic (using a custom fixed-point library). The perturbation theory series approximation technique is implemented to speed up calculation at scales that require large fixed-point values (e.g. 160 fractional bits).

Gallery

Fractal 1 mandelbrot; re: -1.11206755481088781500887; im: 0.228033048982662300829816; scale: 5.83928999948e-07

Fractal 2 mandelbrot; re: -0.744905; im: 0.112328; scale: 2.031248e-05; swizzels pallete

Fractal 3 mandelbrot; re: -0.98485947819980035; im: 0.29938735650847048; scale: 8.8329312877442e-11

Fractal 4 mandelbrot; re: -0.9848594781957037213237145637; im: 0.2993873565073846403984581686; scale: 3.9114e-24; deeper zoom of previous

Fractal 5 mandelbrot; re: -0.655455488043509060247516; im: -0.447910863471105757938062; scale: 0.000245968057202499736091372

Fractal 6 re: -0.762117937679763868315241247030275423469755426627738420180318245270798804887116666815773926891914009142341733523762921408112737166532788836052833501037883542274076252376342969967705008185120000; im: 0.095731755938079152181101271958769817291852842957531737800785254979881669321686600681706314310158846138500903477457806058122484448592604225710763609321937469909764288891577322406214406979994248; scale: 1.85973595389728175076275430040002559999e-152; perturbation

Code

Code Source snippet. This CUDA kernel runs in parallel for a chunk of pixels, performing the Mandelbrot iteration. This is specifically for fixed-point values - used at scales where standard double-precision floating-point values fail (below ~1e-14).

Code is available on my GitHub.