operator * method

FLeftMatrix operator *(
  1. FRightMatrix right
)

Implementation

FLeftMatrix operator *(FRightMatrix right) {
  assert(right.nRows == this.nColumns);
  FLeftMatrix result = FLeftMatrix.zero(right.nColumns, this.nRows);
  for (int r = 0; r < this.nRows; ++r) {
    Float32List resultRow = result.rowsData[r].buffer.asFloat32List();
    for (int c = 0; c < right.nColumns; ++c) {
      Float32x4 sum = Float32x4.zero();
      Float32x4List leftRow = this.rowsData[r];
      Float32x4List rightColumn = right.columnsData[c];
      for (int i = 0; i < leftRow.length; ++i) {
        sum += leftRow[i] * rightColumn[i];
      }
      resultRow[c] = sum.x + sum.y + sum.z + sum.w;
    }
  }
  return result;
}