code: def prod(
      x: Union[(None, mx.ndarray.NDArray)],
      /,
      *,
      axis: Optional[Union[(int, Sequence[int])]] = None,
      dtype: Optional[None] = None,
      keepdims: bool = False,
      out: Optional[Union[(None, mx.ndarray.NDArray)]] = None,
  ) -> Union[(None, mx.ndarray.NDArray)]:
      dtype = ivy.as_native_dtype(dtype)
      if dtype is None:
          dtype = x.dtype
      if dtype != x.dtype and not ivy.is_bool_dtype(x):
          x = x.astype(dtype)
      if axis is None:
          num_dims = len(x.shape)
          axis = tuple(range(num_dims))
      elif isinstance(axis, Number):
          axis = (axis,)
      elif isinstance(axis, list):
          axis = tuple(axis)
      return mx.nd.prod(x, axis=axis, keepdims=keepdims).astype(dtype)
  
file_path: ivy/ivy/functional/backends/mxnet/statistical.py
imports: from typing import Union, Optional, Sequence
  import mxnet
  from numbers import Number
  from ivy.utils.exceptions import IvyNotImplementedException
  import ivy
label_desc: Use image node_id 4 for calling a global function with example usage: prod() and returns: mx