// For GCC and Clang #include #include #include #include void parseH(char *p); void parseL(char *p); void matrix_multiplication(int n) { int **a = malloc(n * sizeof(int *)); int **b = malloc(n * sizeof(int *)); int **c = malloc(n * sizeof(int *)); for (int i = 0; i < n; i++) { a[i] = malloc(n * sizeof(int)); b[i] = malloc(n * sizeof(int)); c[i] = malloc(n * sizeof(int)); for (int j = 0; j < n; j++) { a[i][j] = rand() % 100; b[i][j] = rand() % 100; c[i][j] = 0; } } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { for (int k = 0; k < n; k++) { c[i][j] += a[i][k] * b[k][j]; } } } for (int i = 0; i < n; i++) { free(a[i]); free(b[i]); free(c[i]); } free(a); free(b); free(c); } int main(int argc, char *argv[]) { // Start measuring time struct timespec begin, end; clock_gettime(CLOCK_REALTIME, &begin); // END matrix_multiplication(1500); // Stop measuring time and calculate the elapsed time clock_gettime(CLOCK_REALTIME, &end); long seconds = end.tv_sec - begin.tv_sec; long nanoseconds = end.tv_nsec - begin.tv_nsec; double elapsed = seconds + nanoseconds * 1e-9; printf("Time measured: %.10f seconds.\n", elapsed); // return 0; }