

#define DIM 20
#define DEBUG 0

int X[DIM][DIM],
    Y[DIM][DIM],
    Z[DIM][DIM];

Init()

{  int I,J;

   for (I = 0; I < DIM; I++)
      for (J = 0; J < DIM; J++)  {
         X[I][J] = I - J;
	 Y[I][J] = 2 * I - 3 * J;
      }
}

MultRowCol(R,C) /* multiplies row R of X by column C of Y, producing Z[R][C] */
   int R,C;

{  int K,Sum = 0;

   for (K = 0; K < DIM; K++)
      Sum += X[R][K] * Y[K][C];
   Z[R][C] = Sum;
}

Mult()  

{  int I,J;

   for (I = 0; I < DIM; I++)
      for (J = 0; J < DIM; J++)
         MultRowCol(I,J);
}

Print()

{  int I,J;

   for (I = 0; I < DIM; I++)
      for (J = 0; J < DIM; J++)
         printf("%d\n",Z[I][J]);
}

main()

{  Init();
   Mult();
   if (DEBUG) Print();  
}

