def test_gf2m_mod__neg(self):
        """ Negative tests for gf2m_mod(a,f) """
        # Not meant to be called with other values than int or long
        self.failUnlessRaises(AttributeError, ar.gf2m_mod, 0.0, 0b110)
        self.failUnlessRaises(TypeError, ar.gf2m_mod, "asdf", 0b110)

        self.failUnlessEqual(ar.gf2m_mod(-0b101110, 0b10011), 0b1000)
        self.failUnlessEqual(ar.gf2m_mod(0b101110, -0b10011), 0b1000)
        self.failUnlessEqual(ar.gf2m_mod(-0b101110, -0b10011), 0b1000)
    def test_gf2m_mod__neg(self):
        """ Negative tests for gf2m_mod(a,f) """
        # Not meant to be called with other values than int or long
        self.failUnlessRaises(AttributeError, ar.gf2m_mod, 0.0, 0b110)
        self.failUnlessRaises(TypeError, ar.gf2m_mod, "asdf", 0b110)
 
	self.failUnlessEqual(ar.gf2m_mod(-0b101110,0b10011), 0b1000)
	self.failUnlessEqual(ar.gf2m_mod(0b101110,-0b10011), 0b1000)
	self.failUnlessEqual(ar.gf2m_mod(-0b101110,-0b10011), 0b1000)
    def test_gf2m_mod__pos(self):
        """ Positive tests gf2m_mod(a, f)
        
        Sage test calculations::
            sage: F.<x> = GF(2)[]
            sage: a  = x^5 + x^3 + x^2 + x      # a = 0b101110
            sage: f = x^4 + x +1                # f = 0b10011
            sage: c.mod(f)
            x^3                                 #  == 0b1000
            sage: a = x^4 + x^3 + x^2 + x + 1   # a = 0b11111
            sage: a.mod(f)
            x^3 + x^2
            sage: a = x^13 + x^12 + x^11 + x^10 + x^9 + x^8 + x^6 + x^5 + x^4 + x^3 + x^2 + x   
            # a = 0b11111101111110
            sage: f = x^8 + x^4 + x^3 + x + 1   # f = 0b100011011
            sage: a.mod(fx)
            1
            sage: f = x^4 + x +1                # f = 0b10011
            sage: a  = x^3 + x                  # a = 0b1010
            sage: a.mod(fx)
            x^3 + x
            ---
            sage: f = x^4 + x + 1
            sage: a = x^0   # a == 1
            sage: a.mod(f)
            1
            sage: a = x^0 + 1 # a == 1 + 1 == 0
            sage: a.mod(f)
            0
        """
        self.failUnlessEqual(ar.gf2m_mod(0b101110, 0b10011), 0b1000)
        self.failUnlessEqual(ar.gf2m_mod(0b11111, 0b10011), 0b1100)
        self.failUnlessEqual(ar.gf2m_mod(0b11111101111110, 0b100011011), 0b1)
        self.failUnlessEqual(ar.gf2m_mod(0b1010, 0b10011), 0b1010)

        self.failUnlessEqual(ar.gf2m_mod(0b0, 0b10011), 0b0)
        self.failUnlessEqual(ar.gf2m_mod(0b1, 0b10011), 0b1)
    def test_gf2m_mod__pos(self):
        """ Positive tests gf2m_mod(a, f)
        
        Sage test calculations::
            sage: F.<x> = GF(2)[]
            sage: a  = x^5 + x^3 + x^2 + x      # a = 0b101110
            sage: f = x^4 + x +1                # f = 0b10011
            sage: c.mod(f)
            x^3                                 #  == 0b1000
            sage: a = x^4 + x^3 + x^2 + x + 1   # a = 0b11111
            sage: a.mod(f)
            x^3 + x^2
            sage: a = x^13 + x^12 + x^11 + x^10 + x^9 + x^8 + x^6 + x^5 + x^4 + x^3 + x^2 + x   
            # a = 0b11111101111110
            sage: f = x^8 + x^4 + x^3 + x + 1   # f = 0b100011011
            sage: a.mod(fx)
            1
            sage: f = x^4 + x +1                # f = 0b10011
            sage: a  = x^3 + x                  # a = 0b1010
            sage: a.mod(fx)
            x^3 + x
            ---
            sage: f = x^4 + x + 1
            sage: a = x^0   # a == 1
            sage: a.mod(f)
            1
            sage: a = x^0 + 1 # a == 1 + 1 == 0
            sage: a.mod(f)
            0
        """
	self.failUnlessEqual(ar.gf2m_mod(0b101110,0b10011), 0b1000)
	self.failUnlessEqual(ar.gf2m_mod(0b11111,0b10011), 0b1100)
	self.failUnlessEqual(ar.gf2m_mod(0b11111101111110,0b100011011), 0b1)
	self.failUnlessEqual(ar.gf2m_mod(0b1010,0b10011), 0b1010)
	
        self.failUnlessEqual(ar.gf2m_mod(0b0,0b10011), 0b0)
	self.failUnlessEqual(ar.gf2m_mod(0b1,0b10011), 0b1)