#include <stdio.h>
 
 
int clkRate()
{
	return 2000;
}
 
 
 
const int MILLISECONDS_PER_SECOND = 1000;
#define MS_TO_TICKS(ms) ( ( (float)(ms)/ MILLISECONDS_PER_SECOND) * clkRate() )
 
 
void convertAndPrint(int ms)
{
	int  ticksInt;
	unsigned ticksUint;
	double ticksDbl;
	float ticksFlt;
 
	ticksInt = MS_TO_TICKS(ms);
	ticksUint= MS_TO_TICKS(ms);
	ticksFlt = MS_TO_TICKS(ms);
	ticksDbl = MS_TO_TICKS(ms);
 
	printf("Milliseconds: %i\n", ms
); 	printf("Expected val: %i\n",ms
*2); 		   "Unsigned Int: %2u\n"
		   "Floating Pnt: %.13f\n"
		   "Double Precn: %.13f\n"
		   "Direct Macro: %.13f\n",ticksInt,ticksUint,ticksFlt, ticksDbl, MS_TO_TICKS(ms));
 
}
 
void weirdConversionDemo(void)
{
 
 
	convertAndPrint(7);
	convertAndPrint(10);
 
}
 
 
int main(void) {
	weirdConversionDemo();
	return 0;
}
 
				I2luY2x1ZGUgPHN0ZGlvLmg+CgoKaW50IGNsa1JhdGUoKQp7CglyZXR1cm4gMjAwMDsKfQoKCgpjb25zdCBpbnQgTUlMTElTRUNPTkRTX1BFUl9TRUNPTkQgPSAxMDAwOwojZGVmaW5lIE1TX1RPX1RJQ0tTKG1zKSAoICggKGZsb2F0KShtcykvIE1JTExJU0VDT05EU19QRVJfU0VDT05EKSAqIGNsa1JhdGUoKSApCgoKdm9pZCBjb252ZXJ0QW5kUHJpbnQoaW50IG1zKQp7CglpbnQgIHRpY2tzSW50OwoJdW5zaWduZWQgdGlja3NVaW50OwoJZG91YmxlIHRpY2tzRGJsOwoJZmxvYXQgdGlja3NGbHQ7CgkKCXRpY2tzSW50ID0gTVNfVE9fVElDS1MobXMpOwoJdGlja3NVaW50PSBNU19UT19USUNLUyhtcyk7Cgl0aWNrc0ZsdCA9IE1TX1RPX1RJQ0tTKG1zKTsKCXRpY2tzRGJsID0gTVNfVE9fVElDS1MobXMpOwoJCglwcmludGYoIk1pbGxpc2Vjb25kczogJWlcbiIsIG1zKTsKCXByaW50ZigiRXhwZWN0ZWQgdmFsOiAlaVxuIixtcyoyKTsKCXByaW50ZigiU2lnbmVkIEludCAgOiAlMmlcbiIKCQkgICAiVW5zaWduZWQgSW50OiAlMnVcbiIKCQkgICAiRmxvYXRpbmcgUG50OiAlLjEzZlxuIgoJCSAgICJEb3VibGUgUHJlY246ICUuMTNmXG4iCgkJICAgIkRpcmVjdCBNYWNybzogJS4xM2ZcbiIsdGlja3NJbnQsdGlja3NVaW50LHRpY2tzRmx0LCB0aWNrc0RibCwgTVNfVE9fVElDS1MobXMpKTsKCn0KCnZvaWQgd2VpcmRDb252ZXJzaW9uRGVtbyh2b2lkKQp7CgoJCgljb252ZXJ0QW5kUHJpbnQoNyk7CglwcmludGYoIlxuXG5cblxuIik7Cgljb252ZXJ0QW5kUHJpbnQoMTApOwoJCn0KCgppbnQgbWFpbih2b2lkKSB7Cgl3ZWlyZENvbnZlcnNpb25EZW1vKCk7CglyZXR1cm4gMDsKfQo=