CS153/hw4/hw4programs/matrixmult.oat
jmug b24a264f7e Update hw4 to a newer version.
Signed-off-by: jmug <u.g.a.mariano@gmail.com>
2025-01-24 21:01:32 -08:00

69 lines
1.7 KiB
Text

/* http://www.edcc.edu/faculty/paul.bladek/Cmpsc142/matmult.htm */
int program(int argc, string[] argv)
{
var a = new int[][]{new int[]{1, 3, 4},
new int[]{2, 0, 1}};
var b = new int[][]{new int[]{1, 2, 3, 1},
new int[]{2, 2, 2, 2},
new int[]{3, 2, 1, 4}};
var c = new int[][]{new int[]{0, 0, 0, 0},
new int[]{0, 0, 0, 0}};
matrix_Mult(a, b, c);
prnNx4(c, 2);
matrix_MultAlt(a, b, c); /* alternate form that calls dot3 */
prnNx4(c, 2);
return 0;
}
/* http://www.edcc.edu/faculty/paul.bladek/Cmpsc142/matmult.htm */
void matrix_Mult(int[][] a1, int [][] a2, int [][] a3)
{
for(var i = 0; i < 2; i=i+1;) {
for(var j = 0; j < 4; j=j+1;) {
for(var k = 0; k < 3; k=k+1;) {
a3[i][j] = a3[i][j] + a1[i][k] * a2[k][j];
}
}
}
return;
}
/* http://www.edcc.edu/faculty/paul.bladek/Cmpsc142/matmult.htm */
void matrix_MultAlt(int[][] a1, int[][] a2, int[][] a3)
{
for(var i = 0; i < 2; i=i+1;) {
for(var j = 0; j < 4; j=j+1;) {
a3[i][j] = dot3(a1, a2, i, j);
}
}
return;
}
/* http://www.edcc.edu/faculty/paul.bladek/Cmpsc142/matmult.htm */
int dot3(int[][] a1, int[][] a2, int row, int col)
{
var sum = 0;
for(var k = 0; k < 3; k=k+1;) {
sum = sum + a1[row][k] * a2[k][col];
}
return sum;
}
/* http://www.edcc.edu/faculty/paul.bladek/Cmpsc142/matmult.htm */
void prnNx4 (int[][] ar, int n)
{
for(var i = 0; i < n; i=i+1;)
{
for(var j = 0; j < 4; j=j+1;)
{
print_int(ar[i][j]);
print_string (" ");
}
print_string("\t");
}
return;
}