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


void Usage(void){
	printf("./ifbw <IF MHz>\n");
}


int main(int argc, char **argv){
	//(400 million hertz * (2 interfaces) * (64 lines/interface) * (2 bits/line-cycle)) = 102,400 Mbit/s, or 12,800 MB/s, or 12.8 GB/s.
	//Speed * Width * 2 / 8 = MB/s 
	if(argc != 2){
		Usage();
		exit(1);
	}
	double Speed = atof(argv[1]);
	double Width_per_direction = 16;
	//double 
	//double Prefetch = atof(argv[3]);
	double Bandwidth = 0;
	//double tmp = 0;
	//ddr  2-bit
	//ddr2 4-bit
	//ddr3 8-bit
	//DDR4 8-bit
	//GDDR5 also has 8-bit wide prefetch buffers

	printf("speed: %.03lfMHz bus-width:%.03lfbyte\n", Speed, Width_per_direction);

	Bandwidth = Width_per_direction;
	Bandwidth *= Speed/2;

	//Bandwidth = Prefetch/2;
	//Bandwidth *= Width;
	//Bandwidth /= 8;
	//Bandwidth *= Speed;


	printf("\t%.03lfMB/s\n", Bandwidth);
	printf("\t%.03lfGB/s\n", Bandwidth/1024);
	//1,048,576 / 1,000,000	

	//printf("%lf\n", log2(Bandwidth) );
	//tmp = 1000000;
	//tmp /= 1048576;
	//printf("%lf\n", tmp);
	//Bandwidth *= tmp;
	//printf("\t%lfMiB/s\n", Bandwidth);
	//tmp = 1024/1048576;
	//printf("\t%lfGiB/s\n", Bandwidth/1024);

	return 0;
}

