def variables_test():
    assert_equal(variables(Number(3)*x*(x+Number(1))*y**Number(2)*z**n), {x, x + Number(1), y, z**n})
    assert_equal(variables(a*sin(x)**Number(2)+Number(2)*b*sin(x)+Number(3)*c), {a, b, c, sin(x)})
    assert_equal(variables(Number(2)**Number(1, 2)*x**Number(2) + Number(3)**Number(1, 2) + Number(5)**Number(1, 2)),
                 {x, Number(2)**Number(1, 2), Number(3)**Number(1, 2), Number(5)**Number(1, 2)})
    assert_equal(variables(Number(1,2)), set())
    assert_equal(variables(x*Number(3)+Number(3)*x**Number(2)*y + Number(3)*x*y**Number(2)+y**Number(3)), {x, y})
    assert_equal(variables(4*x*(x+5)), {x, x+5})
Exemple #2
0
def is_ordered_test():

    # O-1
    assert_equal(are_ordered(Number(2), Number(3)), True)
    assert_equal(are_ordered(Number(1, 2), Number(1)), True)
    assert_equal(are_ordered(Number(7, 5), Number(1)), False)

    # O-2
    x = Symbol('x')
    y = Symbol('y')
    abc = Symbol('abc')
    bcd = Symbol('bcd')

    assert_equal(are_ordered(x, y), True)
    assert_equal(are_ordered(bcd, abc), False)

    # O-3
    a = Symbol('a')
    b = Symbol('b')
    c = Symbol('c')
    d = Symbol('d')

    assert_true(are_ordered(a + b, a + c))
    assert_true(are_ordered(a + c + d, b + c + d))
    assert_true(are_ordered(c + d, b + c + d))

    # O-4
    assert_equal(are_ordered(x ** 2, y ** 3), True)
    assert_equal(are_ordered(x ** 2, x ** 3), True)

    # O-6
    assert_equal(are_ordered(cos(x), sin(x)), True)
    assert_equal(are_ordered(sin(x), sin(y)), True)

    # O-7
    assert_equal(are_ordered(Number(2), x), True)

    # O-8
    a = Symbol('a')
    assert_equal(are_ordered(a * x ** 2, x ** 3), True)

    # O-9
    assert_equal(are_ordered((1 + x) ** 3, (1 + y)), True)

    # O-10
    assert_equal(are_ordered(1 + x, y), True)

    # O-12
    s = Symbol('sin')  # why anyone would do this is beyond me, but worst case scenario...
    assert_equal(are_ordered(s, sin(x)), True)
    assert_equal(are_ordered(a, sin(x)), True)

    # O-13
    assert_equal(are_ordered(x, x ** 2), True)
def base_test():
    x = Symbol("x")

    assert_equal(base(x), x)
    assert_equal(base(x * 5), x * 5)
    assert_equal(base(x + 2), x + 2)
    assert_equal(base(sin(x)), sin(x))

    assert_equal(base(x ** 3), x)
    assert_equal(base(sin(x) ** 5), sin(x))
    assert_equal(base(Number(1, 2) ** Number(1, 3)), Number(1, 2))

    assert_is_instance(base(Number(2)), Undefined)
    assert_is_instance(base(Number(4, 5)), Undefined)
def exponent_test():
    x = Symbol("x")

    assert_equal(exponent(x), Number(1))
    assert_equal(exponent(x * 5), Number(1))
    assert_equal(exponent(x + 2), Number(1))
    assert_equal(exponent(sin(x)), Number(1))

    assert_equal(exponent(x ** 3), Number(3))
    assert_equal(exponent(sin(x) ** 5), Number(5))
    assert_equal(exponent(Number(1, 2) ** Number(1, 3)), Number(1, 3))

    assert_is_instance(exponent(Number(2)), Undefined)
    assert_is_instance(exponent(Number(4, 5)), Undefined)
def term_test():
    x = Symbol("x")
    y = Symbol("y")

    assert_equal(term(x), Mul(x))
    assert_equal(term(x + 5), Mul(x + 5))
    assert_equal(term(x ** 5), Mul(x ** 5))
    assert_equal(term(sin(x)), Mul(sin(x)))

    assert_equal(term(6 * x * 3), Mul(x))
    assert_equal(term(10 * x * y), x * y)

    assert_equal(term(x * y), x * y)

    assert_is_instance(term(Number(1)), Undefined)
    assert_is_instance(term(Number(3, 4)), Undefined)
def const_test():
    x = Symbol("x")
    y = Symbol("y")

    assert_equal(const(x), Number(1))
    assert_equal(const(1 + x), Number(1))
    assert_equal(const(y + x), Number(1))
    assert_equal(const(x ** 3), Number(1))
    assert_equal(const(sin(x)), Number(1))

    assert_equal(const(6 * x * 3), Number(18))
    assert_equal(const(10 * x * y), Number(10))

    assert_equal(const(x * y), Number(1))

    assert_is_instance(const(Number(7)), Undefined)
    assert_is_instance(const(Number(1, 4)), Undefined)
def is_polynomial_gpe_test():
    assert_equal(is_polynomial_gpe(a+b, {a+b}), True)
    assert_equal(is_polynomial_gpe(x**Number(2)+y**Number(2), {x, y}), True)
    assert_equal(is_polynomial_gpe(sin(x)**Number(2) + Number(2)*sin(x) + Number(3), sin(x)), True)
    assert_equal(is_polynomial_gpe(x/y + Number(2)*y, {x,y}), False)
    assert_equal(is_polynomial_gpe((x+Number(1))*(x+Number(3)), x), False)