コード例 #1
0
ファイル: test_partfrac.py プロジェクト: goretkin/diofant
def test_noncommutative_pseudomultivariate():
    class foo(Expr):
        is_commutative = False

    e = x / (x + x * y)
    c = 1 / (1 + y)
    assert apart(e + foo(e)) == c + foo(c)
    assert apart(e * foo(e)) == c * foo(c)
コード例 #2
0
ファイル: test_partfrac.py プロジェクト: goretkin/diofant
def test_apart_extension():
    f = 2 / (x**2 + 1)
    g = I / (x + I) - I / (x - I)

    assert apart(f, extension=I) == g
    assert apart(f, gaussian=True) == g

    f = x / ((x - 2) * (x + I))

    assert factor(together(apart(f))) == f
コード例 #3
0
ファイル: test_partfrac.py プロジェクト: skirpichev/diofant
def test_apart_extension():
    f = 2/(x**2 + 1)
    g = I/(x + I) - I/(x - I)

    assert apart(f, extension=I) == g
    assert apart(f, gaussian=True) == g

    f = x/((x - 2)*(x + I))

    assert factor(together(apart(f))) == f
コード例 #4
0
ファイル: test_partfrac.py プロジェクト: skirpichev/diofant
def test_noncommutative_pseudomultivariate():
    class foo(Expr):
        is_commutative = False
    e = x/(x + x*y)
    c = 1/(1 + y)
    assert apart(e + foo(e)) == c + foo(c)
    assert apart(e*foo(e)) == c*foo(c)

    A, B = symbols('A, B', commutative=False)
    assert apart(A*B) == A*B
コード例 #5
0
ファイル: test_partfrac.py プロジェクト: skirpichev/diofant
def test_apart_symbolic():
    f = a*x**4 + (2*b + 2*a*c)*x**3 + (4*b*c - a**2 + a*c**2)*x**2 + \
        (-2*a*b + 2*b*c**2)*x - b**2
    g = a**2*x**4 + (2*a*b + 2*c*a**2)*x**3 + (4*a*b*c + b**2 +
                                               a**2*c**2)*x**2 + (2*c*b**2 + 2*a*b*c**2)*x + b**2*c**2

    assert apart(f/g, x) == 1/a - 1/(x + c)**2 - b**2/(a*(a*x + b)**2)

    assert apart(1/((x + a)*(x + b)*(x + c)), x) == \
        1/((a - c)*(b - c)*(c + x)) - 1/((a - b)*(b - c)*(b + x)) + \
        1/((a - b)*(a - c)*(a + x))
コード例 #6
0
ファイル: test_partfrac.py プロジェクト: goretkin/diofant
def test_apart_symbolic():
    f = a*x**4 + (2*b + 2*a*c)*x**3 + (4*b*c - a**2 + a*c**2)*x**2 + \
        (-2*a*b + 2*b*c**2)*x - b**2
    g = a**2 * x**4 + (2 * a * b + 2 * c * a**2) * x**3 + (
        4 * a * b * c + b**2 + a**2 * c**2) * x**2 + (
            2 * c * b**2 + 2 * a * b * c**2) * x + b**2 * c**2

    assert apart(f / g,
                 x) == 1 / a - 1 / (x + c)**2 - b**2 / (a * (a * x + b)**2)

    assert apart(1/((x + a)*(x + b)*(x + c)), x) == \
        1/((a - c)*(b - c)*(c + x)) - 1/((a - b)*(b - c)*(b + x)) + \
        1/((a - b)*(a - c)*(a + x))
コード例 #7
0
ファイル: test_partfrac.py プロジェクト: goretkin/diofant
def test_apart_full():
    f = 1 / (x**2 + 1)

    assert apart(f, full=False) == f
    assert apart(f, full=True) == \
        -RootSum(x**2 + 1, Lambda(a, a/(x - a)), auto=False)/2

    f = 1 / (x**3 + x + 1)

    assert apart(f, full=False) == f
    assert apart(f, full=True) == \
        RootSum(x**3 + x + 1,
        Lambda(a, (6*a**2/31 - 9*a/31 + Rational(4, 31))/(x - a)), auto=False)

    f = 1 / (x**5 + 1)

    assert apart(f, full=False) == \
        (-Rational(1, 5))*((x**3 - 2*x**2 + 3*x - 4)/(x**4 - x**3 + x**2 -
         x + 1)) + (Rational(1, 5))/(x + 1)
    assert apart(f, full=True) == \
        -RootSum(x**4 - x**3 + x**2 - x + 1,
        Lambda(a, a/(x - a)), auto=False)/5 + (Rational(1, 5))/(x + 1)
コード例 #8
0
ファイル: test_partfrac.py プロジェクト: skirpichev/diofant
def test_apart_full():
    f = 1/(x**2 + 1)

    assert apart(f, full=False) == f
    assert apart(f, full=True) == \
        -RootSum(x**2 + 1, Lambda(a, a/(x - a)), auto=False)/2

    f = 1/(x**3 + x + 1)

    assert apart(f, full=False) == f
    assert apart(f, full=True) == \
        RootSum(x**3 + x + 1,
                Lambda(a, (6*a**2/31 - 9*a/31 + Rational(4, 31))/(x - a)), auto=False)

    f = 1/(x**5 + 1)

    assert apart(f, full=False) == \
        (-Rational(1, 5))*((x**3 - 2*x**2 + 3*x - 4)/(x**4 - x**3 + x**2 -
                                                      x + 1)) + Rational(1, 5)/(x + 1)
    assert apart(f, full=True) == \
        -RootSum(x**4 - x**3 + x**2 - x + 1,
                 Lambda(a, a/(x - a)), auto=False)/5 + Rational(1, 5)/(x + 1)
