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
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