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

        self.failUnlessEqual(ar.gf2m_mul(-0b1101, 0b110), 0b101110)
        self.failUnlessEqual(ar.gf2m_mul(0b1101, -0b110), 0b101110)
        self.failUnlessEqual(ar.gf2m_mul(-0b1101, 0b110), 0b101110)
    def test_gf2m_mul__neg(self):
        """ Negative tests for gf2m_mul(a,b) """
        # Not meant to be called with other values than int or long
        self.failUnlessRaises(AttributeError, ar.gf2m_mul, 0.0, 0b110)
        self.failUnlessRaises(TypeError, ar.gf2m_mul, "asdf", 0b110)
        
	self.failUnlessEqual(ar.gf2m_mul(-0b1101,0b110), 0b101110)
	self.failUnlessEqual(ar.gf2m_mul(0b1101,-0b110), 0b101110)
	self.failUnlessEqual(ar.gf2m_mul(-0b1101,0b110), 0b101110)
    def test_gf2m_mul__pos(self):
        """ Positive tests for gf2m_mul(a,b)

        Sage test calculations::
            sage: F.<t> = GF(2)[]
            sage: a = x^3 + x^2 + 1    # a = 0b1101
            sage: b = x^2 + x          # b = 0b110
            sage: a*b
            x^5 + x^3 + x^2 + x
            sage: b*a
            x^5 + x^3 + x^2 + x
            sage: (x^6 + x^4 + x + 1)*(x^7 + x^6 + x^3 + x)
    x^13 + x^12 + x^11 + x^10 + x^9 + x^8 + x^6 + x^5 + x^4 + x^3 + x^2 + x
            # a = 0x53
            # b = 0xCA
            ---
            sage: b = x^2 + x
            sage: a = x^0
            sage: a
            1
            sage: a*b
            x^2 + x
            sage: a = x^0 + 1 
            sage: a
            0
            sage: a*b
            0
        """
        self.failUnlessEqual(ar.gf2m_mul(0b1101, 0b110), 0b101110)
        self.failUnlessEqual(ar.gf2m_mul(0b110, 0b1101), 0b101110)

        self.failUnlessEqual(ar.gf2m_mul(0x53, 0xCA), 0b11111101111110)
        self.failUnlessEqual(ar.gf2m_mul(0xCA, 0x53), 0b11111101111110)

        self.failUnlessEqual(ar.gf2m_mul(0b1, 0b110), 0b110)
        self.failUnlessEqual(ar.gf2m_mul(0b0, 0b110), 0b0)
    def test_gf2m_mul__pos(self):
        """ Positive tests for gf2m_mul(a,b)

        Sage test calculations::
            sage: F.<t> = GF(2)[]
            sage: a = x^3 + x^2 + 1    # a = 0b1101
            sage: b = x^2 + x          # b = 0b110
            sage: a*b
            x^5 + x^3 + x^2 + x
            sage: b*a
            x^5 + x^3 + x^2 + x
            sage: (x^6 + x^4 + x + 1)*(x^7 + x^6 + x^3 + x)
    x^13 + x^12 + x^11 + x^10 + x^9 + x^8 + x^6 + x^5 + x^4 + x^3 + x^2 + x
            # a = 0x53
            # b = 0xCA
            ---
            sage: b = x^2 + x
            sage: a = x^0
            sage: a
            1
            sage: a*b
            x^2 + x
            sage: a = x^0 + 1 
            sage: a
            0
            sage: a*b
            0
        """
	self.failUnlessEqual(ar.gf2m_mul(0b1101,0b110), 0b101110)
	self.failUnlessEqual(ar.gf2m_mul(0b110,0b1101), 0b101110)
	
        self.failUnlessEqual(ar.gf2m_mul(0x53,0xCA), 0b11111101111110)
        self.failUnlessEqual(ar.gf2m_mul(0xCA,0x53), 0b11111101111110)
        
	self.failUnlessEqual(ar.gf2m_mul(0b1,0b110), 0b110)
    	self.failUnlessEqual(ar.gf2m_mul(0b0,0b110), 0b0)