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.
      """returns the points to use for interpolating p"""
      if p >= 0.99:
          return 0.990, 0.995, 0.999
      elif p >= 0.975:
          return 0.975, 0.990, 0.995
      elif p >= 0.95:
          return 0.950, 0.975, 0.990
      elif p >= 0.9125:
          return 0.900, 0.950, 0.975
      elif p >= 0.875:
          return 0.850, 0.900, 0.950
      elif p >= 0.825:
          return 0.800, 0.850, 0.900
      elif p >= 0.7625:
          return 0.750, 0.800, 0.850
      elif p >= 0.675:
          return 0.675, 0.750, 0.800
      elif p >= 0.500:
          return 0.500, 0.675, 0.750
      else:
          return 0.100, 0.500, 0.675
  
file_path: statsmodels/statsmodels/stats/libqsturng/qsturng_.py
imports: from statsmodels.compat.python import lrange
  import math
  import scipy.stats
  import numpy
  from scipy.optimize import fminbound
label_desc: Use image node_id 5 for calling a global function with example usage: _select_ps(p) and returns: int,  int,  int, int,  int,  int, int,  int,  int, int,  int,  int, int,  int,  int, int,  int,  int, int,  int,  int, int,  int,  int, int,  int,  int, int,  int,  int