# $Id: matrix.mawk,v 1.1 2001/05/20 06:59:20 doug Exp $ # http://www.bagley.org/~doug/shootout/ function mkmatrix(mx, rows, cols) { count = 1; for (i=0; i<rows; i++) { for (j=0; j<cols; j++) { mx[i,j] = count++; } } } function mmult(rows, cols, m1, m2, m3) { for (i=0; i<rows; i++) { for (j=0; j<cols; j++) { val = 0; for (k=0; k<cols; k++) { val += m1[i,k] * m2[k,j]; } m3[i,j] = val; } } } BEGIN { n = (ARGV[1] < 1) ? 1 : ARGV[1]; size = 30; m1[0,0] = 0; m2[0,0] = 0; mkmatrix(m1, size, size); mkmatrix(m2, size, size); mm[0,0] = 0; for (l=0; l<n; l++) { mmult(size, size, m1, m2, mm); } printf("%d %d %d %d\n", mm[0,0], mm[2,3], mm[3,2], mm[4,4]); exit; }