def __contains__(self, k):
        m = self.__m

        if (k[1]**2 > 4 * m * k[0] + m**2
                if self.__weak_forms else k[1]**2 > 4 * m * k[0]):
            return False

        if k[0] < self.__bound:
            return True
        elif self.__reduced:
            return creduce(k, m)[0][0] < self.__bound

        return False
 def __contains__(self, k) :
     m = self.__m
     
     if ( k[1]**2 > 4 * m * k[0] + m**2
          if self.__weak_forms
          else k[1]**2 > 4 * m * k[0] ) :
         return False
     
     if k[0] < self.__bound :
         return True
     elif self.__reduced :
         return creduce(k, m)[0][0] < self.__bound
     
     return False
    def __contains__(self, k):
        m = self.__m

        if k[0] < 0:
            return False

        if not self.__weak_forms and k[1]**2 > 4 * m * k[0]:
            return False

        if not self.__reduced and k[0] >= self.__bound:
            return False

        kred = creduce(k, m)[0]
        if k[0] >= self.__bound:
            return False

        if self.__weak_forms and k[0] < 0:
            return False

        return True
    def __contains__(self, k) :
        m = self.__m
        
        if k[0] < 0 :
            return False

        if not self.__weak_forms and k[1]**2 > 4 * m * k[0] :
            return False
        
        if not self.__reduced and k[0] >= self.__bound :
            return False
        
        kred = creduce(k, m)[0]
        if k[0] >= self.__bound :
            return False
        
        if self.__weak_forms and k[0] < 0 :
            return False
                
        return True
 def reduce(self, s):
     return creduce(s, self.__m)
 def _reduction_function(self):
     return lambda k: creduce(k, self.__m)
 def reduce(self, s) :
     return creduce(s, self.__m)
 def _reduction_function(self) :
     return lambda k: creduce(k, self.__m)