code: def uniform_discr_fromintv(intv_prod, shape, dtype=None, impl='numpy',
                             **kwargs):
      
      if dtype is None:
          dtype = tensor_space_impl(str(impl).lower()).default_dtype()
  
      fspace = FunctionSpace(intv_prod, out_dtype=dtype)
      return uniform_discr_fromspace(fspace, shape, dtype, impl, **kwargs)
docs: Return a uniformly discretized L^p function space.
  
      Parameters
      ----------
      intv_prod : `IntervalProd`
          Function domain of the uniformly discretized space.
      shape : int or sequence of ints
          Number of samples per axis.
      dtype : optional
          Data type for the discretized space, must be understood by the
          `numpy.dtype` constructor. The default for ``None`` depends on the
          ``impl`` backend, usually it is ``'float64'`` or ``'float32'``.
      impl : str, optional
          Implementation of the data storage arrays.
      kwargs :
          Additional keyword parameters, see `uniform_discr` for details.
  
      Returns
      -------
      discr : `DiscreteLp`
          The uniformly discretized function space
  
      Examples
      --------
      >>> intv = IntervalProd(0, 1)
      >>> uniform_discr_fromintv(intv, 10)
      uniform_discr(0.0, 1.0, 10)
  
      See Also
      --------
      uniform_discr : implicit uniform Lp discretization
      uniform_discr_frompartition : uniform Lp discretization using a given
          uniform partition of a function domain
      uniform_discr_fromspace : uniform discretization from an existing
          function space