matmul static method

Tensor2D matmul(
  1. Tensor2D a,
  2. Tensor2D b
)

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;
}