code: def points_for_x(self, x):
          
          p = self._p
          alpha = (pow(x, 3, p) + self._a * x + self._b) % p
          y0 = self.modular_sqrt(alpha)
          if y0 == 0:
              raise ValueError("no y value for %d" % x)
          p0, p1 = [self.Point(x, _) for _ in (y0, p - y0)]
          if y0 & 1 == 0:
              return (p0, p1)
          return (p1, p0)
docs: :param: x: an integer x coordinate
          :return: (p0, p1) where each p is a :class:`Point` with given x coordinate,
              and p0's y value is even.
  
          To get a point with particular parity, use
          ::
              points_for_x(x)[1 if is_y_supposed_to_be_odd else 0]