# matrixDot function Null safety

Array2d matrixDot(
1. Array2d a,
)

Multiply two matrix

# References

1. "Matrix multiplication using arrays". https://stackoverflow.com/questions/17623876/matrix-multiplication-using-arrays. Retrieved 2019-07-15.

# Examples

``````var a = Array2d([
Array([4, 2, 1]),
Array([16, 4, 1]),
Array([64, 8, 1])
]);
b = Array2d([
Array([1]),
Array([1]),
Array([1])
]);

print(matrixDot(a, b));

/* output:
Array2d([
Array([7]),
Array([21]),
Array([73])
]);
*/
``````

## Implementation

``````Array2d matrixDot(Array2d a, Array2d b) {
a.isMatrix();
b.isMatrix();

var aRows = a.length;
var aColumns = a[0].length;
var bRows = b.length;
var bColumns = b[0].length;

if (aColumns != bRows) {
throw FormatException('A:Columns: \$aColumns did not match B:Rows \$bRows.');
}

var c = Array2d.fixed(aRows, bColumns, initialValue: 0.0);

for (var i = 0; i < aRows; i++) {
// aRow
for (var j = 0; j < bColumns; j++) {
// bColumn
for (var k = 0; k < aColumns; k++) {
// aColumn
c[i][j] += (a[i][k] * b[k][j]);
}
}
}

return c;
}``````