code: def getDeltaLogLike(self, dlnl, upper=True):
          
          mle_val = self.mle()
          # A little bit of paranoia to avoid zeros
          if mle_val <= 0.:
              mle_val = self._interp.xmin
          if mle_val <= 0.:
              mle_val = self._interp.x[1]
          log_mle = np.log10(mle_val)
          lnl_max = self.fn_mle()
  
          # This ultra-safe code to find an absolute maximum
          # fmax = self.fn_mle()
          # m = (fmax-self.interp.y > 0.1+dlnl) & (self.interp.x>self._mle)
  
          # if sum(m) == 0:
          #    xmax = self.interp.x[-1]*10
          # else:
          #    xmax = self.interp.x[m][0]
  
          # Matt has found that it is faster to use an interpolator
          # than an actual root-finder to find the root,
          # probably b/c of python overhead.
          # That would be something like this:
          # rf = lambda x: self._interp(x)+dlnl-lnl_max
          # return opt.brentq(rf,self._mle,self._interp.xmax,
          #                   xtol=1e-10*np.abs(self._mle))
          if upper:
              x = np.logspace(log_mle, np.log10(self._interp.xmax), 100)
              retVal = np.interp(dlnl, self.interp(x) - lnl_max, x)
          else:
              x = np.linspace(self._interp.xmin, self._mle, 100)
              retVal = np.interp(dlnl, self.interp(x)[::-1] - lnl_max, x[::-1])
  
          return retVal
docs: Find the point at which the log-likelihood changes by a
          given value with respect to its value at the MLE.