docstr: Gives the entrywise `p`-norm of an iterable *x*, i.e. the vector norm
  `\left(\sum_k |x_k|^p\right)^{1/p}`, for any given `1 \le p \le \infty`.
  
  Special cases:
  
  If *x* is not iterable, this just returns ``absmax(x)``.
  
  ``p=1`` gives the sum of absolute values.
  
  ``p=2`` is the standard Euclidean vector norm.
  
  ``p=inf`` gives the magnitude of the largest element.
  
  For *x* a matrix, ``p=2`` is the Frobenius norm.
  For operator matrix norms, use :func:`~mpmath.mnorm` instead.
  
  You can use the string 'inf' as well as float('inf') or mpf('inf')
  to specify the infinity norm.
  
  **Examples**
  
      >>> from mpmath import *
      >>> mp.dps = 15; mp.pretty = False
      >>> x = matrix([-10, 2, 100])
      >>> norm(x, 1)
      mpf('112.0')
      >>> norm(x, 2)
      mpf('100.5186549850325')
      >>> norm(x, inf)
      mpf('100.0')
docstr_tok: ["Gives","the","entrywise","`","p","`","-norm","of","an","iterable","*","x","*",",","i.e",".","the","vector","norm","`","\\left","(","\\sum_k","|x_k|^p\\right",")","^","{","1\/p","}","`",",","for","any","given","`","1","\\le","p","\\le","\\infty","`",".","Special","cases",":","If","*","x","*","is","not","iterable",",","this","just","returns","``","absmax","(","x",")","``",".","``","p=1","``","gives","the","sum","of","absolute","values",".","``","p=2","``","is","the","standard","Euclidean","vector","norm",".","``","p=inf","``","gives","the","magnitude","of","the","largest","element",".","For","*","x","*","a","matrix",",","``","p=2","``","is","the","Frobenius","norm",".","For","operator","matrix","norms",",","use",":","func",":","`","~mpmath.mnorm","`","instead",".","You","can","use","the","string","'inf","'","as","well","as","float","(","'inf","'",")","or","mpf","(","'inf","'",")","to","specify","the","infinity","norm",".","*","*","Examples","*","*",">",">",">","from","mpmath","import","*",">",">",">","mp.dps","=","15",";","mp.pretty","=","False",">",">",">","x","=","matrix","(","[","-10",",","2",",","100","]",")",">",">",">","norm","(","x",",","1",")","mpf","(","'112.0","'",")",">",">",">","norm","(","x",",","2",")","mpf","(","'100.5186549850325","'",")",">",">",">","norm","(","x",",","inf",")","mpf","(","'100.0","'",")"]
code: def norm(ctx, x, p=2):
      r"""
      Gives the entrywise `p`-norm of an iterable *x*, i.e. the vector norm
      `\left(\sum_k |x_k|^p\right)^{1/p}`, for any given `1 \le p \le \infty`.
  
      Special cases:
  
      If *x* is not iterable, this just returns ``absmax(x)``.
  
      ``p=1`` gives the sum of absolute values.
  
      ``p=2`` is the standard Euclidean vector norm.
  
      ``p=inf`` gives the magnitude of the largest element.
  
      For *x* a matrix, ``p=2`` is the Frobenius norm.
      For operator matrix norms, use :func:`~mpmath.mnorm` instead.
  
      You can use the string 'inf' as well as float('inf') or mpf('inf')
      to specify the infinity norm.
  
      **Examples**
  
          >>> from mpmath import *
          >>> mp.dps = 15; mp.pretty = False
          >>> x = matrix([-10, 2, 100])
          >>> norm(x, 1)
          mpf('112.0')
          >>> norm(x, 2)
          mpf('100.5186549850325')
          >>> norm(x, inf)
          mpf('100.0')
  
      """
      try:
          iter(x)
      except TypeError:
          return ctx.absmax(x)
      if type(p) is not int:
          p = ctx.convert(p)
      if p == ctx.inf:
          return max(ctx.absmax(i) for i in x)
      elif p == 1:
          return ctx.fsum(x, absolute=1)
      elif p == 2:
          return ctx.sqrt(ctx.fsum(x, absolute=1, squared=1))
      elif p > 1:
          return ctx.nthroot(ctx.fsum(abs(i) ** p for i in x), p)
      else:
          raise ValueError("p has to be >= 1")
  
imports: from ..libmp.backend import xrange
  import warnings
label_desc: Use image node_id 10 for calling the MatrixMethods obj's underlying member method code with example usage: obj.norm(ctx, x, p) and returns: max, ctx, ctx, ctx, ctx