All pastes #441913 Raw Edit

Something

public text v1 · immutable
·published 2007-04-15 22:26 UTC
rendered paste body
/* The Great Computer Language Shootout
   http://shootout.alioth.debian.org/

   contributed by Isaac Gouy
*/

using System;
using System.IO;
using System.Runtime.InteropServices;

class Mandelbrot {

	public static void Main(String[] args) {

		int width = 100;
		if (args.Length > 0) width = Int32.Parse(args[0]);

		int height = width, i, m = 50, bits = 0, bitnum = 0;
		bool isOverLimit = false;
		double Zr = 0.0, Zi  = 0.0, Cr, Ci, Tr, Ti, limit2 = 4.0;

		Console.WriteLine("P4");
		Console.WriteLine("{0} {1}", width,height);
#if SLOW
		Stream s = Console.OpenStandardOutput(1024);
#endif

		for(int y = 0; y < height; y++) {
			for(int x = 0; x < width; x++){

				Zr = 0.0; Zi = 0.0;
				Cr = 2.0*x / width - 1.5;
				Ci = 2.0*y / height - 1.0;

				i = 0;
				do {
					Tr = Zr*Zr - Zi*Zi + Cr;
					Ti = 2.0*Zr*Zi + Ci;
					Zr = Tr; Zi = Ti;
					isOverLimit = Zr*Zr + Zi*Zi > limit2;
				} while (!isOverLimit && (++i < m));

				bits = bits << 1;
				if (!isOverLimit) bits++;
				bitnum++;

				if (x == width - 1) {
					bits = bits << (8 - bitnum);
					bitnum = 8;
				}

				if (bitnum == 8){
#if SLOW
					s.WriteByte((byte)bits);
#else
					putchar ((byte)bits);
#endif
					bits = 0; bitnum = 0;
				}
			}
		}
	}

#if !SLOW
	[DllImport ("libc")]
	static extern int putchar (int data);
#endif
}