title: Improvement to my Mandelbrot set code
body: <p>I have the following Mandelbrot set code in C. I am doing the calculation and creating a .ppm file for the final fractal image. The point is that my fractal image is upside down, meaning it is rotated by 90 degrees. You can check it by executing my code: 
  ./mandel > test.ppm</p>
  
  <p>On the other hand, I also want to change the colours. I want to achieve this fractal image:</p>
  
  <p><img src="https://i.stack.imgur.com/WOP1q.jpg" alt="enter image description here"></p>
  
  <p>My final issue is that my code doesn't check the running time of my code. I have the code for this part too, but when code execution finishes it doesn't print the running time. If someone can make the appropriate changes to my code and help me achieve this fractal image, and make elapsed time displayed I would be glad.</p>
  
  <pre><code>#include &lt;math.h&gt;
  #include &lt;stdlib.h&gt;
  #include &lt;time.h&gt;
  #include &lt;stdio.h&gt;
  
  void color(int red, int green, int blue)
  {
      fputc((char)red, stdout);
      fputc((char)green, stdout);
      fputc((char)blue, stdout);
  }
  
  int main(int argc, char *argv[])
  {
      int w = 600, h = 400, x, y; 
      //each iteration, it calculates: newz = oldz*oldz + p, where p is the current pixel, and oldz stars at the origin
      double pr, pi;                   //real and imaginary part of the pixel p
      double newRe, newIm, oldRe, oldIm;   //real and imaginary parts of new and old z
      double zoom = 1, moveX = -0.5, moveY = 0; //you can change these to zoom and change position
      int maxIterations = 1000;//after how much iterations the function should stop
  
      clock_t begin, end;
      double time_spent;
  
      printf("P6\n# CREATOR: E.T / mandel program\n");
      printf("%d %d\n255\n",w,h);
  
      begin = clock();
  
      //loop through every pixel
      for(x = 0; x &lt; w; x++) 
      for(y = 0; y &lt; h; y++)
      {
          //calculate the initial real and imaginary part of z, based on the pixel location and zoom and position values
      pr = 1.5 * (x - w / 2) / (0.5 * zoom * w) + moveX;
          pi = (y - h / 2) / (0.5 * zoom * h) + moveY;
          newRe = newIm = oldRe = oldIm = 0; //these should start at 0,0
          //"i" will represent the number of iterations
          int i;
          //start the iteration process
          for(i = 0; i &lt; maxIterations; i++)
          {
              //remember value of previous iteration
              oldRe = newRe;
              oldIm = newIm;
              //the actual iteration, the real and imaginary part are calculated
              newRe = oldRe * oldRe - oldIm * oldIm + pr;
              newIm = 2 * oldRe * oldIm + pi;
              //if the point is outside the circle with radius 2: stop
              if((newRe * newRe + newIm * newIm) &gt; 4) break;
          }
  
          color(i % 256, 255, 255 * (i &lt; maxIterations));
  
      }
  
      end = clock();
  
      time_spent = (double)(end - begin) / CLOCKS_PER_SEC;
      printf("Elapsed time: %.2lf seconds.\n", time_spent);
  
      return 0;
  }
  </code></pre>