code: def _select_ps(p):
      # There are more generic ways of doing this but profiling
      # revealed that selecting these points is one of the slow
      # things that is easy to change. This is about 11 times
      # faster than the generic algorithm it is replacing.
      #
      # it is possible that different break points could yield
      # better estimates, but the function this is refactoring
      # just used linear distance.
      
      if p >= .99:
          return .990, .995, .999
      elif p >= .975:
          return .975, .990, .995
      elif p >= .95:
          return .950, .975, .990
      elif p >= .9125:
          return .900, .950, .975
      elif p >= .875:
          return .850, .900, .950
      elif p >= .825:
          return .800, .850, .900
      elif p >= .7625:
          return .750, .800, .850
      elif p >= .675:
          return .675, .750, .800
      elif p >= .500:
          return .500, .675, .750
      else:
          return .100, .500, .675
docs: returns the points to use for interpolating p