function broadcast (A, B) {
  if (deepStrictEqual(A.size(), B.size())) {
    // If matrices have the same size return them
    return [A, B]
  }

  // calculate the broadcasted sizes
  const newSize = broadcastSizes(A.size(), B.size())

  // return the array with the two broadcasted matrices
  return [A, B].map(M => _broadcastTo(M, newSize))
}
Broadcasts two matrices, and return both in an array
It checks if it's possible with broadcasting rules

@param {Matrix}   A      First Matrix
@param {Matrix}   B      Second Matrix

@return {Matrix[]}      [ broadcastedA, broadcastedB ]