Beispiel #1
0
def test_rewrite_single():
    def t(expr, c, m):
        e = _rewrite_single(meijerg([a], [b], [c], [d], expr), x)
        assert e is not None
        assert isinstance(e[0][0][2], meijerg)
        assert e[0][0][2].argument.as_coeff_mul(x) == (c, (m,))

    def tn(expr):
        assert _rewrite_single(meijerg([a], [b], [c], [d], expr), x) is None

    t(x, 1, x)
    t(x ** 2, 1, x ** 2)
    t(x ** 2 + y * x ** 2, y + 1, x ** 2)
    tn(x ** 2 + x)
    tn(x ** y)

    def u(expr, x):
        from sympy import Add, exp, exp_polar

        r = _rewrite_single(expr, x)
        e = Add(*[res[0] * res[2] for res in r[0]]).replace(exp_polar, exp)  # XXX Hack?
        assert verify_numerically(e, expr, x)

    u(exp(-x) * sin(x), x)

    # The following has stopped working because hyperexpand changed slightly.
    # It is probably not worth fixing
    # u(exp(-x)*sin(x)*cos(x), x)

    # This one cannot be done numerically, since it comes out as a g-function
    # of argument 4*pi
    # NOTE This also tests a bug in inverse mellin transform (which used to
    #      turn exp(4*pi*I*t) into a factor of exp(4*pi*I)**t instead of
    #      exp_polar).
    # u(exp(x)*sin(x), x)
    assert _rewrite_single(exp(x) * sin(x), x) == (
        [
            (
                -sqrt(2) / (2 * sqrt(pi)),
                0,
                meijerg(
                    (
                        (Rational(-1, 2), 0, Rational(1, 4), S.Half, Rational(3, 4)),
                        (1,),
                    ),
                    ((), (Rational(-1, 2), 0)),
                    64 * exp_polar(-4 * I * pi) / x ** 4,
                ),
            )
        ],
        True,
    )
Beispiel #2
0
def test_rewrite_single():
    def t(expr, c, m):
        e = _rewrite_single(meijerg([a], [b], [c], [d], expr), x)
        assert e is not None
        assert isinstance(e[0][0][2], meijerg)
        assert e[0][0][2].argument.as_coeff_mul(x) == (c, (m,))

    def tn(expr):
        assert _rewrite_single(meijerg([a], [b], [c], [d], expr), x) is None

    t(x, 1, x)
    t(x ** 2, 1, x ** 2)
    t(x ** 2 + y * x ** 2, y + 1, x ** 2)
    tn(x ** 2 + x)
    tn(x ** y)

    def u(expr, x):
        from sympy import Add, exp, exp_polar

        r = _rewrite_single(expr, x)
        e = Add(*[res[0] * res[2] for res in r[0]]).replace(exp_polar, exp)  # XXX Hack?
        assert verify_numerically(e, expr, x)

    u(exp(-x) * sin(x), x)

    # The following has stopped working because hyperexpand changed slightly.
    # It is probably not worth fixing
    # u(exp(-x)*sin(x)*cos(x), x)

    # This one cannot be done numerically, since it comes out as a g-function
    # of argument 4*pi
    # NOTE This also tests a bug in inverse mellin transform (which used to
    #      turn exp(4*pi*I*t) into a factor of exp(4*pi*I)**t instead of
    #      exp_polar).
    # u(exp(x)*sin(x), x)
    assert _rewrite_single(exp(x) * sin(x), x) == (
        [
            (
                -sqrt(2) / (2 * sqrt(pi)),
                0,
                meijerg(
                    ((-S(1) / 2, 0, S(1) / 4, S(1) / 2, S(3) / 4), (1,)),
                    ((), (-S(1) / 2, 0)),
                    64 * exp_polar(-4 * I * pi) / x ** 4,
                ),
            )
        ],
        True,
    )
Beispiel #3
0
 def u(expr, x):
     from sympy import Add, exp, exp_polar
     r = _rewrite_single(expr, x)
     e = Add(*[res[0] * res[2] for res in r[0]]).replace(exp_polar,
                                                         exp)  # XXX Hack?
     assert verify_numerically(e, expr, x)
Beispiel #4
0
 def tn(expr):
     assert _rewrite_single(meijerg([a], [b], [c], [d], expr), x) is None
Beispiel #5
0
 def t(expr, c, m):
     e = _rewrite_single(meijerg([a], [b], [c], [d], expr), x)
     assert e is not None
     assert isinstance(e[0][0][2], meijerg)
     assert e[0][0][2].argument.as_coeff_mul(x) == (c, (m, ))
Beispiel #6
0
    def u(expr, x):
        from sympy import Add, exp, exp_polar

        r = _rewrite_single(expr, x)
        e = Add(*[res[0] * res[2] for res in r[0]]).replace(exp_polar, exp)  # XXX Hack?
        assert verify_numerically(e, expr, x)
Beispiel #7
0
 def tn(expr):
     assert _rewrite_single(meijerg([a], [b], [c], [d], expr), x) is None
Beispiel #8
0
 def t(expr, c, m):
     e = _rewrite_single(meijerg([a], [b], [c], [d], expr), x)
     assert e is not None
     assert isinstance(e[0][0][2], meijerg)
     assert e[0][0][2].argument.as_coeff_mul(x) == (c, (m,))