![]() |
My Project
|
This file provides functions for factorizing a bivariate polynomial over 

#include "timing.h"#include "cf_assert.h"#include "facFqBivarUtil.h"#include "DegreePattern.h"#include "ExtensionInfo.h"#include "cf_util.h"#include "facFqSquarefree.h"#include "cf_map.h"#include "cfNewtonPolygon.h"#include "fac_util.h"#include "cf_algorithm.h"Go to the source code of this file.
Functions | |
| TIMING_DEFINE_PRINT (fac_fq_bi_sqrf) TIMING_DEFINE_PRINT(fac_fq_bi_factor_sqrf) static const double log2exp | |
| CFList | biFactorize (const CanonicalForm &F, const ExtensionInfo &info) |
| Factorization of a squarefree bivariate polynomials over an arbitrary finite field, information on the current field we work over is in info. info may also contain information about the initial field if initial and current field do not coincide. In this case the current field is an extension of the initial field and the factors returned are factors of F over the initial field. | |
| CFList | biSqrfFactorizeHelper (const CanonicalForm &G, const ExtensionInfo &info) |
| CFList | FpBiSqrfFactorize (const CanonicalForm &G) |
factorize a squarefree bivariate polynomial over ![]() | |
| CFList | FqBiSqrfFactorize (const CanonicalForm &G, const Variable &alpha) |
factorize a squarefree bivariate polynomial over ![]() | |
| CFList | GFBiSqrfFactorize (const CanonicalForm &G) |
| factorize a squarefree bivariate polynomial over GF | |
| CFFList | FpBiFactorize (const CanonicalForm &G, bool substCheck=true) |
factorize a bivariate polynomial over ![]() | |
| CFFList | FqBiFactorize (const CanonicalForm &G, const Variable &alpha, bool substCheck=true) |
factorize a bivariate polynomial over ![]() | |
| CFFList | GFBiFactorize (const CanonicalForm &G, bool substCheck=true) |
| factorize a bivariate polynomial over GF | |
| CanonicalForm | prodMod0 (const CFList &L, const CanonicalForm &M, const modpk &b=modpk()) |
![]() | |
| CanonicalForm | evalPoint (const CanonicalForm &F, CanonicalForm &eval, const Variable &alpha, CFList &list, const bool &GF, bool &fail) |
find an evaluation point p, s.t. F(p,y) is squarefree and ![]() | |
| CFList | uniFactorizer (const CanonicalForm &A, const Variable &alpha, const bool &GF) |
| Univariate factorization of squarefree monic polys over finite fields via NTL. If the characteristic is even special GF2 routines of NTL are used. | |
| CFList | extFactorRecombination (CFList &factors, CanonicalForm &F, const CanonicalForm &M, const ExtensionInfo &info, DegreePattern °s, const CanonicalForm &eval, int s, int thres) |
| naive factor recombination over an extension of the initial field. Uses precomputed data to exclude combinations that are not possible. | |
| CFList | factorRecombination (CFList &factors, CanonicalForm &F, const CanonicalForm &M, DegreePattern °s, const CanonicalForm &eval, int s, int thres, const modpk &b=modpk(), const CanonicalForm &den=1) |
| naive factor recombination. Uses precomputed data to exclude combinations that are not possible. | |
| Variable | chooseExtension (const Variable &alpha, const Variable &beta, int k) |
| chooses a field extension. | |
| int * | getLiftPrecisions (const CanonicalForm &F, int &sizeOfOutput, int degreeLC) |
| compute lifting precisions from the shape of the Newton polygon of F | |
| void | earlyFactorDetection (CFList &reconstructedFactors, CanonicalForm &F, CFList &factors, int &adaptedLiftBound, int *&factorsFoundIndex, DegreePattern °s, bool &success, int deg, const CanonicalForm &eval, const modpk &b=modpk()) |
| detects factors of F at stage deg of Hensel lifting. No combinations of more than one factor are tested. Lift bound and possible degree pattern are updated. | |
| void | extEarlyFactorDetection (CFList &reconstructedFactors, CanonicalForm &F, CFList &factors, int &adaptedLiftBound, int *&factorsFoundIndex, DegreePattern °s, bool &success, const ExtensionInfo &info, const CanonicalForm &eval, int deg) |
| detects factors of F at stage deg of Hensel lifting. No combinations of more than one factor are tested. Lift bound and possible degree pattern are updated. | |
| CFList | henselLiftAndEarly (CanonicalForm &A, bool &earlySuccess, CFList &earlyFactors, DegreePattern °s, int &liftBound, const CFList &uniFactors, const ExtensionInfo &info, const CanonicalForm &eval, modpk &b, CanonicalForm &den) |
| hensel Lifting and early factor detection | |
| CFList | henselLiftAndEarly (CanonicalForm &A, bool &earlySuccess, CFList &earlyFactors, DegreePattern °s, int &liftBound, const CFList &uniFactors, const ExtensionInfo &info, const CanonicalForm &eval) |
| hensel Lifting and early factor detection | |
| CFList | extBiFactorize (const CanonicalForm &F, const ExtensionInfo &info) |
| Factorization over an extension of initial field. | |
This file provides functions for factorizing a bivariate polynomial over 

