/* 2004-05-19 Anders Brander <anders@brander.dk> */

/* Using macro... */
#define RGB2GREY(r,g,b) ((r*rg+g*gg+b*bg)>>16)

const int rg = (int) (0.299*65536+0.5);
const int gg = (int) (0.587*65536+0.5);
const int bg = (int) (0.114*65536+0.5);

/* Using inline function... */
inline unsigned char
rgb2grey(unsigned char r, unsigned char g, unsigned char b)
{
	register const int rg = (int) (0.299*65536+0.5);
	register const int gg = (int) (0.587*65536+0.5);
	register const int bg = (int) (0.114*65536+0.5);
	return((unsigned char) ((r*rg+g*gg+b*bg)>>16));
}

int
main(int argc, char **argv	)
{
	printf("%d\n", rgb2grey(atoi(argv[1]), atoi(argv[2]),atoi(argv[3])));
	printf("%d\n", RGB2GREY(atoi(argv[1]), atoi(argv[2]),atoi(argv[3])));
}