コード例 #9
0
ファイル: test_partfrac.py プロジェクト: goretkin/diofant
def test_sympyissue_5798():
    assert apart(
        2*x/(x**2 + 1) - (x - 1)/(2*(x**2 + 1)) + 1/(2*(x + 1)) - 2/x) == \
        (3*x + 1)/(x**2 + 1)/2 + 1/(x + 1)/2 - 2/x
コード例 #10
0
ファイル: test_partfrac.py プロジェクト: goretkin/diofant
def test_apart():
    assert apart(1) == 1
    assert apart(1, x) == 1

    f, g = (x**2 + 1) / (x + 1), 2 / (x + 1) + x - 1

    assert apart(f, full=False) == g
    assert apart(f, full=True) == g

    f, g = 1 / (x + 2) / (x + 1), 1 / (1 + x) - 1 / (2 + x)

    assert apart(f, full=False) == g
    assert apart(f, full=True) == g

    f, g = 1 / (x + 1) / (x + 5), -1 / (5 + x) / 4 + 1 / (1 + x) / 4

    assert apart(f, full=False) == g
    assert apart(f, full=True) == g

    assert apart((E*x + 2)/(x - pi)*(x - 1), x) == \
        2 - E + E*pi + E*x + (E*pi + 2)*(pi - 1)/(x - pi)

    assert apart(Eq((x**2 + 1) / (x + 1), x), x) == Eq(x - 1 + 2 / (x + 1), x)

    pytest.raises(NotImplementedError, lambda: apart(1 / (x + 1) / (y + 2)))
コード例 #11
0
ファイル: test_partfrac.py プロジェクト: skirpichev/diofant
def test_apart():
    assert apart(1) == 1
    assert apart(1, x) == 1

    f, g = (x**2 + 1)/(x + 1), 2/(x + 1) + x - 1

    assert apart(f, full=False) == g
    assert apart(f, full=True) == g

    f, g = 1/(x + 2)/(x + 1), 1/(1 + x) - 1/(2 + x)

    assert apart(f, full=False) == g
    assert apart(f, full=True) == g

    f, g = 1/(x + 1)/(x + 5), -1/(5 + x)/4 + 1/(1 + x)/4

    assert apart(f, full=False) == g
    assert apart(f, full=True) == g

    assert apart((E*x + 2)/(x - pi)*(x - 1), x) == \
        2 - E + E*pi + E*x + (E*pi + 2)*(pi - 1)/(x - pi)

    assert apart(Eq((x**2 + 1)/(x + 1), x), x) == Eq(x - 1 + 2/(x + 1), x)

    pytest.raises(NotImplementedError, lambda: apart(1/(x + 1)/(y + 2)))
コード例 #12
0
ファイル: test_partfrac.py プロジェクト: skirpichev/diofant
def test_sympyissue_5798():
    assert apart(
        2*x/(x**2 + 1) - (x - 1)/(2*(x**2 + 1)) + 1/(2*(x + 1)) - 2/x) == \
        (3*x + 1)/(x**2 + 1)/2 + 1/(x + 1)/2 - 2/x
コード例 #13
0
ファイル: test_partfrac.py プロジェクト: cbm755/diofant
def test_apart():
    assert apart(1) == 1
    assert apart(1, x) == 1

    f, g = (x**2 + 1) / (x + 1), 2 / (x + 1) + x - 1

    assert apart(f, full=False) == g
    assert apart(f, full=True) == g

    f, g = 1 / (x + 2) / (x + 1), 1 / (1 + x) - 1 / (2 + x)

    assert apart(f, full=False) == g
    assert apart(f, full=True) == g

    f, g = 1 / (x + 1) / (x + 5), -1 / (5 + x) / 4 + 1 / (1 + x) / 4

    assert apart(f, full=False) == g
    assert apart(f, full=True) == g

    assert apart((E*x + 2)/(x - pi)*(x - 1), x) == \
        2 - E + E*pi + E*x + (E*pi + 2)*(pi - 1)/(x - pi)

    assert apart(Eq((x**2 + 1) / (x + 1), x), x) == Eq(x - 1 + 2 / (x + 1), x)

    pytest.raises(NotImplementedError, lambda: apart(1 / (x + 1) / (y + 2)))

    assert apart(x / 2, y) == x / 2  # issue sympy/sympy#9123

    # issue sympy/sympy#12177

    f, g = (x + y) / (2 * x - y), 3 * y / (2 * x - y) / 2 + Rational(1, 2)

    assert apart(f, x, full=False) == g
    assert apart(f, x, full=True) == g

    f, g = (x + y) / (2 * x - y), 3 * x / (2 * x - y) - 1

    assert apart(f, y, full=False) == g
    assert apart(f, y, full=True) == g