// $Id: matrix.ici,v 1.0 2003/01/03 11:58:00 dada Exp $
// http://dada.perl.it/shootout
//
// contributed by Tim Long
static
mkmatrix(rows, cols)
{
m = build(rows, cols);
count = 0;
forall (col in m)
{
forall (val, i in col)
col[i] = ++count;
}
return m;
}
static
mmult(rows, cols, m1, m2, m3)
{
forall (col, i in m3)
{
m1i = m1[i];
forall (val, j in col)
{
val = 0;
forall (m1ik, k in m1i)
val += m1ik * m2[k][j];
col[j] = val;
}
}
}
SIZE := 30;
n := argv[1] ? int(argv[1]) : 1;
m1 := mkmatrix(SIZE, SIZE);
m2 := mkmatrix(SIZE, SIZE);
mm := build(SIZE, SIZE);
for (i = 0; i < n; ++i)
mmult(SIZE, SIZE, m1, m2, mm);
printf("%d %d %d %d\n", mm[0][0], mm[2][3], mm[3][2], mm[4][4]);