You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
josch 3868c241e1 enhance makefile, add to README 8 years ago
Makefile enhance makefile, add to README 8 years ago enhance makefile, add to README 8 years ago
colors.h add anti aliasing 8 years ago
doubledouble.h add anti aliasing 8 years ago
mandel.c add doubledouble version 8 years ago
mandel_dd.c fix bailout value 8 years ago
mandel_dd_aa.c update mandel_dd_aa 8 years ago
mandel_mpfr.c fix bailout value 8 years ago
mandel_quad.c add libquadmath implementation 8 years ago add options to 8 years ago


Calculating Mandelbrot using different ways. It tries to imitate the Mandelbrot calculation by Zom-B but be faster in doing so.

This project started by trying to reproduce this zoom sequence but in higher resolution:

The generator used for this version is available here:



  • straight forward "long double" based mandelbrot
  • this is obviously the fastest implementation but has limited precision


  • mandelbrot using the arbitrary precision mpfr library


  • mandelbrot using gcc libquad


  • mandelbrot using custom double double math
  • this is the fastest implementation given double double precision


  • with antialiasing
  • it is more than three times faster than the Zom-B version (see below)

How to compile

Compile by running make.

How to execute

Each of the tools takes as arguments the width, height, coordinates and magnification. Output is in PPM format on standard output.

$ ./mandel_dd_aa 1920 1080 0.0 0.0 1.0 > out.ppm

You can compress the ppm by using:

$ convert out.ppm -format png out.png

And even compress it further by doing:

$ optipng -o4 -i0 out.png
$ advpng -z4 out.png

= How to generate zoom animation =

The shell script (with a small python helper) will generate and execute a list of commands to create a zooming sequence of images.

You can create a video of the resulting sequence using:

$ avconv -i out_%05d.png out.mp4

Or a gif animation by using:

$ convert -delay 20 -loop 0 out_*.png out.gif


Benchmark against mandelbrot computation by Zom-B:

at zoom coordinates:

  • x = -0.743643887037158704752191506114774
  • y = 0.131825904205311970493132056385139

1 to 1e32 in 100 steps at 320x240 and no AA took

  • mandel_dd 1:28 h
  • mandel_zomb 2:45 h

1.0e17 at 1920x1080 with 5xAA took

  • mandel_dd_aa 2:38 h
  • mandel_zomb 8:40 h