/* * Bryan Ward * char_mandel.c - generate greyscale mandelbrot - one processor */ #include #include #include #include #include #define width 12800 #define height 10240 #define iter 255 #define xmin -2.0 #define xmax 2.0 #define ymin -2.0 #define ymax 2.0 unsigned char checkPoint (double complex c) { double complex z = 0; unsigned char j = 0; while (creal (z) * creal (z) + cimag (z) * cimag (z) < 4 && j < iter) { z = z * z + c; j++; } return j; } int main () { FILE *fl; int x, y, i; double xpix, ypix; // double complex z; double complex c; int escape; unsigned char *final = malloc(sizeof(unsigned char)*width*height); if(final == NULL) { printf("out of memory\n"); exit(1); } if ((fl = fopen ("mandelbrot.pgm", "w")) == NULL) fprintf (stderr, "Cannot open %s\n", "mandelbrot"); fprintf (fl, "P5\n"); fprintf (fl, "#Copyright (C) 2007 Bryan Ward\n"); fprintf (fl, "%d\t%d\n", width, height); fprintf (fl, "255\n"); ypix = (ymax - ymin) / height; xpix = (xmax - xmin) / width; for (i = 0; i < width * height; i++) { c = xmin + (i%width * xpix) + (ymin + (i/height * ypix))* I; final[i] = checkPoint(c); } fwrite((void*)final,sizeof(unsigned char),width*height,fl); fclose (fl); return 0; }