code: def broadcast_to(self, shape):
          
          cur_shape = self.shape
          err_str = 'operands could not be broadcast together with remapped shapes' \
                    '[original->remapped]: {} and requested shape {}'.format(cur_shape, shape)
          if len(shape) < len(cur_shape):
              raise ValueError(err_str)
          cur_shape = (1,) * (len(shape) - len(cur_shape)) + cur_shape
          cur_shape_arr = np.array(cur_shape)
          broadcasting_axes = np.nonzero(cur_shape_arr != np.array(shape))
          if (cur_shape_arr[broadcasting_axes] != 1).any():
              raise ValueError(err_str)
          if cur_shape != self.shape:
              return op.broadcast_to(self.reshape(cur_shape), shape=shape)
          else:
              return op.broadcast_to(self, shape=tuple(shape))
docs: Broadcasts the input array to a new shape.
  
          Broadcasting is only allowed on axes with size 1. The new shape cannot change
          the number of dimensions.
          For example, you could broadcast from shape (2, 1) to (2, 3), but not from
          shape (2, 3) to (2, 3, 3).
  
          Parameters
          ----------
          shape : tuple of int
              The shape of the desired array.
  
          Returns
          -------
          NDArray
              A NDArray with the desired shape that is not sharing data with this
              array, even if the new shape is the same as ``self.shape``.
  
          Examples
          --------
          >>> x = mx.nd.arange(0,3).reshape((1,3,1))
          >>> x.asnumpy()
          array([[[ 0.],
                  [ 1.],
                  [ 2.]]], dtype=float32)
          >>> y = x.broadcast_to((2,3,3))
          >>> y.asnumpy()
          array([[[ 0.,  0.,  0.],
                  [ 1.,  1.,  1.],
                  [ 2.,  2.,  2.]],
          <BLANKLINE>
                 [[ 0.,  0.,  0.],
                  [ 1.,  1.,  1.],
                  [ 2.,  2.,  2.]]], dtype=float32)