/*-------------------------------------- | TestCPUmath.c | | | | C++ Source File | | Programming by YILMAZ YORU | | All Rights Reserved. Copyright 2004 | --------------------------------------*/ #include #include #include //#define SCALE (1000) #ifdef CLOCKS_PER_SEC #define TIMER_INTERVAL CLOCKS_PER_SEC #else #ifdef CLK_TCK #define TIMER_INTERVAL define CLK_TCK #else #define TIMER_INTERVAL (100) //Amiga=100, PC=1000 #endif #endif #pragma hdrstop #pragma argsused int SCALE=1000; long int i,j; long int t; long int x=100,y=55,z=999,q; double R[10],fi,fj,fx,fy,fz=999.999,f=3.14151602; void start_test(char *title) { printf("%s", title); q=clock(); } void end_test(int tn) { t=clock()-q; printf("%8.3f sec. %10.3f MOPS\n",(float)t/TIMER_INTERVAL, (float)SCALE*TIMER_INTERVAL/t); R[tn]=(float)SCALE*TIMER_INTERVAL/t; } int main(int argc, char* argv[]) { printf("TestCPUmath CPU Test Program 0.3 by YILMAZ YORU\n"); printf("SCALE (Number of MOPS, Default=1000) :"); scanf("%d",&SCALE); if(SCALE<=0) SCALE=10; printf("\nWait please ...\n"); for(j=1; j<=100; j++) { for(i=1; i<=1000000; i++) x=i+z; } start_test("Test-1:Long Int Add ..."); for(j=1; j<=SCALE; j++) { for(i=1; i<=1000000; i++) x=i+z; } end_test(0); start_test("Test-2:Long Int Sub ..."); for(j=1; j<=SCALE; j++) { for(i=1; i<=1000000; i++) x=i-z; } end_test(1); start_test("Test-3:Long Int Mul ..."); for(j=1; j<=SCALE; j++) { for(i=1; i<=1000000; i++) x=j*z; } end_test(2); start_test("Test-4:Long Int Div ..."); for(j=1; j<=SCALE; j++) { for(i=1; i<=1000000; i++) x=i/j; } end_test(3); printf("\n"); start_test("Test-5:Double Float Add ..."); for(fj=1; fj<=SCALE; fj++) { for(fi=1; fi<=1000000; fi++) fx=fi+fz; } end_test(4); start_test("Test-6:Double Float Sub ..."); for(fj=1; fj<=SCALE; fj++) { for(fi=1; fi<=1000000; fi++) fx=fi-fz; } end_test(5); start_test("Test-7:Double Float Mul ..."); for(fj=1; fj<=SCALE; fj++) { for(fi=1; fi<=1000000; fi++) fx=fj*fz; } end_test(6); start_test("Test-8:Double Float Div ..."); for(fj=1; fj<=SCALE; fj++) { for(fi=1; fi<=1000000; fi++) fx=fi/fz; } end_test(7); printf("SCORE=%10.3f MOPS\n", (R[0]+R[1]+R[2]+R[3]+R[4]+R[5]+R[6]+R[7])/8.0); scanf("Test Done.%d",&SCALE); for(fj=1; fj<=SCALE; fj++) { for(fi=1; fi<=1000000; fi++) fx=fi/fz; } return 0; } //---------------------------------------------------------------------------