code: def _bnd(self, xloc, left, right, cache):
          
          if isinstance(left, Dist):
              if left in cache:
                  left = cache[left]
              else:
                  left = evaluation.evaluate_bound(left, xloc, cache=cache)
          else:
              left = (numpy.array(left).T * numpy.ones((2,)+xloc.shape).T).T
  
          if isinstance(right, Dist):
              if right in cache:
                  right = cache[right]
              else:
                  right = evaluation.evaluate_bound(right, xloc, cache=cache)
          else:
              right = (numpy.array(right).T * numpy.ones((2,)+xloc.shape).T).T
  
          return left[0], right[1]
docs: Distribution bounds.
  
          Example:
              >>> print(chaospy.Uniform().range([-2, 0, 2, 4]))
              [[0. 0. 0. 0.]
               [1. 1. 1. 1.]]
              >>> print(chaospy.Trunc(chaospy.Uniform(), 0.6).range([-2, 0, 2, 4]))
              [[0.  0.  0.  0. ]
               [0.6 0.6 0.6 0.6]]
              >>> print(chaospy.Trunc(0.4, chaospy.Uniform()).range([-2, 0, 2, 4]))
              [[0.4 0.4 0.4 0.4]
               [1.  1.  1.  1. ]]