Definition in file facFqBivar.h.
| CFList biFactorize | ( | const CanonicalForm & | F, |
| const ExtensionInfo & | info ) |
Factorization of a squarefree bivariate polynomials over an arbitrary finite field, information on the current field we work over is in info. info may also contain information about the initial field if initial and current field do not coincide. In this case the current field is an extension of the initial field and the factors returned are factors of F over the initial field.
Factorization of a squarefree bivariate polynomials over an arbitrary finite field, information on the current field we work over is in info. info may also contain information about the initial field if initial and current field do not coincide. In this case the current field is an extension of the initial field and the factors returned are factors of F over the initial field.
| [in] | F | a sqrfree bivariate poly |
| [in] | info | information about extension |
Definition at line 8306 of file facFqBivar.cc.
|
inline |
Definition at line 55 of file facFqBivar.h.
chooses a field extension.
Definition at line 809 of file facFqBivar.cc.
| void earlyFactorDetection | ( | CFList & | reconstructedFactors, |
| CanonicalForm & | F, | ||
| CFList & | factors, | ||
| int & | adaptedLiftBound, | ||
| int *& | factorsFoundIndex, | ||
| DegreePattern & | degs, | ||
| bool & | success, | ||
| int | deg, | ||
| const CanonicalForm & | eval, | ||
| const modpk & | b = modpk() ) |
detects factors of F at stage deg of Hensel lifting. No combinations of more than one factor are tested. Lift bound and possible degree pattern are updated.
| [in,out] | reconstructedFactors | list of reconstructed factors |
| [in,out] | F | poly to be factored, returns poly divided by detected factors in case of success |
| [in,out] | factors | list of factors lifted up to deg, returns a list of factors without detected factors |
| [in,out] | adaptedLiftBound | adapted lift bound |
| [in,out] | factorsFoundIndex | factors already considered |
| [in,out] | degs | degree pattern, is updated whenever we find a factor |
| [in,out] | success | indicating success |
| [in] | deg | stage of Hensel lifting |
| [in] | eval | evaluation point |
| [in] | b | coeff bound |
Definition at line 974 of file facFqBivar.cc.
| CanonicalForm evalPoint | ( | const CanonicalForm & | F, |
| CanonicalForm & | eval, | ||
| const Variable & | alpha, | ||
| CFList & | list, | ||
| const bool & | GF, | ||
| bool & | fail ) |
find an evaluation point p, s.t. F(p,y) is squarefree and 
| [in] | F | compressed, bivariate poly |
| [in,out] | eval | F (p, y) |
| [in] | alpha | algebraic variable |
| [in] | list | list of points already considered |
| [in] | GF | GaloisFieldDomain? |
| [in,out] | fail | equals true, if there is no valid evaluation point |
Definition at line 87 of file facFqBivar.cc.
| CFList extBiFactorize | ( | const CanonicalForm & | F, |
| const ExtensionInfo & | info ) |
Factorization over an extension of initial field.
| [in] | F | poly to be factored |
| [in] | info | info about extension |
Definition at line 8931 of file facFqBivar.cc.
| void extEarlyFactorDetection | ( | CFList & | reconstructedFactors, |
| CanonicalForm & | F, | ||
| CFList & | factors, | ||
| int & | adaptedLiftBound, | ||
| int *& | factorsFoundIndex, | ||
| DegreePattern & | degs, | ||
| bool & | success, | ||
| const ExtensionInfo & | info, | ||
| const CanonicalForm & | eval, | ||
| int | deg ) |
detects factors of F at stage deg of Hensel lifting. No combinations of more than one factor are tested. Lift bound and possible degree pattern are updated.
| [in,out] | reconstructedFactors | list of reconstructed factors |
| [in,out] | F | poly to be factored, returns poly divided by detected factors in case of success |
| [in,out] | factors | list of factors lifted up to deg, returns a list of factors without detected factors |
| [in,out] | adaptedLiftBound | adapted lift bound |
| [in,out] | factorsFoundIndex | factors already considered |
| [in,out] | degs | degree pattern, is updated whenever we find a factor |
| [in,out] | success | indicating success |
| [in] | info | information about extension |
| [in] | eval | evaluation point |
| [in] | deg | stage of Hensel lifting |
Definition at line 985 of file facFqBivar.cc.
| CFList extFactorRecombination | ( | CFList & | factors, |
| CanonicalForm & | F, | ||
| const CanonicalForm & | N, | ||
| const ExtensionInfo & | info, | ||
| DegreePattern & | degs, | ||
| const CanonicalForm & | eval, | ||
| int | s, | ||
| int | thres ) |
naive factor recombination over an extension of the initial field. Uses precomputed data to exclude combinations that are not possible.
naive factor recombination over an extension of the initial field. Uses precomputed data to exclude combinations that are not possible.
| [in,out] | factors | list of lifted factors that are monic wrt Variable (1), original factors-factors found |
| [in,out] | F | poly to be factored, F/factors found |
| [in] | N | Variable (2)^liftBound |
| [in] | info | contains information about extension |
| [in] | eval | evaluation point |
| [in] | s | algorithm starts checking subsets of size s |
| [in] | thres | threshold for the size of subsets which are checked, for a full factor recombination choose thres= factors.length()/2 |
Definition at line 373 of file facFqBivar.cc.
| CFList factorRecombination | ( | CFList & | factors, |
| CanonicalForm & | F, | ||
| const CanonicalForm & | N, | ||
| DegreePattern & | degs, | ||
| const CanonicalForm & | eval, | ||
| int | s, | ||
| int | thres, | ||
| const modpk & | b, | ||
| const CanonicalForm & | den ) |
naive factor recombination. Uses precomputed data to exclude combinations that are not possible.
naive factor recombination. Uses precomputed data to exclude combinations that are not possible.
| [in,out] | factors | list of lifted factors that are monic wrt Variable (1) |
| [in,out] | F | poly to be factored |
| [in] | N | Variable (2)^liftBound |
| [in] | degs | degree pattern |
| [in] | eval | evaluation point |
| [in] | s | algorithm starts checking subsets of size s |
| [in] | thres | threshold for the size of subsets which are checked, for a full factor recombination choose thres= factors.length()/2 |
| [in] | b | coeff bound |
| [in] | den | bound on the den if over Q (a) |
Definition at line 589 of file facFqBivar.cc.
|
inline |
factorize a bivariate polynomial over 
| [in] | G | a bivariate poly |
| [in] | substCheck | enables substitute check |
Definition at line 190 of file facFqBivar.h.
|
inline |
factorize a squarefree bivariate polynomial over 
| [in] | G | a bivariate poly |
Definition at line 141 of file facFqBivar.h.
|
inline |
factorize a bivariate polynomial over 
Definition at line 317 of file facFqBivar.h.
|
inline |
factorize a squarefree bivariate polynomial over 
Definition at line 156 of file facFqBivar.h.
| int * getLiftPrecisions | ( | const CanonicalForm & | F, |
| int & | sizeOfOutput, | ||
| int | degreeLC ) |
compute lifting precisions from the shape of the Newton polygon of F
| [in] | F | a bivariate poly |
| [in,out] | sizeOfOutput | size of the output |
| [in] | degreeLC | degree of the leading coeff [in] of F wrt. Variable (1) |
Definition at line 1123 of file facFqBivar.cc.
|
inline |
factorize a bivariate polynomial over GF
| [in] | G | a bivariate poly |
| [in] | substCheck | enables substitute check |
Definition at line 446 of file facFqBivar.h.
|
inline |
factorize a squarefree bivariate polynomial over GF
| [in] | G | a bivariate poly |
Definition at line 172 of file facFqBivar.h.
| CFList henselLiftAndEarly | ( | CanonicalForm & | A, |
| bool & | earlySuccess, | ||
| CFList & | earlyFactors, | ||
| DegreePattern & | degs, | ||
| int & | liftBound, | ||
| const CFList & | uniFactors, | ||
| const ExtensionInfo & | info, | ||
| const CanonicalForm & | eval ) |
hensel Lifting and early factor detection
| [in,out] | A | poly to be factored, returns poly divided by detected factors in case of success |
| [in,out] | earlySuccess | indicating success |
| [in,out] | earlyFactors | list of factors detected at early stage of Hensel lifting |
| [in,out] | degs | degree pattern |
| [in,out] | liftBound | (adapted) lift bound |
| [in] | uniFactors | univariate factors |
| [in] | info | information about extension |
| [in] | eval | evaluation point |
Definition at line 1458 of file facFqBivar.cc.
| CFList henselLiftAndEarly | ( | CanonicalForm & | A, |
| bool & | earlySuccess, | ||
| CFList & | earlyFactors, | ||
| DegreePattern & | degs, | ||
| int & | liftBound, | ||
| const CFList & | uniFactors, | ||
| const ExtensionInfo & | info, | ||
| const CanonicalForm & | eval, | ||
| modpk & | b, | ||
| CanonicalForm & | den ) |
hensel Lifting and early factor detection
| [in,out] | A | poly to be factored, returns poly divided by detected factors in case of success |
| [in,out] | earlySuccess | indicating success |
| [in,out] | earlyFactors | list of factors detected at early stage of Hensel lifting |
| [in,out] | degs | degree pattern |
| [in,out] | liftBound | (adapted) lift bound |
| [in] | uniFactors | univariate factors |
| [in] | info | information about extension |
| [in] | eval | evaluation point |
| [in] | b | coeff bound |
| [in] | den | bound on the den if over Q(a) |
Definition at line 1155 of file facFqBivar.cc.
| CanonicalForm prodMod0 | ( | const CFList & | L, |
| const CanonicalForm & | M, | ||
| const modpk & | b = modpk() ) |
| TIMING_DEFINE_PRINT | ( | fac_fq_bi_sqrf | ) | const |
Univariate factorization of squarefree monic polys over finite fields via NTL. If the characteristic is even special GF2 routines of NTL are used.
Definition at line 163 of file facFqBivar.cc.