code: def inv(nd):
      """Performs a matrix inversion.
  
      Parameters
      ----------
  
      nd : :class:`.NDArrayNumericExpression`
          A 2 dimensional ndarray.
  
      Returns
      -------
      :class:`.NDArrayNumericExpression`
          The inverted matrix.
      """
  
      assert (
          nd.ndim == 2
      ), "Matrix inversion requires 2 dimensional ndarray"
  
      float_nd = nd.map(lambda x: hl.float64(x))
      ir = NDArrayInv(float_nd._ir)
      return construct_expr(
          ir, tndarray(tfloat64, 2), nd._indices, nd._aggregations
      )
  
imports: from functools import reduce
  import hail
  from hail.expr.functions import _ndarray
  from hail.expr.functions import array
  from hail.expr.types import HailType, tfloat64, tfloat32, ttuple, tndarray
  from hail.typecheck import typecheck, nullable, oneof, tupleof, sequenceof
  from hail.expr.expressions import expr_int32, expr_int64, expr_tuple, expr_any, expr_array, expr_ndarray, expr_numeric, Int64Expression, cast_expr, construct_expr, expr_bool, unify_all
  from hail.expr.expressions.typed_expressions import NDArrayNumericExpression
  from hail.ir import NDArrayQR, NDArrayInv, NDArrayConcat, NDArraySVD, NDArrayEigh, Apply
label_desc: Use image node_id 14 for calling a global function with example usage: inv(nd) and returns: construct_expr