/* Toy Matrix Addition program */ #include #define SIZE 124 long a[SIZE][SIZE], b[SIZE][SIZE], c[SIZE][SIZE]; void madd() { int i, j; for (j=0; j < SIZE; j++) { for (i=0; i < SIZE; i++) { c[i][j] = b[i][j] + a[i][j]; } } } void main(void) { int i, j; long result; fprintf(stderr, "Starting Matrix Addition; each array = %ld bytes", SIZE*SIZE*8); /* init a & b arrays */ for (j=0; j < SIZE; j++) { for (i=0; i < SIZE; i++) { a[i][j] = 10000 * i + j; b[i][j] = 20000 * i + j; } } /* call matrix addition twice */ madd(); madd(); /* print sum of result elements to foil smart optimizers */ result = 0; for (j=0; j < SIZE; j++) { for (i=0; i < SIZE; i++) { result += a[i][j]; } } fprintf(stderr, "\nDone; sum=%ld\n", result); }