def test_factor(): assert factor(-2) == -2 assert factor(-x) == -x assert factor(Rational(3, 8)*x**2 - Rational(3, 2)) == \ Rational(3, 8)*((x - 2)*(x + 2)) assert factor(x**3 - 1) == (x - 1)*(x**2 + x + 1) assert factor(x**3 - x) == x*(x - 1)*(x + 1) assert factor(x**2 + 2*x + 1) == (x + 1)**2 assert factor(x**2 + x - 2) == (x - 1)*(x + 2) assert factor(2*x**2 + 5*x + 2) == (x + 2)*(2*x + 1) assert factor(x**2 + y**2) == x**2 + y**2 assert factor(x**5 - y**2) == x**5 - y**2 assert factor(x*y + x*z + y*z) == x*y + x*z + y*z assert factor(x*y + x*z + x**2) == x*(x + y + z) assert poly_factors(-2*x**2 + x, x) == \ (-1, [(Poly(x, x), 1), (Poly(2*x - 1, x), 1)]) assert poly_factors(x**3 - 3*x**2 + 3*x - 1, x) == \ (1, [(Poly(x - 1, x), 3)]) assert poly_factors(x**6 - 1, x) == \ (1, [(Poly(x - 1, x), 1), (Poly(x + 1, x), 1), (Poly(x**2 - x + 1, x), 1), (Poly(x**2 + x + 1, x), 1)]) assert poly_factors(2*x**3*y - 2*a**2*x*y - 3*a**2*x**2 + 3*a**4, a, x, y) == \ (1, [(Poly(a - x, a, x, y), 1), (Poly(a + x, a, x, y), 1), (Poly(3*a**2 - 2*x*y, a, x, y), 1)])
def test_factor(): assert factor(-2) == -2 assert factor(-x) == -x assert factor(Rational(3, 8)*x**2 - Rational(3, 2)) == \ Rational(3, 8)*((x - 2)*(x + 2)) assert factor(x**3 - 1) == (x - 1)*(x**2 + x + 1) assert factor(x**3 - x) == x*(x - 1)*(x + 1) assert factor(x**2 + 2*x + 1) == (x + 1)**2 assert factor(x**2 + x - 2) == (x - 1)*(x + 2) assert factor(2*x**2 + 5*x + 2) == (x + 2)*(2*x + 1) assert factor(x**2 + y**2) == x**2 + y**2 assert factor(x**5 - y**2) == x**5 - y**2 assert factor(x*y + x*z + y*z) == x*y + x*z + y*z assert factor(x*y + x*z + x**2) == x*(x + y + z) assert poly_factors((a*x - b)**5, x) == \ (1, [(Poly(a*x - b, x), 5)]) assert poly_factors((a*x - b)**5, x, a) == \ (1, [(Poly(x*a - b, x, a), 5)]) assert poly_factors((a*x - b)**5, x, a, b) == \ (1, [(Poly(x*a - b, x, a, b), 5)]) assert poly_factors(-2*x**2 + x, x) == \ (-1, [(Poly(x, x), 1), (Poly(2*x - 1, x), 1)]) assert poly_factors(x**3 - 3*x**2 + 3*x - 1, x) == \ (1, [(Poly(x - 1, x), 3)]) assert poly_factors(x**6 - 1, x) == \ (1, [(Poly(x - 1, x), 1), (Poly(x + 1, x), 1), (Poly(x**2 - x + 1, x), 1), (Poly(x**2 + x + 1, x), 1)]) assert poly_factors(2*x**3*y - 2*a**2*x*y - 3*a**2*x**2 + 3*a**4, a, x, y) == \ (1, [(Poly(a - x, a, x, y), 1), (Poly(a + x, a, x, y), 1), (Poly(3*a**2 - 2*x*y, a, x, y), 1)]) assert poly_factors(x**20 - z**5*y**20, x, y, z) == \ (1, [(Poly(-y**4*z + x**4, x, y, z), 1), (Poly(y**16*z**4 + x**4*y**12*z**3 + x**8*y**8*z**2 + x**12*y**4*z + x**16, x, y, z) , 1)])
def test_factor(): assert factor(-2) == -2 assert factor(-x) == -x assert factor(Rational(3, 8)*x**2 - Rational(3, 2)) == \ Rational(3, 8)*((x - 2)*(x + 2)) assert factor(x**3 - 1) == (x - 1) * (x**2 + x + 1) assert factor(x**3 - x) == x * (x - 1) * (x + 1) assert factor(x**2 + 2 * x + 1) == (x + 1)**2 assert factor(x**2 + x - 2) == (x - 1) * (x + 2) assert factor(2 * x**2 + 5 * x + 2) == (x + 2) * (2 * x + 1) assert factor(x**2 + y**2) == x**2 + y**2 assert factor(x**5 - y**2) == x**5 - y**2 assert factor(x * y + x * z + y * z) == x * y + x * z + y * z assert factor(x * y + x * z + x**2) == x * (x + y + z) assert poly_factors(-2*x**2 + x, x) == \ (-1, [(Poly(x, x), 1), (Poly(2*x - 1, x), 1)]) assert poly_factors(x**3 - 3*x**2 + 3*x - 1, x) == \ (1, [(Poly(x - 1, x), 3)]) assert poly_factors(x**6 - 1, x) == \ (1, [(Poly(x - 1, x), 1), (Poly(x + 1, x), 1), (Poly(x**2 - x + 1, x), 1), (Poly(x**2 + x + 1, x), 1)]) assert poly_factors(2*x**3*y - 2*a**2*x*y - 3*a**2*x**2 + 3*a**4, a, x, y) == \ (1, [(Poly(a - x, a, x, y), 1), (Poly(a + x, a, x, y), 1), (Poly(3*a**2 - 2*x*y, a, x, y), 1)])