#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
#include <math.h>

int main(int argc, char **argv){
	uint32_t binsize = 125480;
	uint32_t intensity = (uint32_t)pow(2, 21);
	uint32_t workg = 256;
	uint32_t cu = 20;
	uint32_t wavefronts = 4;
	uint32_t tc;
	uint32_t mem_size = (uint32_t)pow(2, 30);
	uint32_t iptlg = 65536;
	uint32_t tmp1;
	uint32_t tmp2;


//double pow (double base, double exponent);

	printf("binsize: %u\n", binsize);
	printf("mem_size: %u\n", mem_size);
	printf("iptlg: %u\n", iptlg);
	printf("intensity: %u\n", intensity);
	printf("workgroup: %u\n", workg);
	printf("cu: %u\n", cu);
	printf("wavefronts/cu: %u\n", wavefronts);
	//printf("binsize: %u\n", binsize);

	//tmp1 = binsize*cu*wavefronts;
	tmp1 = binsize*cu;
	printf("program usage: %u\n", tmp1);
	tmp2 = binsize*intensity;
	printf("program usage total: %u\n", tmp2);

	tc = mem_size/iptlg;
	printf("tc: %u\n", tc);
	tc = (mem_size - tmp1)/iptlg;
	printf("tc minus program: %u\n", tc);
//	tc = (mem_size - tmp2)/iptlg;
//	printf("tc minus program total: %u\n", tc);
//	tmp2 = binsize*64*cu;
//	tc = (mem_size - tmp2)/iptlg;
//	printf("tc minus program *64*cu: %u\n", tc);

printf("suggested tc: %u\n", tc);
printf("suggested I options: %u %u %u\n", tc*64, tc*128, tc*256);




	return 0;
}



