function _matrixNorm (x, p) {
      // check p
      if (p === 1) {
        return _matrixNormOne(x)
      }
      if (p === Number.POSITIVE_INFINITY || p === 'inf') {
        return _matrixNormInfinity(x)
      }
      if (p === 'fro') {
        return _matrixNormFrobenius(x)
      }
      if (p === 2) {
        return _matrixNormTwo(x)
      } // invalid parameter value

      throw new Error('Unsupported parameter value ' + p)
    }
Calculate the norm for a 2D Matrix (M*N)
@param {Matrix} x
@param {number | string} p
@returns {number} Returns the norm
@private