docs: def mlinspace(a, b, nums, order='C'):
      '''
      Constructs a regular cartesian grid
  
      Parameters
      ----------
      a : array_like(ndim=1)
          lower bounds in each dimension
  
      b : array_like(ndim=1)
          upper bounds in each dimension
  
      nums : array_like(ndim=1)
          number of nodes along each dimension
  
      order : str, optional(default='C')
          ('C' or 'F') order in which the product is enumerated
  
      Returns
      -------
      out : ndarray(ndim=2)
          each line corresponds to one point of the product space
      '''
  
      a = np.array(a, dtype='float64')
      b = np.array(b, dtype='float64')
      nums = np.array(nums, dtype='int64')
      nodes = [np.linspace(a[i], b[i], nums[i]) for i in range(len(nums))]
  
      return cartesian(nodes, order=order)