# PrimGCDΒΆ

This is unfinished package for computing primitive `gcd` over algebraic extensions. Algebraic extension is defined by list of polynomial forming triangular system. Currently implemented is only trial division.

alg_reduce0: (SparseMultivariatePolynomial(Integer, Symbol), SparseMultivariatePolynomial(Integer, Symbol), List Symbol, Symbol) -> SparseMultivariatePolynomial(Integer, Symbol)

`alg_reduce0(x, m, lv, z)` performs single reduction step.

alg_reduce: (SparseMultivariatePolynomial(Integer, Symbol), List SparseMultivariatePolynomial(Integer, Symbol), List Symbol, List Symbol) -> SparseMultivariatePolynomial(Integer, Symbol)

`alg_reduce(x, lm, lv, lz)` reduces `x` modulo elements of `lm`.

alg_trial_division: (SparseMultivariatePolynomial(Integer, Symbol), SparseMultivariatePolynomial(Integer, Symbol), List SparseMultivariatePolynomial(Integer, Symbol), List Symbol, List Symbol) -> Boolean

`alg_trial_division(x, y, lm, lv, lz)` checks if `x` is divisible by `y` in algebraic extension defined by `lm`. `lz` is list of algebraic variables, `lv` is list of independent (polynomial) variables. Other variables serve as parameters.

coeffs0: (SparseMultivariatePolynomial(Integer, Symbol), List Symbol, List SparseMultivariatePolynomial(Integer, Symbol)) -> List SparseMultivariatePolynomial(Integer, Symbol)

`coeffs0(x, lv, lp)` is used by `coeffs1`

coeffs1: (SparseMultivariatePolynomial(Integer, Symbol), List Symbol) -> List SparseMultivariatePolynomial(Integer, Symbol)

`coeffs1(x, lv)` computes list of coefficients of `x` with respect to variables in `lv`. Variables in `lv` must be decreasing and bigger than all other variables of `x`.

lcx0: (SparseMultivariatePolynomial(Integer, Symbol), List Symbol) -> Record(lcx0lc: SparseMultivariatePolynomial(Integer, Symbol), lcx0m: SparseMultivariatePolynomial(Integer, Symbol))

`lcx0(x, lv)` computes leading coefficient of `x` and corresponding product of variables (monomial with coefficient 1) with respect to variables in `lv` Variables in `lv` must be decreasing and bigger than all other variables of `x`.

lcz: (SparseMultivariatePolynomial(Integer, Symbol), Symbol) -> Record(lczlc: SparseMultivariatePolynomial(Integer, Symbol), k: Integer)

`lcz(x, z)` computes leading coefficient and degree of `x` with respect to variable `z`.