예제 #1
0
    def testSeries(self):

        A, B = get_symbol(1), get_symbol(1)
        self.assertEquals( A << B, SeriesProduct(A,B))
        self.assertEquals( A<< B, SeriesProduct.create(A,B))

        # need at least two operands
#        self.assertRaises(Exception, SeriesProduct, ())
#        self.assertRaises(Exception, SeriesProduct.create, ())
#        self.assertRaises(Exception, SeriesProduct, (A,))

        self.assertEquals(SeriesProduct.create(A), A)
예제 #2
0
    def testSeries(self):

        A, B = get_symbol(1), get_symbol(1)
        self.assertEquals(A << B, SeriesProduct(A, B))
        self.assertEquals(A << B, SeriesProduct.create(A, B))

        # need at least two operands
        #        self.assertRaises(Exception, SeriesProduct, ())
        #        self.assertRaises(Exception, SeriesProduct.create, ())
        #        self.assertRaises(Exception, SeriesProduct, (A,))

        self.assertEquals(SeriesProduct.create(A), A)
예제 #3
0
 def testSeriesFilterIdentities(self):
     for n in (1,2,3, 10):
         A, B = get_symbol(n), get_symbol(n)
         idn = circuit_identity(n)
         self.assertEquals(A << idn, A)
         self.assertEquals(idn << A, A)
         self.assertEquals(SeriesProduct.create(idn, idn, A, idn, idn, B, idn, idn), A << B)
예제 #4
0
    def testDistributiveLaw(self):
         A, B, C, D, E = get_symbols(2,1,1,1,1)

         self.assertEquals((A+B) << (C+D+E), Concatenation(A<<(C+D), B << E))

         self.assertEquals((C+D+E) << (A+B) , Concatenation((C+D)<< A,  E<< B))

         self.assertEquals((A+B) << (C+D+E) << (A+B) , Concatenation(A << (C+D)<< A,  B << E<< B))

         self.assertEquals(SeriesProduct.create((A+B), (C+D+E), (A+B)), Concatenation(A << (C+D)<< A,  B << E<< B))

         test_perm = (0,1,3,2)
         qtp = CPermutation(test_perm)

         self.assertEquals(CPermutation((1,0)) << ( B + C), SeriesProduct(Concatenation(C, B), CPermutation((1,0))))

         self.assertEquals(qtp << (A + B + C), (A + C+ B) <<  qtp)

         self.assertEquals(qtp << ( B + C + A) , B + C + (CPermutation((1,0)) << A))

         test_perm2 = (1,0,3,2)
         qtp2 = CPermutation(test_perm2)

         self.assertEquals(qtp2 << (A + B + C), (CPermutation((1,0)) << A) + ((C+B) << CPermutation((1,0))))

         self.assertEquals(qtp << qtp2, CPermutation(permute(test_perm, test_perm2)))
예제 #5
0
    def testDistributiveLaw(self):
        A, B, C, D, E = get_symbols(2, 1, 1, 1, 1)

        self.assertEquals((A + B) << (C + D + E),
                          Concatenation(A << (C + D), B << E))

        self.assertEquals((C + D + E) << (A + B),
                          Concatenation((C + D) << A, E << B))

        self.assertEquals((A + B) << (C + D + E) << (A + B),
                          Concatenation(A << (C + D) << A, B << E << B))

        self.assertEquals(SeriesProduct.create((A + B), (C + D + E), (A + B)),
                          Concatenation(A << (C + D) << A, B << E << B))

        test_perm = (0, 1, 3, 2)
        qtp = CPermutation(test_perm)

        self.assertEquals(
            CPermutation((1, 0)) << (B + C),
            SeriesProduct(Concatenation(C, B), CPermutation((1, 0))))

        self.assertEquals(qtp << (A + B + C), (A + C + B) << qtp)

        self.assertEquals(qtp << (B + C + A), B + C + (CPermutation(
            (1, 0)) << A))

        test_perm2 = (1, 0, 3, 2)
        qtp2 = CPermutation(test_perm2)

        self.assertEquals(qtp2 << (A + B + C), (CPermutation(
            (1, 0)) << A) + ((C + B) << CPermutation((1, 0))))

        self.assertEquals(qtp << qtp2,
                          CPermutation(permute(test_perm, test_perm2)))
예제 #6
0
 def testSeriesFilterIdentities(self):
     for n in (1, 2, 3, 10):
         A, B = get_symbol(n), get_symbol(n)
         idn = circuit_identity(n)
         self.assertEquals(A << idn, A)
         self.assertEquals(idn << A, A)
         self.assertEquals(
             SeriesProduct.create(idn, idn, A, idn, idn, B, idn, idn),
             A << B)