Of course, there has to be a Mandelbrot submission.

![enter image description here][1]


    char red_fn(int i,int j){
        float x=0,y=0;int k;for(k=0;k++<256;){float a=x*x-y*y+(i-768.0)/512;y=2*x*y+(j-512.0)/512;x=a;if(x*x+y*y>4)break;}return k>31?256:k*8;
    }
    char green_fn(int i,int j){
        float x=0,y=0;int k;for(k=0;k++<256;){float a=x*x-y*y+(i-768.0)/512;y=2*x*y+(j-512.0)/512;x=a;if(x*x+y*y>4)break;}return k>63?256:k*4;
    }
    char blue_fn(int i,int j){
        float x=0,y=0;int k;for(k=0;k++<256;){float a=x*x-y*y+(i-768.0)/512;y=2*x*y+(j-512.0)/512;x=a;if(x*x+y*y>4)break;}return k;
    }

Trying to improve the colour scheme now. Is it cheating if I define the computation as a macro is `red_fn` and use that macro in the other two so I have more characters for fancy colour selection in green and blue?

**Edit:** It's really hard to come up with decent colour schemes with these few remaining bytes. Here is one other version:

    /* RED   */ return log(k)*47;
    /* GREEN */ return log(k)*47;
    /* BLUE  */ return 128-log(k)*23;

![enter image description here][2]


  [1]: https://i.sstatic.net/bJZHw.png
  [2]: https://i.sstatic.net/ha0lJ.png