34 const int POLYFACT_FIRST_PRIME = 17;
38 const int POLYFACT_IDEAL_FRACTION = 5;
42 const int POLYFACT_MAX_IDEAL_TRIES = 3;
46 const int POLYFACT_NUM_CONFIRMATIONS = 3;
50 const int POLYFACT_MAX_PREDETERMINATION = 1000;
59 std::vector<poly> factor;
60 std::vector<int> power;
62 void add_factor(
const poly &f,
int p=1);
63 const std::string tostring ()
const;
64 friend std::ostream& operator<< (std::ostream &out,
const poly &p);
80 const std::vector<poly> factorize_squarefree (
const poly &a,
const std::vector<int> &x);
81 WORD choose_prime (
const poly &a,
const std::vector<int> &x, WORD p=0);
82 WORD choose_prime_power (
const poly &a, WORD p);
83 const std::vector<int> choose_ideal (
const poly &a,
int p,
const factorized_poly &lc,
const std::vector<int> &x);
86 const std::vector<std::vector<WORD> > Berlekamp_Qmatrix (
const poly &a);
87 const std::vector<poly> Berlekamp_find_factors (
const poly &a,
const std::vector<std::vector<WORD> > &Q);
88 const std::vector<poly> combine_factors (
const poly &a,
const std::vector<poly> &f);
91 const std::vector<poly> extended_gcd_Euclidean_lifted (
const poly &a,
const poly &b);
92 const std::vector<poly> solve_Diophantine_univariate (
const std::vector<poly> &a,
const poly &b);
93 const std::vector<poly> solve_Diophantine_multivariate (
const std::vector<poly> &a,
const poly &b,
const std::vector<int> &x,
const std::vector<int> &c,
int d);
94 const std::vector<poly> lift_coefficients (
const poly &a,
const std::vector<poly> &f);
95 const std::vector<poly> lift_variables (
const poly &a,
const std::vector<poly> &f,
const std::vector<int> &x,
const std::vector<int> &c,
const std::vector<poly> &lc);
96 void predetermine (
int dep,
const std::vector<std::vector<int> > &state, std::vector<std::vector<std::vector<int> > > &terms, std::vector<int> &term,
int sumdeg=0);