def test_primitive_element(): assert primitive_element([sqrt(2)]) == (PurePoly(x**2 - 2), [1], [[1, 0]]) assert (primitive_element([sqrt(2), sqrt(3)]) == (PurePoly(x**4 - 10*x**2 + 1), [1, 1], [[QQ(+1, 2), 0, -QQ(9, 2), 0], [QQ(-1, 2), 0, QQ(11, 2), 0]])) A = QQ.algebraic_field(sqrt(2)) assert (primitive_element([sqrt(2), sqrt(3)], domain=A) == (PurePoly(x**2 - 2*sqrt(2)*x - 1, x, domain=A), [1, 1], [[A.unit], [1, -A.unit]])) assert (primitive_element([sqrt(2), sqrt(2 + sqrt(2))], domain=A) == (PurePoly(x**2 - 2*sqrt(2)*x - sqrt(2), x, domain=A), [1, 1], [[A.unit], [1, -A.unit]])) A = QQ.algebraic_field(sqrt(2) + sqrt(3)) assert (primitive_element([sqrt(2), sqrt(3)], domain=A) == (PurePoly(x - sqrt(2) - sqrt(3), x, domain=A), [1, 1], [[A([QQ(1, 2), 0, -QQ(9, 2), 0])], [A([-QQ(1, 2), 0, QQ(11, 2), 0])]])) pytest.raises(ValueError, lambda: primitive_element([])) # issue sympy/sympy#13849 assert (primitive_element([sqrt(2), sqrt(2) + sqrt(5)]) == (PurePoly(x**4 - 76*x**2 + 4), [1, 2], [[QQ(1, 12), 0, QQ(-37, 6), 0], [QQ(-1, 24), 0, QQ(43, 12), 0]])) # issue sympy/sympy#14117 assert (primitive_element([I*sqrt(2*sqrt(2) + 3), I*sqrt(-2*sqrt(2) + 3), I]) == (PurePoly(x**4 + 54*x**2 + 81), [1, 2, 4], [[QQ(1, 3), 0], [QQ(1, 27), 0, 2, 0], [QQ(-1, 54), 0, QQ(-5, 6), 0]]))
def test_sympyissue_18874(): e = [sqrt(2) + sqrt(5), sqrt(2)] assert primitive_element(e) == (PurePoly(x**4 - 46 * x**2 + 169), [1, 2], [[0, QQ(-20, 39), 0, QQ(1, 39)], [0, QQ(59, 78), 0, QQ(-1, 78)]])