# PrimitiveElement FΒΆ

PrimitiveElement provides functions to compute primitive elements in algebraic extensions.

primitiveElement: (List Polynomial F, List Symbol) -> Record(coef: List Integer, poly: List SparseUnivariatePolynomial F, prim: SparseUnivariatePolynomial F)

`primitiveElement([p1, ..., pn], [a1, ..., an])` returns `[[c1, ..., cn], [q1, ..., qn], q]` such that then `k(a1, ..., an) = k(a)`, where `a = a1 c1 + ... + an cn`, `ai = qi(a)`, and `q(a) = 0`. The `pi``'s` are the defining polynomials for the `ai``'s`. This operation uses the technique of spadglossSee{groebner bases}{Groebner basis}.

primitiveElement: (List Polynomial F, List Symbol, Symbol) -> Record(coef: List Integer, poly: List SparseUnivariatePolynomial F, prim: SparseUnivariatePolynomial F)

`primitiveElement([p1, ..., pn], [a1, ..., an], a)` returns `[[c1, ..., cn], [q1, ..., qn], q]` such that then `k(a1, ..., an) = k(a)`, where `a = a1 c1 + ... + an cn`, `ai = qi(a)`, and `q(a) = 0`. The `pi``'s` are the defining polynomials for the `ai``'s`. This operation uses the technique of spadglossSee{groebner bases}{Groebner basis}.

primitiveElement: (Polynomial F, Symbol, Polynomial F, Symbol) -> Record(coef1: Integer, coef2: Integer, prim: SparseUnivariatePolynomial F)

`primitiveElement(p1, a1, p2, a2)` returns `[c1, c2, q]` such that `k(a1, a2) = k(a)` where `a = c1 a1 + c2 a2, and q(a) = 0`. The `pi``'s` are the defining polynomials for the `ai``'s`. The `p2` may involve `a1`, but `p1` must not involve `a2`. This operation uses resultant.