/* Evgenii B. Rudnyi, http://Evgenii.Rudnyi.Ru */ #include #include #include #define dim1 1000 #define dim2 1000 #define dim3 1000 int main() { double A[dim1*dim2], B[dim2*dim3], C[dim1*dim3]; int i, j, k; double start, finish; double maxr; srand(86456); maxr = (double)RAND_MAX; for (i = 0; i < dim1; i++) for (j = 0; j < dim2; j++) A[i + j*dim1] = rand()/maxr; for (i = 0; i < dim2; i++) for (j = 0; j < dim3; j++) B[i + j*dim2] = rand()/maxr; start = clock(); for (j = 0; j < dim3; j++) { for (i = 0; i < dim3; i++) C[i + j*dim1] = 0.; for (k = 0; k < dim2; k++) for (i = 0; i < dim1; i++) C[i + j*dim1] += A[i + k*dim1]*B[k + j*dim2]; } finish = clock(); printf("time for C(%d,%d) = A(%d,%d) B(%d,%d) is %f s\n", dim1, dim3, dim1, dim2, dim2, dim3, (finish - start)/CLK_TCK); return 0; }