/* $Id: cnt.c,v 1.3 2005/04/04 11:34:58 csg Exp $ */ /* sumcntmatrix.c */ //#include //#include // #define WORSTCASE 1 // #define MAXSIZE 100 Changed JG/Ebbe #define MAXSIZE 10 // Typedefs typedef int matrix [MAXSIZE][MAXSIZE]; // Forwards declarations int main(void); int Test(matrix); int Initialize(matrix); int InitSeed(void); void Sum(matrix); int RandomInteger(void); // Globals int Seed; matrix Array; int Postotal, Negtotal, Poscnt, Negcnt; // The main function int main (void) { InitSeed(); //printf("\n *** MATRIX SUM AND COUNT BENCHMARK TEST ***\n\n"); //printf("RESULTS OF THE TEST:\n"); Test(Array); return 1; } int Test(matrix Array) { long StartTime, StopTime; float TotalTime; Initialize(Array); StartTime = 1000.0; //ttime(); Sum(Array); StopTime = 1500.0; //ttime(); TotalTime = (StopTime - StartTime) / 1000.0; //printf(" - Size of array is %d\n", MAXSIZE); //printf(" - Num pos was %d and Sum was %d\n", Poscnt, Postotal); //printf(" - Num neg was %d and Sum was %d\n", Negcnt, Negtotal); //printf(" - Num neg was %d\n", Negcnt); //printf(" - Total sum time is %3.3f seconds\n\n", TotalTime); return 0; } // Intializes the given array with random integers. int Initialize(matrix Array) { register int OuterIndex, InnerIndex; for (OuterIndex = 0; OuterIndex < MAXSIZE; OuterIndex++) //100 + 1 for (InnerIndex = 0; InnerIndex < MAXSIZE; InnerIndex++) //100 + 1 Array[OuterIndex][InnerIndex] = RandomInteger(); return 0; } // Initializes the seed used in the random number generator. int InitSeed (void) { Seed = 0; return 0; } void Sum(matrix Array) { register int Outer, Inner; int Ptotal = 0; /* changed these to locals in order to drive worst case */ int Ntotal = 0; int Pcnt = 0; int Ncnt = 0; for (Outer = 0; Outer < MAXSIZE; Outer++) //Maxsize = 100 for (Inner = 0; Inner < MAXSIZE; Inner++) #ifdef WORSTCASE if (Array[Outer][Inner] >= 0) { #else if (Array[Outer][Inner] < 0) { #endif Ptotal += Array[Outer][Inner]; Pcnt++; } else { Ntotal += Array[Outer][Inner]; Ncnt++; } Postotal = Ptotal; Poscnt = Pcnt; Negtotal = Ntotal; Negcnt = Ncnt; } // This function returns in milliseconds the amount of compiler time //int ttime() //{ // struct tms buffer; //int utime; //times(&buffer); //utime = (buffer.tms_utime / 60.0) * 1000.0; //return (utime); //} // Generates random integers between 0 and 8095 int RandomInteger(void) { Seed = ((Seed * 133) + 81) % 8095; return Seed; }