36 #define POLYGCD_USE_HEURISTIC 39 const int POLYGCD_HEURISTIC_MAX_DIGITS = 1000;
42 const int POLYGCD_HEURISTIC_MAX_TRIES = 10;
45 const int POLYGCD_HEURISTIC_MAX_ADD_RANDOM = 10;
48 const int POLYGCD_RAISPOWMOD_CACHE_SIZE = 1000;
54 const poly integer_content (
const poly &a);
57 const poly content_univar (
const poly &a,
int x);
58 const poly content_multivar (
const poly &a,
int x);
60 const std::vector<WORD> coefficient_list_gcd (
const std::vector<WORD> &a,
const std::vector<WORD> &b, WORD p);
63 const poly gcd_heuristic (
const poly &a,
const poly &b,
const std::vector<int> &x,
int max_tries=POLYGCD_HEURISTIC_MAX_TRIES);
65 const poly gcd_modular (
const poly &a,
const poly &b,
const std::vector<int> &x);
66 const poly gcd_modular_dense_interpolation (
const poly &a,
const poly &b,
const std::vector<int> &x,
const poly &s);
67 const poly gcd_modular_sparse_interpolation (
const poly &a,
const poly &b,
const std::vector<int> &x,
const poly &s);
69 const std::vector<int> sparse_interpolation_get_mul_list (
const poly &a,
const std::vector<int> &x,
const std::vector<int> &c);
70 void sparse_interpolation_mul_poly (
poly &a,
const std::vector<int> &m);
71 const poly sparse_interpolation_reduce_poly (
const poly &a,
const std::vector<int> &x);
72 const poly sparse_interpolation_fix_poly (
const poly &a,
int x);
75 const poly substitute(
const poly &a,
int x,
int c);
76 const std::map<std::vector<int>,
poly> full_bracket(
const poly &a,
const std::vector<int>& filter);
77 const poly bracket(
const poly &a,
const std::vector<int>& pattern,
const std::vector<int>& filter);
78 const std::map<std::vector<int>,
int> bracket_count(
const poly &a,
const std::vector<int>& filter);