You cannot 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 11 years ago
Makefile enhance makefile, add to README 11 years ago
README.md enhance makefile, add to README 11 years ago
colors.h add anti aliasing 11 years ago
doubledouble.h add anti aliasing 11 years ago
mandel.c add doubledouble version 11 years ago
mandel_dd.c fix bailout value 11 years ago
mandel_dd_aa.c update mandel_dd_aa 11 years ago
mandel_mpfr.c fix bailout value 11 years ago
mandel_quad.c add libquadmath implementation 11 years ago
run.sh add options to run.sh 11 years ago

README.md

Introduction

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:

https://en.wikipedia.org/wiki/File:Mandelbrot_sequence_new.gif

The generator used for this version is available here:

https://github.com/josch/mandelbrot_zomb

Overview

mandel:

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

mandel_mpfr:

  • mandelbrot using the arbitrary precision mpfr library

mandel_quad:

  • mandelbrot using gcc libquad

mandel_dd:

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

mandel_dd_aa:

  • 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) run.sh 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

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