#include <stdio.h>
#define COLS1 3
#define COLS2 2
int main()
{
int matrix1[][COLS1] = { {4, 2, 4},
{8, 3, 1} };
int matrix2[][COLS2] = { {3, 5},
{2, 8},
{7, 9} };
int mul[][COLS2] = { {0, 0},
{0, 0} };
int rows1 = sizeof(matrix1) / sizeof(matrix1[0]);
int cols2 = sizeof(matrix2[0]) / sizeof(matrix2[0][0]);
// mul[0][0] = m1[0][0] * m2[0][0] + m1[0][1] * m2[1][0] + m1[0][2] * m2[2][0]
for (int i = 0; i < rows1; i++) {
for (int j = 0; j < cols2; j++) {
for (int k = 0; k < COLS1; k++) {
mul[i][j] += matrix1[i][k] * matrix2[k][j];
printf("mul[%d][%d] += m1[%d][%d] * m2[%d][%d]\n", i, j, i, k, k, j);
}
printf("\n");
}
}
for (int i = 0; i < COLS2; i++) {
for (int j = 0; j < COLS2; j++)
printf("%3d", mul[i][j]);
printf("\n");
}
return 0;
}
/*
run:
mul[0][0] += m1[0][0] * m2[0][0]
mul[0][0] += m1[0][1] * m2[1][0]
mul[0][0] += m1[0][2] * m2[2][0]
mul[0][1] += m1[0][0] * m2[0][1]
mul[0][1] += m1[0][1] * m2[1][1]
mul[0][1] += m1[0][2] * m2[2][1]
mul[1][0] += m1[1][0] * m2[0][0]
mul[1][0] += m1[1][1] * m2[1][0]
mul[1][0] += m1[1][2] * m2[2][0]
mul[1][1] += m1[1][0] * m2[0][1]
mul[1][1] += m1[1][1] * m2[1][1]
mul[1][1] += m1[1][2] * m2[2][1]
44 72
37 73
*/