55 F /= (contentX*contentY);
56 CFFList contentXFactors, contentYFactors;
67 if (contentXFactors.
getFirst().factor().inCoeffDomain())
69 if (contentYFactors.
getFirst().factor().inCoeffDomain())
75 result.append (
N (
i.getItem().factor()));
77 result.append (
N (
i.getItem().factor()));
86 mpz_t *
M=
new mpz_t [4];
92 mpz_t * S=
new mpz_t [2];
101 result.append (
N(
i.getItem().factor()));
103 result.append (
N (
i.getItem().factor()));
131 bool substCheck=
true
139 bool foundOne=
false;
140 int * substDegree=
new int [F.
level()];
144 if (substDegree [
i-1] > 1)
159 tmp2=
i.getItem().factor();
162 if (substDegree[
j-1] > 1)
169 j.getItem().exp()*
i.getItem().exp()));
172 delete [] substDegree;
175 delete [] substDegree;
181 F /= (contentX*contentY);
182 CFFList contentXFactors, contentYFactors;
193 if (contentXFactors.
getFirst().factor().inCoeffDomain())
195 if (contentYFactors.
getFirst().factor().inCoeffDomain())
220 mpz_t *
M=
new mpz_t [4];
226 mpz_t * S=
new mpz_t [2];
234 "time for bivariate sqrf factors over Q: ");
240 "time to factor bivariate sqrf factors over Q: ");
243 if (
j.getItem().inCoeffDomain())
continue;
This file provides a class to handle degree patterns.
const CanonicalForm CFMap CFMap & N
CanonicalForm decompress(const CanonicalForm &F, const mpz_t *inverseM, const mpz_t *A)
decompress a bivariate poly
This file provides functions to compute the Newton polygon of a bivariate polynomial.
CanonicalForm bCommonDen(const CanonicalForm &f)
CanonicalForm bCommonDen ( const CanonicalForm & f )
declarations of higher level algorithms.
CFFList FACTORY_PUBLIC sqrFree(const CanonicalForm &f, bool sort=false)
squarefree factorization
CFFList FACTORY_PUBLIC factorize(const CanonicalForm &f, bool issqrfree=false)
factorization over or
static const int SW_RATIONAL
set to 1 for computations over Q
CanonicalForm compress(const CanonicalForm &f, CFMap &m)
CanonicalForm compress ( const CanonicalForm & f, CFMap & m )
factory's class for variables
class to do operations mod p^k for int's p and k
CanonicalForm subst(const CanonicalForm &f, const CFList &a, const CFList &b, const CanonicalForm &Rstar, bool isFunctionField)
CFList biFactorize(const CanonicalForm &F, const Variable &v)
modpk coeffBound(const CanonicalForm &f, int p, const CanonicalForm &mipo)
compute p^k larger than the bound on the coefficients of a factor of f over Q (mipo)
CFList ratBiSqrfFactorize(const CanonicalForm &G, const Variable &v=Variable(1))
factorize a squarefree bivariate polynomial over .
CFList conv(const CFFList &L)
convert a CFFList to a CFList by dropping the multiplicity
CFFList ratBiFactorize(const CanonicalForm &G, const Variable &v=Variable(1), bool substCheck=true)
factorize a bivariate polynomial over
const Variable & v
< [in] a sqrfree bivariate poly
void findGoodPrime(const CanonicalForm &f, int &start)
find a big prime p from our tables such that no term of f vanishes mod p
CanonicalForm reverseSubst(const CanonicalForm &F, const int d, const Variable &x)
reverse a substitution x^d->x
int substituteCheck(const CanonicalForm &F, const Variable &x)
check if a substitution x^n->x is possible
This file provides utility functions for bivariate factorization.
This file provides functions for squarefrees factorizing over , or GF.
operations mod p^k and some other useful functions for factorization
template List< Variable > Union(const List< Variable > &, const List< Variable > &)
static poly normalize(poly next_p, ideal add_generators, syStrategy syzstr, int *g_l, int *p_l, int crit_comp)
#define TIMING_DEFINE_PRINT(t)
#define TIMING_END_AND_PRINT(t, msg)