def _bnd(self, xloc, cache, **kwargs):
        """
        Example:
            >>> dist = chaospy.J(chaospy.Uniform(), chaospy.Normal())
            >>> print(dist.range([[-0.5, 0.5, 1.5], [-1, 0, 1]]))
            [[[ 0.   0.   0. ]
              [-7.5 -7.5 -7.5]]
            <BLANKLINE>
             [[ 1.   1.   1. ]
              [ 7.5  7.5  7.5]]]
            >>> d0 = chaospy.Uniform()
            >>> dist = chaospy.J(d0, d0+chaospy.Uniform())
            >>> print(dist.range([[-0.5, 0.5, 1.5], [0, 1, 2]]))
            [[[ 0.   0.   0. ]
              [-0.5  0.5  1.5]]
            <BLANKLINE>
             [[ 1.   1.   1. ]
              [ 0.5  1.5  2.5]]]
        """
        uloc = numpy.zeros((2,)+xloc.shape)
        for dist in evaluation.sorted_dependencies(self, reverse=True):
            if dist not in self.inverse_map:
                continue
            idx = self.inverse_map[dist]
            xloc_ = xloc[idx].reshape(1, -1)
            uloc[:, idx] = evaluation.evaluate_bound(
                dist, xloc_, cache=cache)[:, 0]
            cache[dist] = xloc_
        return uloc