code: def _ppf(self, q, left, right, cache):
          
          left = evaluation.get_inverse_cache(left, cache)
          right = evaluation.get_inverse_cache(right, cache)
  
          if isinstance(left, Dist):
              if isinstance(right, Dist):
                  raise StochasticallyDependentError(
                      "under-defined distribution {} or {}".format(left, right))
          elif not isinstance(right, Dist):
              return left**right
  
          else:
              out = evaluation.evaluate_inverse(right, q, cache=cache)
              out = numpy.where(left < 0, 1-out, out)
              out = left**out
              return out
  
          right = right + numpy.zeros(q.shape)
          q = numpy.where(right < 0, 1-q, q)
          out = evaluation.evaluate_inverse(left, q, cache=cache)**right
          return out
docs: Point percentile function.
  
          Example:
              >>> print(chaospy.Uniform().inv([0.1, 0.2, 0.9]))
              [0.1 0.2 0.9]
              >>> print(chaospy.Pow(chaospy.Uniform(), 2).inv([0.1, 0.2, 0.9]))
              [0.01 0.04 0.81]
              >>> print(chaospy.Pow(chaospy.Uniform(1, 2), -1).inv([0.1, 0.2, 0.9]))
              [0.52631579 0.55555556 0.90909091]
              >>> print(chaospy.Pow(2, chaospy.Uniform()).inv([0.1, 0.2, 0.9]))
              [1.07177346 1.14869835 1.86606598]
              >>> print(chaospy.Pow(2, chaospy.Uniform(-1, 0)).inv([0.1, 0.2, 0.9]))
              [0.53588673 0.57434918 0.93303299]
              >>> print(chaospy.Pow(2, 3).inv([0.1, 0.2, 0.9]))
              [8. 8. 8.]