matmul static method
Implementation
static Tensor2D matmul(Tensor2D a, Tensor2D b) {
if (a.cols != b.rows) {
throw ArgumentError(
'matmul mismatch: (${a.rows},${a.cols}) x (${b.rows},${b.cols})');
}
final out = Tensor2D.zeros(a.rows, b.cols);
final aCols = a.cols;
final bCols = b.cols;
final ad = a.data;
final bd = b.data;
final od = out.data;
for (var i = 0; i < a.rows; i++) {
final ai = i * aCols;
final oi = i * bCols;
for (var k = 0; k < aCols; k++) {
final aik = ad[ai + k];
final bk = k * bCols;
for (var j = 0; j < bCols; j++) {
od[oi + j] += aik * bd[bk + j];
}
}
}
return out;
}