#include <stdio.h>
#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;
}

