Fractals/mightymandel

mightymandel is Mandelbrot set explorer made by Claude Heiland-Allen. Here one can find unofficial docs about it

=Features=
 * draws parameter plane of complex quadratic polynomial with boundary of Mandelbrot set
 * License GPL3+
 * perturbation technique with series approximation.
 * GPGPU based on OpenGL 4 ( "my GPU is much faster than my CPU ")
 * writen in C ( C99) with full src code available
 * multiprecision

Plane description
Claude Heiland-Allen[4] uses center and radius for the description of parameter plane.

Radius is defined as "the difference in imaginary coordinate between the center and the top of the axis-aligned view rectangle".

So plane is described by 3 numbers:
 * center_re
 * center_im
 * radius

where center = center_re + center_im * i

=Installation=

Requirements

 * opengl for GPGPU
 * version 4.1 (supports 3.3 as fallback without perturbation, limiting zoom depth dramatically)
 * libraries : gl, glew, glfw3,
 * multiprecision ( library MPFR )
 * rt
 * programs:
 * gcc
 * make
 * bash
 * sed
 * git
 * pkg-config
 * ts ( for test suite, see /src/test.sh ) Use in Ubunty : sudo apt-get install moreutils
 * doxygen ( for doc)
 * for video :
 * AVConv - Automatic video converter
 * FFmpeg

One can check it with ldd :

ldd -d -v ./src/mightymandel

or look at /src/Makefile :

-lGLEW -lGL -lrt -lmpfr -lm

Debian packages
On Debian Jessie, this suffices to install everything you need to compile:

Getting the source
First time :

To update src run ( from program directory):

Then one can build the program.

Remote repository
the result :

Version
Example output :

Building
Got to the mightymandel directory :

and make :

or, in case of problems :

make -C src EXTRA_LINK_FLAGS="-lGL -lGLU -lglfw3 -lX11 -lXxf86vm -lXrandr -lpthread -lXi"

or edit Makefile and add extra flags, but then you will have problems after updating source.

One can also build and run test suite

glfw
Package glfw3 was not found in the pkg-config search path.

Download and install glfw:

Ubuntu 14.10 ( utopic ) has packages for glfw3 ( but CUDA packages are only for LTS version of Ubuntu, it is now 13.04)

Next error :

LINK   mightymandel /usr/bin/ld: /usr/local/lib/libglfw3.a(x11_clipboard.c.o): undefined reference to symbol 'XConvertSelection' /usr/lib/x86_64-linux-gnu/libX11.so.6: error adding symbols: DSO missing from command line

add to makefile ( on Ubuntu 13.10 64-bit) :

-lGL -lGLU -lglfw3 -lX11 -lXxf86vm -lXrandr -lpthread -lXi \

check
file ./mightymandel ./mightymandel: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x2a424b6dcad8de5e29e3f0b17524dbf34de18aaa, not stripped

=Running= Go to the program directory and :

./src/mightymandel

Version
./src/mightymandel—version

example result : v16-10-gd079448+2015-01-20-16-40-55

mm
One can run ( from program directory) example parameter file fp32.mm using :

./src/mightymandel ./examples/mm/fp32.mm

par
Now mightymandel does not load native fractint par files. They need to be transformed to ppar files.

How to preprocess Fractint par file ?
 * Split txt file ( with parameters for many images ) into single image files ( with 7 lines of original file)
 * splite line with many parameters into lines with one parameter per line ( replace space into newline)
 * add ppar extension :
 * remove all par files without :
 * "type=mandel" ( mightymandel can draw only mandelbrot set )
 * "corners=" or "center-mag="

Comment : "pre-processing script removes the input without asking, which is a bit rude! And it doesn't support merging lines ending in \ " Claude

Here is split2ppar.sh by Claude

ppar
Preprocessed par files are in /examples/ppar directory. Use :

./src/mightymandel ./examples/ppar/1_02.ppar

test
One can run test suite :

Example output :

real	56m25.351s user	33m50.995s sys	21m38.976s

See also :
 * content of csv file int test directory
 * images in test directory

Benchmark
See file BENCHMARKS in program directory for more details

Check hardware

 * type and version of the Central processing unit ( CPU )
 * type and version of the graphics processing unit ( GPU )
 * version of the video card device driver ( DRV ) and which version of OpenGl it supports

Example output :

Run benchmark
=Images= Galleries :
 * in commons there is a category : commons:Category:Fractals created with Mightymandel
 * official online doc gallery

comment
To extract comment from ppm file :

identify -format "%c" 1.ppm

or

head -n 2 1.ppm | tail -n 1

example output :

mightymandel -1.8605739600158748e+00 + -9.3437424499999996e-07 i @ 3.5884749956982262e-09

and from png file :

extract k2000.png

colors

 * white = exterior of Mandelbrot set
 * black = boundary of Mandebot set ( using DEM )
 * red = glitches
 * yellow = RGB(255,178,0) = known interior of Mandelbrot set
 * blue = uncalculated

= Documentation =
 * official online

How to contribute ?
If path file was not created try :

then email the .patch files to Claude

=References=