==== Example code for mandelbrot ====
C/C++ skeleton code for Mandelbrot computation.
#include
#include
#include
#include "tbb/parallel_for.h"
#include "tbb/blocked_range.h"
// or use blocked_range2d if appropriate
using namespace tbb;
using namespace std;
// default constants
// square area, lower left angle and size
#define DEFAULT_X -2.0
#define DEFAULT_Y -2.0
#define DEFAULT_SIZE 4.0
#define DEFAULT_PIXELS 10
#define DEFAULT_ITERATIONS 1000
// we assume a point diverges if its squared modulus exceeds this value
#define MAX_SMODULUS = 4
// a variable holding the number of iterations limit
static int maxIter = DEFAULT_ITERATIONS;
//function computing the mandelbrot in asingle point
//returns the number of iteration until divergence
int mand_compute( double cx, double cy)
{
int i=0;
double x = cx; double y = cy;
double nx, ny;
for (i=0; i MAX_SMODULUS ) break;
x=nx; y=ny;
}
return i;
}
// define class to hold the computation
//main
int main () {
// initialization
// inizialize data if needed
// parallel for
// with blocked_range
}
==== Example code for saving an array as PPM graphics ====
Compile and link this file together with you code.
Remember to insert the function prototye in the main source file
#include
#include
/** C routine to save a 2d int array as an image to a simple graphic format **/
/** edited form of code from the rosetta code project **/
/** https://rosettacode.org/wiki/Bitmap/Write_a_PPM_file **/
int saveimg(int dimx, int dimy, const char * filename, int * matrix, int max_value)
{
// filename must end with .ppm
// no parameter checking!!! you are on your own
// const int dimx = 800, dimy = 800;
int i, j;
FILE *fp = fopen(filename, "wb"); /* b - binary mode */
(void) fprintf(fp, "P6\n%d %d\n255\n", dimx, dimy);
for (j = 0; j < dimy; ++j)
{
for (i = 0; i < dimx; ++i)
{
// here you may use any scaling function you prefer
int val = matrix[i +j*dimy];
if (max_value!=255)
{ val = (val *255) / max_value; // scale to 0 - 255
}
//
// rgb values are still rounded in case of mistakes
static unsigned char color[3];
color[0] = val % 256; /* red */
color[1] = val % 256; /* green */
color[2] = val % 256; /* blue */
(void) fwrite(color, 1, 3, fp);
}
}
(void) fclose(fp);
return 0;
}