code: def full(shape, val, ctx=None, dtype=mx_real_t, out=None):
      
      out = empty(shape, ctx, dtype) if out is None else out
      out[:] = val
      return out
docs: Returns a new array of given shape and type, filled with the given value `val`.
  
      Parameters
      --------
      shape : int or tuple of int
          The shape of the new array.
      val : scalar
          Fill value.
      ctx : Context, optional
          Device context (default is the current default context).
      dtype : `str` or `numpy.dtype`, optional
          The data type of the returned `NDArray`. The default datatype is `float32`.
      out : NDArray, optional
          The output NDArray (default is `None`).
  
      Returns
      -------
      NDArray
          `NDArray` filled with `val`, with the given shape, ctx, and dtype.
  
      Examples
      --------
      >>> mx.nd.full(1, 2.0).asnumpy()
      array([ 2.], dtype=float32)
      >>> mx.nd.full((1, 2), 2.0, mx.gpu(0))
      <NDArray 1x2 @gpu(0)>
      >>> mx.nd.full((1, 2), 2.0, dtype='float16').asnumpy()
      array([[ 2.,  2.]], dtype=float16)