ffact.spad line 1 [edit on github]
This category specifies operations needed by univariate factorization over finite fields
add_poly(pol1, pol2, md) add polynomials pol1 and pol2.
copy_mat_part(man, nr) creates copy of modular composition matrix stored in first nr rows of mat.
copy_poly(pol, d, m) creates copy of pol with enough space to represent polynomials of degree smaller than d. Error if degree of pol is bigger or equal than d.
degree(pol) returns degree of the polynomial pol.
divide!(pol1, pol2, md) performs division with remainder of pol1 by pol2. pol1 is modified in place to contain remainder. Quotient is return value.
empty_mat() returns empty (that is of dimensions 0) matrix.
empty_mat?(mat) returns true if matrix is empty, false otherwise.
empty_poly() returns empty (that is 0) polynomial.
gcd(pol1, pol2, md) computes gcd of pol1 and pol2.
get_char(md) returns characteristic of the field described by info md.
get_extension_degree(md) returns degree of the field described by info md over its prime subfield.
get_mod(pmd) extracts field info from reduction data.
ini_rdata(pv, p) generates data allowing faster computation of remainders from division by pv modulo p. Result is used by other functions in this package, in particular red_pol!.
mod_exp(pv, d, rd) computes pv^d modulo reduction data in rd.
modular_compose(pol, pm, p1, l1, rd) computes composion of pol with p0 modulo reduction data rd. pm and p1 are as from call to power_matrix(p0, l1, rd).
monomial1(md) returns monomial of degree 1 with coefficient 1.
power_matrix(s, l, rd) computes [m, p] such that p = s^l modulo reduction data rd and column j of m contain s^j modulo reduction data rd. Note that lowest column index is j = 0 and highest index is j=l-1. rd should be obtained by earlier call to ini_rdata.
random_poly(n, md) generated random polynomial of degree n.
red_pol!(pv, rd) computes remainder of pv using reduction data rd produced by earlier call to ini_rdata.
shift_mat!(mat, sa, nr) moves modular composition matrix stored in nr rows of mat starting at sa to first nr rows of mat. This is designed to work on output of split_mat!.
split_mat!(mat, nr0, nr1, nr2, pmod1, pmod2) splits modular composition matrix mat into two matrices, first modulo pmod1, second modulo pmod2. To save space first result replaces first nr1 rows of mat, second result is stored in next nr2 rows of mat. nr0 is number of rows used in argument.
sub1!(pol, md) subtracts 1 from the polynomial pol.
sub_poly(pol1, pol2, md) subtracts polynomials pol2 from pol1.
trim_mat!(mat, nr0, nc1, pmod) reduces modular composition matrix mat modulo reduction data pmod. nr0 is number of rows used in argument, nr1 is number of rows used in the result. mat is is modified in place.