code: def identity(N, dtype=hl.tfloat64):
      """
      Constructs a 2-D :class:`.NDArrayExpression` representing the identity array.
      The identity array is a square array with ones on the main diagonal.
  
      Examples
      --------
      >>> hl.eval(hl.nd.identity(3))
      array([[1., 0., 0.],
             [0., 1., 0.],
             [0., 0., 1.]])
  
      Parameters
      ----------
      n : :class:`.NumericExpression` or Python number
        Number of rows and columns in the output.
      dtype : numeric :class:`.HailType`, optional
        Element type of the returned array. Defaults to :py:data:`.tfloat64`
  
      Returns
      -------
      :class:`.NDArrayExpression`
          An (N, N) matrix with its main diagonal set to one, and all other elements 0.
  
      See Also
      --------
      :func:`.eye`
  
      """
      return eye(N, dtype=dtype)
  
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 17 for calling a global function with example usage: identity(N, dtype) and returns: eye