#include #include #include #include void MatrixMult(int *A, int *B, int *C, int n) { for (int i = 0 ; i < n ; i++) { for (int j = 0 ; j < n ; j++) { int sum = 0 ; for (int k = 0 ; k < n ; k++) { sum += A[i*n+k] * B[k*n+j] ; } C[i*n+j] = sum ; } } } int main() { int n = 1000 ; int *A = new int[n*n] ; int *B = new int[n*n] ; int *C = new int[n*n] ; struct timeval tp; gettimeofday(&tp, NULL); long int ms = tp.tv_sec * 1000 + tp.tv_usec / 1000; printf("Random seed set to: %ld\n\n", ms) ; srand(ms) ; // other uses for (int i=0 ; i < n*n ; i++) { A[i] = rand()%100 + 1 ; B[i] = rand()%100 + 1 ; } gettimeofday(&tp, NULL); double beginTime = tp.tv_sec * 1000.0 + tp.tv_usec / 1000.0; printf("Start time = %lf ms\n\n", beginTime) ; MatrixMult(A,B,C,n) ; gettimeofday(&tp, NULL); double endTime = tp.tv_sec * 1000.0 + tp.tv_usec / 1000.0; printf("Start time = %lf ms\n", endTime) ; printf("Elapsed time = %lf ms\n", endTime - beginTime) ; /* for (int i=0 ; i < n ; i++) { for (int j=0 ; j < n ; j++) { printf("%3d", A[i*n+j]) ; } printf(" ") ; for (int j=0 ; j < n ; j++) { printf("%3d", B[i*n+j]) ; } printf(" ") ; for (int j=0 ; j < n ; j++) { printf("%3d ", C[i*n+j]) ; } printf("\n") ; } */ delete [] A ; delete [] B ; delete [] C ; return 0 ; }