ModularAlgebraicGcdOperations(MP, MPT, MD)ΒΆ

amodgcd.spad line 23

This category specifies operations needed by ModularAlgebraicGcd package. Since we have multiple implementations we specify interface here and put implementations in separate packages. Most operations are done using special purpose abstract representation. Apropriate types are passesd as parametes: MPT is type of modular polynomials in one variable with coefficients in some algebraic extension. MD is type of modulus. Final results are converted to packed representation, with coefficients (from prime field) stored in one array and exponents (in main variable and in auxilary variables representing generators of algebrac extension) stored in parallel array.

canonicalIfCan: (MPT, MD) -> Union(MPT, failed)
canonicalIfCan(x, m) tries to divide x by its leading coefficient modulo m.
degree: MPT -> Integer
degree(x) gives degree of x.
MPtoMPT: (MP, Symbol, List Symbol, MD) -> Union(MPT, failed)
MPtoMPT(p, s, ls, m) converts p to packed represntation.
pack_exps: (Integer, Integer, MD) -> SortedExponentVector
pack_exps(d, s, m) produces vector of exponents up to degree d. s is size (degree) of algebraic extension. Use together with repack1.
pack_modulus: (List MP, List Symbol, Integer) -> Union(MD, failed)
pack_modulus(lp, ls, p) converts lp, ls and prime p which together describe algebraic extension to packed representation.
pseudoRem: (MPT, MPT, MD) -> MPT
pseudoRem(x, y, m) computes pseudoremainder of x by y modulo m.
repack1: (MPT, U32Vector, Integer, MD) -> Void
repack1(x, a, d, m) stores coefficients of x in a. d is degree of x. Corresponding exponents are given by pack_exps.
zero?: MPT -> Boolean
zero?(x) checks if x is zero.