My Project
|
This file provides utility functions for bivariate factorization. More...
Go to the source code of this file.
Functions | |
void | append (CFList &factors1, const CFList &factors2) |
append factors2 on factors1 More... | |
void | decompress (CFList &factors, const CFMap &N) |
decompress a list of polys factors using the map N More... | |
void | decompress (CFFList &factors, const CFMap &N) |
as above More... | |
void | decompress (CFAFList &factors, const CFMap &N) |
as above More... | |
void | appendSwapDecompress (CFList &factors1, const CFList &factors2, const CFList &factors3, const bool swap1, const bool swap2, const CFMap &N) |
first swap Variables in factors1 if necessary, then append factors2 and factors3 on factors1 and finally decompress factors1 More... | |
void | swapDecompress (CFList &factors, const bool swap, const CFMap &N) |
swap Variables in factors, then decompress factors More... | |
bool | isInExtension (const CanonicalForm &F, const CanonicalForm &gamma, const int k, const CanonicalForm &delta, CFList &source, CFList &dest) |
tests if F is not contained in a subfield defined by gamma (Fq case) or k (GF case) More... | |
CanonicalForm | mapDown (const CanonicalForm &F, const ExtensionInfo &info, CFList &source, CFList &dest) |
map a poly into a subfield of the current field, no testing is performed! More... | |
void | appendTestMapDown (CFList &factors, const CanonicalForm &f, const ExtensionInfo &info, CFList &source, CFList &dest) |
test if g is in a subfield of the current field, if so map it down and append it to factors More... | |
void | appendMapDown (CFList &factors, const CanonicalForm &g, const ExtensionInfo &info, CFList &source, CFList &dest) |
map g down into a subfield of the current field and append it to factors More... | |
void | normalize (CFList &factors) |
normalize factors, i.e. make factors monic More... | |
void | normalize (CFFList &factors) |
as above More... | |
CFList | subset (int index[], const int &s, const CFArray &elements, bool &noSubset) |
extract a subset given by index of size s from elements, if there is no subset we have not yet considered noSubset is set to true. index encodes the next subset, e.g. if s= 3, elements= {a,b,c,d}, index= {1, 2, 4, 0}, then subset= {a,c,d}. index is of size elements.size(). More... | |
CFArray | copy (const CFList &list) |
write elements of list into an array More... | |
void | indexUpdate (int index[], const int &subsetSize, const int &setSize, bool &noSubset) |
update index More... | |
int | subsetDegree (const CFList &S) |
compute the sum of degrees in Variable(1) of elements in S More... | |
CFFList | multiplicity (CanonicalForm &F, const CFList &factors) |
determine multiplicity of the factors More... | |
CFArray | logarithmicDerivative (const CanonicalForm &F, const CanonicalForm &G, int l, CanonicalForm &Q) |
compute the coefficients of the logarithmic derivative of G mod Variable (2)^l over Fq More... | |
CFArray | logarithmicDerivative (const CanonicalForm &F, const CanonicalForm &G, int l, int oldL, const CanonicalForm &oldQ, CanonicalForm &Q) |
compute the coefficients of the logarithmic derivative of G mod Variable (2)^l over Fq with oldQ= F/G mod Variable (2)^oldL More... | |
int * | computeBounds (const CanonicalForm &F, int &n, bool &isIrreducible) |
compute bounds for logarithmic derivative as described in K. Belabas, M. van Hoeij, J. Klüners, and A. Steel, Factoring polynomials over global fields More... | |
int * | computeBoundsWrtDiffMainvar (const CanonicalForm &F, int &n, bool &isIrreducible) |
as above just wrt to the other variable More... | |
CFArray | getCoeffs (const CanonicalForm &F, const int k) |
extract coefficients of for where is a variable of level 1 More... | |
CFArray | getCoeffs (const CanonicalForm &F, const int k, const Variable &alpha) |
extract coefficients of for where is a variable of level 1 More... | |
CFArray | getCoeffs (const CanonicalForm &F, const int k, const int l, const int degMipo, const Variable &alpha, const CanonicalForm &evaluation, const mat_zz_p &M) |
extract coefficients of for where is a variable of level 1 More... | |
CFArray | getCoeffs (const CanonicalForm &F, const int k, const int l, const int degMipo, const Variable &alpha, const CanonicalForm &evaluation, const nmod_mat_t M) |
extract coefficients of for where is a variable of level 1 More... | |
void | writeInMatrix (CFMatrix &M, const CFArray &A, const int column, const int startIndex) |
write A into M starting at row startIndex More... | |
int | substituteCheck (const CFList &L) |
checks if a substitution x^n->x is possible More... | |
void | subst (const CanonicalForm &F, CanonicalForm &A, const int d, const Variable &x) |
substitute x^d by x in F More... | |
CanonicalForm | reverseSubst (const CanonicalForm &F, const int d, const Variable &x) |
reverse a substitution x^d->x More... | |
void | reverseSubst (CFList &L, const int d, const Variable &x) |
reverse a substitution x^d->x More... | |
int | substituteCheck (const CanonicalForm &F, const Variable &x) |
check if a substitution x^n->x is possible More... | |
This file provides utility functions for bivariate factorization.
Definition in file facFqBivarUtil.h.
append factors2 on factors1
[in,out] | factors1 | a list of polys |
[in] | factors2 | a list of polys |
void appendMapDown | ( | CFList & | factors, |
const CanonicalForm & | g, | ||
const ExtensionInfo & | info, | ||
CFList & | source, | ||
CFList & | dest | ||
) |
map g down into a subfield of the current field and append it to factors
[in,out] | factors | a list of polys |
[in] | g | a poly |
[in] | info | information about extension |
[in,out] | source |
[in,out] | dest |
Definition at line 267 of file facFqBivarUtil.cc.
void appendSwapDecompress | ( | CFList & | factors1, |
const CFList & | factors2, | ||
const CFList & | factors3, | ||
const bool | swap1, | ||
const bool | swap2, | ||
const CFMap & | N | ||
) |
first swap Variables in factors1 if necessary, then append factors2 and factors3 on factors1 and finally decompress factors1
[in,out] | factors1 | a list of polys |
[in] | factors2 | a list of polys |
[in] | factors3 | a list of polys |
[in] | swap1 | indicates the need to swap |
[in] | swap2 | indicates the need to swap |
[in] | N | a map |
Definition at line 70 of file facFqBivarUtil.cc.
void appendTestMapDown | ( | CFList & | factors, |
const CanonicalForm & | f, | ||
const ExtensionInfo & | info, | ||
CFList & | source, | ||
CFList & | dest | ||
) |
test if g is in a subfield of the current field, if so map it down and append it to factors
[in,out] | factors | a list of polys |
[in] | f | a poly |
[in] | info | information about extension |
[in,out] | source |
[in,out] | dest |
Definition at line 223 of file facFqBivarUtil.cc.
int * computeBounds | ( | const CanonicalForm & | F, |
int & | n, | ||
bool & | isIrreducible | ||
) |
compute bounds for logarithmic derivative as described in K. Belabas, M. van Hoeij, J. Klüners, and A. Steel, Factoring polynomials over global fields
[in] | F | compressed bivariate polynomial |
[in,out] | n | length of output |
[in,out] | isIrreducible | check if poly is irreducible |
Definition at line 768 of file facFqBivarUtil.cc.
int * computeBoundsWrtDiffMainvar | ( | const CanonicalForm & | F, |
int & | n, | ||
bool & | isIrreducible | ||
) |
as above just wrt to the other variable
[in] | F | compressed bivariate polynomial |
[in,out] | n | length of output |
[in,out] | isIrreducible | check if poly is irreducible |
Definition at line 922 of file facFqBivarUtil.cc.
write elements of list into an array
[in] | list | a list of polys |
Definition at line 364 of file facFqBivarUtil.cc.
as above
[in,out] | factors | a list of factors |
[in] | N | a map |
Definition at line 63 of file facFqBivarUtil.cc.
as above
[in,out] | factors | a list of factors |
[in] | N | a map |
Definition at line 57 of file facFqBivarUtil.cc.
decompress a list of polys factors using the map N
[in,out] | factors | a list of polys |
[in] | N | a map |
Definition at line 51 of file facFqBivarUtil.cc.
CFArray getCoeffs | ( | const CanonicalForm & | F, |
const int | k | ||
) |
extract coefficients of for where is a variable of level 1
[in] | F | compressed bivariate poly over F_p |
[in] | k | some int |
Definition at line 599 of file facFqBivarUtil.cc.
CFArray getCoeffs | ( | const CanonicalForm & | F, |
const int | k, | ||
const int | l, | ||
const int | degMipo, | ||
const Variable & | alpha, | ||
const CanonicalForm & | evaluation, | ||
const mat_zz_p & | M | ||
) |
extract coefficients of for where is a variable of level 1
[in] | F | compressed bivariate poly |
[in] | k | some int |
[in] | l | precision |
[in] | degMipo | degree of minimal poly |
[in] | alpha | algebraic variable |
[in] | evaluation | evaluation point |
[in] | M | bases change matrix |
Definition at line 663 of file facFqBivarUtil.cc.
CFArray getCoeffs | ( | const CanonicalForm & | F, |
const int | k, | ||
const int | l, | ||
const int | degMipo, | ||
const Variable & | alpha, | ||
const CanonicalForm & | evaluation, | ||
const nmod_mat_t | M | ||
) |
extract coefficients of for where is a variable of level 1
[in] | F | compressed bivariate poly |
[in] | k | some int |
[in] | l | precision |
[in] | degMipo | degree of minimal poly |
[in] | alpha | algebraic variable |
[in] | evaluation | evaluation point |
[in] | M | bases change matrix |
Definition at line 705 of file facFqBivarUtil.cc.
extract coefficients of for where is a variable of level 1
[in] | F | compressed bivariate poly over F_p(alpha) |
[in] | k | some int |
[in] | alpha | algebraic variable |
Definition at line 622 of file facFqBivarUtil.cc.
update index
[in,out] | index | an array encoding a subset of size subsetSize |
[in] | subsetSize | size of the subset |
[in] | setSize | size of the given set |
[in,out] | noSubset | if there is no subset we have not yet considered noSubset is true |
Definition at line 373 of file facFqBivarUtil.cc.
bool isInExtension | ( | const CanonicalForm & | F, |
const CanonicalForm & | gamma, | ||
const int | k, | ||
const CanonicalForm & | delta, | ||
CFList & | source, | ||
CFList & | dest | ||
) |
tests if F is not contained in a subfield defined by gamma (Fq case) or k (GF case)
[in] | F | a poly over F_p (alpha)=Fq or GF(p^l) |
[in] | gamma | a primitive element defining a subfield of Fq if we are not over some GF |
k | some int k such that k divides l if we are not over some Fq | |
[in] | delta | image of gamma |
[in,out] | source | list of preimages |
[in,out] | dest | list of images |
Definition at line 184 of file facFqBivarUtil.cc.
CFArray logarithmicDerivative | ( | const CanonicalForm & | F, |
const CanonicalForm & | G, | ||
int | l, | ||
CanonicalForm & | Q | ||
) |
compute the coefficients of the logarithmic derivative of G mod Variable (2)^l over Fq
[in] | F | a bivariate poly |
[in] | G | a factor of F |
[in] | l | lifting precision |
[in,out] | Q | F/G |
Definition at line 459 of file facFqBivarUtil.cc.
CFArray logarithmicDerivative | ( | const CanonicalForm & | F, |
const CanonicalForm & | G, | ||
int | l, | ||
int | oldL, | ||
const CanonicalForm & | oldQ, | ||
CanonicalForm & | Q | ||
) |
compute the coefficients of the logarithmic derivative of G mod Variable (2)^l over Fq with oldQ= F/G mod Variable (2)^oldL
[in] | F | bivariate poly truncated at Variable(2)^l |
[in] | G | a factor of F |
[in] | l | lifting precision |
[in] | oldL | old precision |
[in] | oldQ | F/G mod Variable(2)^oldL |
[in,out] | Q | F/G |
Definition at line 501 of file facFqBivarUtil.cc.
CanonicalForm mapDown | ( | const CanonicalForm & | F, |
const ExtensionInfo & | info, | ||
CFList & | source, | ||
CFList & | dest | ||
) |
map a poly into a subfield of the current field, no testing is performed!
[in] | F | a poly |
[in] | info | information about the sub- and current field |
[in,out] | source | in case we are over some F_p (alpha) and want to map down into F_p (beta) source contains powers of the primitive element of F_p (alpha) |
[in,out] | dest | as source but contains the corresponding powers of the primitive element of F_p (beta) |
Definition at line 206 of file facFqBivarUtil.cc.
CFFList multiplicity | ( | CanonicalForm & | F, |
const CFList & | factors | ||
) |
determine multiplicity of the factors
[in] | F | a poly |
[in] | factors | a list of factors of F |
Definition at line 436 of file facFqBivarUtil.cc.
void normalize | ( | CFFList & | factors | ) |
as above
[in,out] | factors | a list of factors |
Definition at line 297 of file facFqBivarUtil.cc.
void normalize | ( | CFList & | factors | ) |
normalize factors, i.e. make factors monic
[in,out] | factors | a list of polys |
Definition at line 286 of file facFqBivarUtil.cc.
reverse a substitution x^d->x
[in,out] | L | a list of polys, returns the given list with x replaced by x^d |
[in] | d | an integer > 0 |
[in] | x | a Variable |
Definition at line 1309 of file facFqBivarUtil.cc.
CanonicalForm reverseSubst | ( | const CanonicalForm & | F, |
const int | d, | ||
const Variable & | x | ||
) |
reverse a substitution x^d->x
[in] | F | a poly |
[in] | d | an integer > 0 |
[in] | x | a Variable |
Definition at line 1295 of file facFqBivarUtil.cc.
extract a subset given by index of size s from elements, if there is no subset we have not yet considered noSubset is set to true. index encodes the next subset, e.g. if s= 3, elements= {a,b,c,d}, index= {1, 2, 4, 0}, then subset= {a,c,d}. index is of size elements.size().
[in,out] | index | an array encoding the next subset |
[in] | s | size of the subset |
[in] | elements | an array of polys |
[in,out] | noSubset | if there is no subset we have not yet considered noSubset is true |
Definition at line 309 of file facFqBivarUtil.cc.
compute the sum of degrees in Variable(1) of elements in S
[in] | S | a list of polys |
Definition at line 428 of file facFqBivarUtil.cc.
void subst | ( | const CanonicalForm & | F, |
CanonicalForm & | A, | ||
const int | d, | ||
const Variable & | x | ||
) |
substitute x^d by x in F
[in] | F | a polynomial |
[in,out] | A | returns F with x^d replaced by x |
d | d > 1 such that a substitution x^d -> x [in] is possible | |
[in] | x | a Variable |
Definition at line 1275 of file facFqBivarUtil.cc.
int substituteCheck | ( | const CanonicalForm & | F, |
const Variable & | x | ||
) |
check if a substitution x^n->x is possible
[in] | F | a polynomial |
[in] | x | some variable |
Definition at line 1089 of file facFqBivarUtil.cc.
checks if a substitution x^n->x is possible
[in] | L | a list of univariate polys |
Definition at line 1254 of file facFqBivarUtil.cc.
swap Variables in factors, then decompress factors
[in,out] | factors | a list of polys |
[in] | swap | indicates the need to swap |
[in] | N | a map |
Definition at line 97 of file facFqBivarUtil.cc.
write A into M starting at row startIndex
[in,out] | M | some matrix |
[in] | A | array of polys |
[in] | column | column in which A is written |
[in] | startIndex | row in which to start |
Definition at line 586 of file facFqBivarUtil.cc.