예제 #1
0
def test_lookup_table():
    table = defaultdict(list)
    _create_lookup_table(table)
    for _, l in sorted(table.items(), key=default_sort_key):
        for formula, terms, cond, hint in sorted(l, key=default_sort_key):
            subs = {}
            for a in list(formula.free_symbols) + [z_dummy]:
                if hasattr(a, 'properties') and a.properties:
                    # these Wilds match positive integers
                    subs[a] = randrange(1, 10)
                else:
                    subs[a] = uniform(1.5, 2.0)
            if not isinstance(terms, list):
                terms = terms(subs)

            # First test that hyperexpand can do this.
            expanded = [hyperexpand(g) for (_, g) in terms]
            assert all(x.is_Piecewise or not x.has(meijerg) for x in expanded)

            # Now test that the meijer g-function is indeed as advertised.
            expanded = Add(*[f * x for (f, x) in terms])
            a, b = formula.evalf(subs=subs,
                                 strict=False), expanded.evalf(subs=subs,
                                                               strict=False)
            r = min(abs(a), abs(b))
            if r < 1:
                assert abs(a - b).evalf(strict=False) <= 1e-10
            else:
                assert (abs(a - b) / r).evalf(strict=False) <= 1e-10
예제 #2
0
def test_lookup_table():
    table = defaultdict(list)
    _create_lookup_table(table)
    for _, l in sorted(table.items(), key=default_sort_key):
        for formula, terms, cond, hint in sorted(l, key=default_sort_key):
            subs = {}
            for a in list(formula.free_symbols) + [z_dummy]:
                if hasattr(a, 'properties') and a.properties:
                    # these Wilds match positive integers
                    subs[a] = randrange(1, 10)
                else:
                    subs[a] = uniform(1.5, 2.0)
            if not isinstance(terms, list):
                terms = terms(subs)

            # First test that hyperexpand can do this.
            expanded = [hyperexpand(g) for (_, g) in terms]
            assert all(x.is_Piecewise or not x.has(meijerg) for x in expanded)

            # Now test that the meijer g-function is indeed as advertised.
            expanded = Add(*[f*x for (f, x) in terms])
            a, b = formula.evalf(subs=subs, strict=False), expanded.evalf(subs=subs, strict=False)
            r = min(abs(a), abs(b))
            if r < 1:
                assert abs(a - b).evalf(strict=False) <= 1e-10
            else:
                assert (abs(a - b)/r).evalf(strict=False) <= 1e-10