예제 #1
0
def run(test_vector, use_xor):
    """
    Run function
    """
    qm = QuineMcCluskey(use_xor=use_xor)

    for test in test_vector:
        s_out = test['res']
        if 'ons' in test or 'dnc' in test:
            if 'ons' in test:
                ones = test['ons']
            else:
                ones = []

            if 'dnc' in test:
                dontcares = test['dnc']
            else:
                dontcares = []
            pretty_ones = "%s" % ones
            pretty_dontcares = "%s" % dontcares

            t1 = time.time()
            s_res = qm.simplify(ones, dontcares)
            t2 = time.time()
        else:
            s_ones = generate_input(s_out)
            s_dontcares = set()
            pretty_ones = "[%s]" % format_set(s_ones)
            pretty_dontcares = "[%s]" % format_set(s_dontcares)

            t1 = time.time()
            s_res = qm.simplify_los(s_ones, s_dontcares)
            t2 = time.time()

        print()
        print("ones:        %s" % pretty_ones)
        print("dontcares:   %s" % pretty_dontcares)
        print("res:         [%s]" % format_set(s_res))
        print(
            'time:        %0.3f ms, %d comparisons, %d XOR and %d XNOR comparisons'
            % ((t2 - t1) * 1000.0, qm.profile_cmp, qm.profile_xor,
               qm.profile_xnor))
        if s_res != s_out:
            print("Error: test failed")
            print("expected:    [%s]" % format_set(s_out))
            print("got:         [%s]" % format_set(s_res))
            raise TestFailure
    print("\nTest OK.")
예제 #2
0
파일: test.py 프로젝트: joyjitc/lab
def main():
    """
    Main function
    """
    qm = QuineMcCluskey(use_xor = True)

    test_vector = [
        { 'res': set(['--^^']) },
        { 'res': set(['1--^^']) },
        { 'res': set(['--1--11-', '00000001', '10001000']) },
        { 'res': set(['----']), 'ons': [], 'dnc': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] },
        { 'res': set(['----']), 'ons': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] },
        { 'res': set(['----']), 'ons': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 'dnc': [10, 11, 12, 13, 14, 15] },
        { 'res': set(['----']), 'ons': [1, 3, 5, 7, 9, 11, 13, 15], 'dnc': [0, 2, 4, 6, 8, 10, 12, 14] },
        { 'res': set(['--^^']), 'ons': [1, 2, 5, 6, 9, 10, 13, 14] },
        { 'res': set(['-------1']) },
        { 'res': set(['------^^']) },
        { 'res': set(['-----^^^']) },
        { 'res': set(['0^^^']) },
        { 'res': set(['0~~~']) },
        { 'res': set(['^^^^^^^^']) },
        { 'res': set(['^^^0', '100-']) },
        { 'res': set(['00^-0^^0', '01000001', '10001000']) },
        { 'res': set(['^^^00', '111^^']) },
        { 'res': set(['---00000^^^^^^^']) },
    ]

    for test in test_vector:
        s_out = test['res']
        if 'ons' in test or 'dnc' in test:
            if 'ons' in test:
                ones = test['ons']
            else:
                ones = []

            if 'dnc' in test:
                dontcares = test['dnc']
            else:
                dontcares = []
            pretty_ones = "%s" % ones
            pretty_dontcares = "%s" % dontcares

            t1 = time.time()
            s_res = qm.simplify(ones, dontcares)
            t2 = time.time()
        else:
            s_ones = generate_input(s_out)
            s_dontcares = set()
            pretty_ones = "[%s]" % format_set(s_ones)
            pretty_dontcares = "[%s]" % format_set(s_dontcares)

            t1 = time.time()
            s_res = qm.simplify_los(s_ones, s_dontcares)
            t2 = time.time()


        print()
        print("ones:        %s" % pretty_ones)
        print("dontcares:   %s" % pretty_dontcares)
        print("res:         [%s]" % format_set(s_res))
        print('time:        %0.3f ms, %d comparisons, %d XOR and %d XNOR comparisons' % ((t2-t1)*1000.0, qm.profile_cmp, qm.profile_xor, qm.profile_xnor))
        if s_res != s_out:
            print("Error: test failed")
            print("expected:    [%s]" % format_set(s_out))
            print("got:         [%s]" % format_set(s_res))
            return 1
    print("\nTest OK.")
    return 0
예제 #3
0
def main():
    """
    Main function
    """
    qm = QuineMcCluskey(use_xor=True)

    test_vector = [
        {
            'res': set(['--^^'])
        },
        {
            'res': set(['1--^^'])
        },
        {
            'res': set(['-10']),
            'ons': [2],
            'dnc': [4, 5, 6, 7]
        },
        {
            'res': set(['--1--11-', '00000001', '10001000'])
        },
        {
            'res': set(['----']),
            'ons': [],
            'dnc': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
        },
        {
            'res': set(['----']),
            'ons': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
        },
        {
            'res': set(['----']),
            'ons': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
            'dnc': [10, 11, 12, 13, 14, 15]
        },
        {
            'res': set(['----']),
            'ons': [1, 3, 5, 7, 9, 11, 13, 15],
            'dnc': [0, 2, 4, 6, 8, 10, 12, 14]
        },
        {
            'res': set(['--^^']),
            'ons': [1, 2, 5, 6, 9, 10, 13, 14]
        },
        {
            'res': set(['-------1'])
        },
        {
            'res': set(['------^^'])
        },
        {
            'res': set(['-----^^^'])
        },
        {
            'res': set(['0^^^'])
        },
        {
            'res': set(['0~~~'])
        },
        {
            'res': set(['^^^^^^^^'])
        },
        {
            'res': set(['^^^0', '100-'])
        },
        {
            'res': set(['00^-0^^0', '01000001', '10001000'])
        },
        {
            'res': set(['^^^00', '111^^'])
        },
        {
            'res': set(['---00000^^^^^^^'])
        },
    ]

    for test in test_vector:
        s_out = test['res']
        if 'ons' in test or 'dnc' in test:
            if 'ons' in test:
                ones = test['ons']
            else:
                ones = []

            if 'dnc' in test:
                dontcares = test['dnc']
            else:
                dontcares = []
            pretty_ones = "%s" % ones
            pretty_dontcares = "%s" % dontcares

            t1 = time.time()
            s_res = qm.simplify(ones, dontcares)
            t2 = time.time()
        else:
            s_ones = generate_input(s_out)
            s_dontcares = set()
            pretty_ones = "[%s]" % format_set(s_ones)
            pretty_dontcares = "[%s]" % format_set(s_dontcares)

            t1 = time.time()
            s_res = qm.simplify_los(s_ones, s_dontcares)
            t2 = time.time()

        print()
        print("ones:        %s" % pretty_ones)
        print("dontcares:   %s" % pretty_dontcares)
        print("res:         [%s]" % format_set(s_res))
        print(
            'time:        %0.3f ms, %d comparisons, %d XOR and %d XNOR comparisons'
            % ((t2 - t1) * 1000.0, qm.profile_cmp, qm.profile_xor,
               qm.profile_xnor))
        if s_res != s_out:
            print("Error: test failed")
            print("expected:    [%s]" % format_set(s_out))
            print("got:         [%s]" % format_set(s_res))
            return 1
    print("\nTest OK.")
    return 0