def test_homogeneous_function(): f = Function('f') eq1 = tan(x + f(x)) eq2 = sin((3*x)/(4*f(x))) eq3 = cos(x*f(x)*Rational(3, 4)) eq4 = log((3*x + 4*f(x))/(5*f(x) + 7*x)) eq5 = exp((2*x**2)/(3*f(x)**2)) eq6 = log((3*x + 4*f(x))/(5*f(x) + 7*x) + exp((2*x**2)/(3*f(x)**2))) eq7 = sin((3*x)/(5*f(x) + x**2)) assert homogeneous_order(eq1, x, f(x)) == None assert homogeneous_order(eq2, x, f(x)) == 0 assert homogeneous_order(eq3, x, f(x)) == None assert homogeneous_order(eq4, x, f(x)) == 0 assert homogeneous_order(eq5, x, f(x)) == 0 assert homogeneous_order(eq6, x, f(x)) == 0 assert homogeneous_order(eq7, x, f(x)) == None
def test_issue_5112_5430(): assert homogeneous_order(-log(x) + acosh(x), x) is None assert homogeneous_order(y - log(x), x, y) is None
def test_homogeneous_order(): assert homogeneous_order(exp(y / x) + tan(y / x), x, y) == 0 assert homogeneous_order(x**2 + sin(x) * cos(y), x, y) is None assert homogeneous_order(x - y - x * sin(y / x), x, y) == 1 assert homogeneous_order( (x * y + sqrt(x**4 + y**4) + x**2 * (log(x) - log(y))) / (pi * x**Rational(2, 3) * sqrt(y)**3), x, y) == Rational(-1, 6) assert homogeneous_order( y / x * cos(y / x) - x / y * sin(y / x) + cos(y / x), x, y) == 0 assert homogeneous_order(f(x), x, f(x)) == 1 assert homogeneous_order(f(x)**2, x, f(x)) == 2 assert homogeneous_order(x * y * z, x, y) == 2 assert homogeneous_order(x * y * z, x, y, z) == 3 assert homogeneous_order(x**2 * f(x) / sqrt(x**2 + f(x)**2), f(x)) is None assert homogeneous_order(f(x, y)**2, x, f(x, y), y) == 2 assert homogeneous_order(f(x, y)**2, x, f(x), y) is None assert homogeneous_order(f(x, y)**2, x, f(x, y)) is None assert homogeneous_order(f(y, x)**2, x, y, f(x, y)) is None assert homogeneous_order(f(y), f(x), x) is None assert homogeneous_order(-f(x) / x + 1 / sin(f(x) / x), f(x), x) == 0 assert homogeneous_order(log(1 / y) + log(x**2), x, y) is None assert homogeneous_order(log(1 / y) + log(x), x, y) == 0 assert homogeneous_order(log(x / y), x, y) == 0 assert homogeneous_order(2 * log(1 / y) + 2 * log(x), x, y) == 0 a = Symbol('a') assert homogeneous_order(a * log(1 / y) + a * log(x), x, y) == 0 assert homogeneous_order(f(x).diff(x), x, y) is None assert homogeneous_order(-f(x).diff(x) + x, x, y) is None assert homogeneous_order(O(x), x, y) is None assert homogeneous_order(x + O(x**2), x, y) is None assert homogeneous_order(x**pi, x) == pi assert homogeneous_order(x**x, x) is None raises(ValueError, lambda: homogeneous_order(x * y))