#include #include "ftime.h" #define SIZE 512 int a[SIZE][SIZE]; int b[SIZE][SIZE]; int c[SIZE][SIZE]; void init_matrix() { int i, j; for(i = 0; i < SIZE; i++) { for(j = 0; j < SIZE; j++) { scanf("%d %d", &a[i][j], &b[i][j]); } } } #ifdef SIMPLE void matmult() { int i, j, k; for(i = 0; i < SIZE; i++) { for(j = 0; j < SIZE; j++) { for(k = 0; k < SIZE; k++) { c[i][j] += a[i][k] * b[k][j]; } } } } #else void matmult() { int i, j, k; for(i = 0; i < SIZE; i++) { int *orig_pa = &a[i][0]; for(j = 0; j < SIZE; j++) { int *pa = orig_pa; int *pb = &a[0][j]; int sum = 0; for(k = 0; k < SIZE; k++) { sum += *pa * *pb; pa++; pb += SIZE; } c[i][j] = sum; } } } #endif int main(int arg, char **argv) { int i,j; init_matrix(); printf("Time = %f\n", ftime(matmult, 0.01)); return 0; }