Multithreaded, High resolution Mandelbrot fractal generator (for Linux/Unix)

Mandel (sorry about the name) is a very simple, multithreaded, high resolution Mandelbrot fractal generator. It can generate large, high resolution files (say, 40000x30000 pixels) with just a few MB of RAM, and use as many processors as you care to give it. And it's GPL.

Obviously, this is no great technical feat, but for some reason I had great difficulty finding generators capable both of dimensions over 8k pixels and of leveraging SMP.

Download it here. It's licensed under the GNU General Public License. Here is a 640x10000 sample (make sure your browser doesn't scale it)

Here's a copy of the README:

Mandel - Parallel large mandelbrot set generator
by Vidar 'koala_man' Holen


This is a simple app for generating huge mandelbrot sets (such as 40000x30000
pixels).  It supports SMP and antialiasing, and includes a tool for plotting
XaoS .xpf files with the default XaoS palette. 

It was written because no other simple tools appeared to support sets with
dimensions larger than 8000 pixels, and few handled SMP (even though Mandelbrot
sets are embarrasingly parallel).

Compiling:
    make

Usage:
    ./mandel -w width -h height                  # Pixel width, height
             -l left -r right -u upper -d lower  # Set boundaries 
             -i iterationcount                   # Iterations 
             -j jobcount                         # Number of threads to use
             -a antialiasingfactor               # Antialising factor 
            > file.ppm                           # Redirect to a ppm file


    -i, -l, -r, -u and -d can be determined by 'parsexpf' from a XaoS 
    xpf file. Example:
    
    ./mandel `./parsexpf sample.xpf` -w 320 -h 240 -j 3 -a 2 > sample.ppm


Tips for generating posters:

  - Check with a local print stores to see what kind of sizes and resolutions
    they can print.

    They might handle 850mm or 1000mm or more in height, and as wide as you
    want. As for resolution, 150 or 200dpi is usually enough for a regular
    poster, but perhaps not for a fractal if you want to view it up close.
    600 dpi should be good. Look at a sample to determine quality.

    If interested, see if they can print in UV-resistant ink.

 - If you want a frame, find one and base your poster size on it rather than
   vice versa.
    
   Frames for holding standard sizes such as A0, A1 or B1 are much cheaper and
   nicer than custom sizes or misfitting contents.

 - Use the correct image format, with the correct DPI setting.

   .TGA files appear to be a favourite. You have to make sure the image DPI is
   set properly though, so just saving as TGA might not be enough. 

   If your TGA encoder sets it to default as 200dpi, the print shop's tools
   might decide to resize your image to fit at the given resolution:

   You give them  : 3000x2100mm 24000x16968px 200dpi
   You intended   : 1000x707mm  24000x16968px 600dpi 
   Instead you get: 1000x707mm   8000x 5656px 200dpi 

 - Get the print shop to cut it to your exact size. 

   Sure beats scissors for getting a meter long straight edge. 
    
 - Optionally shift the palette to match your wall colour. 

   There's a compile-time constant PALETTE_SHIFT in mandel.c you can use to
   shift the palette. My walls are (uhm) light peach, so I set PALETTE_SHIFT to
   12 so that the edges of the accompanying example (sample.png) are yellow
   instead of dark purple. It makes it blend in with the wall, looking much
   more awesome.