138 int **
swap=
new int* [n + 1];
139 for (
int i= 0;
i <= n;
i++)
142 swap [
i]=
new int [3];
166 for (
i= 1;
i < n;
i++)
168 for (
int j= 1;
j < n -
i + 1;
j++)
199 for (
i= n;
i > 0;
i--)
214#if defined(HAVE_NTL) || defined(HAVE_FLINT)
224 int k=
info.getGFDegree();
250 int *
v=
new int [
T.length()];
251 for (
int i= 0;
i <
T.length();
i++)
258 while (
T.length() >= 2*
s)
321 if (
T.length() < 2*
s ||
T.length() ==
s)
337 if (
T.length() < 2*
s ||
T.length() ==
s)
344 for (
int i= 0;
i <
T.length();
i++)
348 if (
T.length() < 2*
s)
359#if defined(HAVE_NTL) || defined(HAVE_FLINT)
377 int *
v=
new int [
T.length()];
378 for (
int i= 0;
i <
T.length();
i++)
386 while (
T.length() >= 2*
s)
416 if (
T.length() < 2*
s ||
T.length() ==
s)
428 if (
T.length() < 2*
s ||
T.length() ==
s)
434 for (
int i= 0;
i <
T.length();
i++)
438 if (
T.length() < 2*
s)
446#if defined(HAVE_NTL) || defined(HAVE_FLINT)
491 if (e + 1 <
degree (F) + 1)
512#if defined(HAVE_NTL) || defined(HAVE_FLINT)
522 int k=
info.getGFDegree();
588 if (e + 1 <
degree (F) + 1)
610#if defined(HAVE_NTL) || defined(HAVE_FLINT)
613 bool& success,
const int deg,
const CFList&
MOD,
663#if defined(HAVE_NTL) || defined(HAVE_FLINT)
673 int k=
info.getGFDegree();
748#if defined(HAVE_NTL) || defined(HAVE_FLINT)
749#define CHAR_THRESHOLD 8
801 if (list.length() >=
bound)
806 for (
int i= 0;
i <
k;
i++)
910 if (list.length() >=
bound)
939 for (
int i= lev;
i <=
A.level();
i++)
974 for (
i=
i - 2;
i > 0;
i--)
983#if defined(HAVE_NTL) || defined(HAVE_FLINT)
1282 g=
gcd (
i.getItem().factor(),
j.getItem().factor());
1285 j.getItem()=
CFFactor (
j.getItem().factor()/
g,
j.getItem().exp());
1286 i.getItem()=
CFFactor (
i.getItem().factor()/
g,
i.getItem().exp());
1348 if (
iter2.getItem().inCoeffDomain())
1353 v=
iter2.getItem().mvar();
1360 if (!
g.inCoeffDomain())
1425 tmp *=
iter.getItem().factor();
1446 if (
iter.getItem().factor().inCoeffDomain())
1449 Lc (
iter.getItem().factor()),
1450 iter.getItem().exp());
1458 if (
iter.getItem().factor().inCoeffDomain())
1461 Lc (
iter.getItem().factor()),
1462 iter.getItem().exp());
1477#if defined(HAVE_NTL) || defined(HAVE_FLINT)
1544 i.getItem()=
M (
i.getItem());
1583 if (!
iter.getItem().inCoeffDomain())
1679 bool success=
false;
1699 i.getItem() *=
LC1 (0,2)/
Lc (
i.getItem());
1726 j.getItem()=
j.getItem() (0,
i + 1);
1778 i.getItem()=
N (
i.getItem());
1794 if (!
result.getFirst().inCoeffDomain())
1947 i.getItem()=
iter.getItem();
1950 for (;
i.hasItem();
i++,
iter++)
1951 i.getItem() *=
iter.getItem();
1975 for (
int i=
A.level();
i > 2;
i--)
1982 for (
j=
A.level();
j > 1;
j--,
iter++)
2030 if (!
g2.inCoeffDomain())
2122 int *
v=
new int [
T.length()];
2123 for (
int i= 0;
i <
T.length();
i++)
2129 while (
T.length() >= 2*
s &&
s <=
thres)
2133 if (
T.length() ==
s)
2157 if (
T.length() < 2*
s ||
T.length() ==
s)
2166 for (
int i= 0;
i <
T.length();
i++)
2172 if (
T.length() < 2*
s)
2181#if defined(HAVE_NTL) || defined(HAVE_FLINT)
2193 for (
int j= 0;
j <
A.level() - 2;
j++)
2200 else if (
info.getAlpha().level() == 1)
2227 for (
int i=
A.max();
i >=
A.min();
i--)
2238 for (
int j= 0;
j <
A.level() - 2;
j++)
2274 if (
i ==
iter2.getItem().level())
2346 for (
int j= 0;
j <
A.level() - 2;
j++)
2356 if (
i ==
iter2.getItem().level())
2390 for (
int i= n - 1;
i > 2;
i--,
iter++)
2392 for (
j=
l;
j.hasItem();
j++)
2393 j.getItem()=
j.getItem() (
iter.getItem(),
i + 1);
2398 i.getItem()=
i.getItem() (
iter.getItem(), 3);
2403 for (
int i= 0;
i < n-2;
i++)
2406 for (
j=
LCs [
i];
j.hasItem();
j++,
ii++)
2407 j.getItem() *=
ii.getItem();
2428 int k=
info.getGFDegree();
2443 int *
v=
new int [
T.length()];
2444 for (
int i= 0;
i <
T.length();
i++)
2451 while (
T.length() >= 2*
s)
2455 if (
T.length() ==
s)
2504 if (
T.length() < 2*
s ||
T.length() ==
s)
2520 if (
T.length() < 2*
s ||
T.length() ==
s)
2528 for (
int i= 0;
i <
T.length();
i++)
2532 if (
T.length() < 2*
s)
2584 for (
int j= 0;
j <
tmp2.size();
j++)
2602 for (
int i=
A.level();
i > 2;
i--,
iter++)
2604 if (!
tmp.inCoeffDomain())
2608 i.getItem() *=
tmp/
LC (
i.getItem(), 1);
2609 i.getItem() /=
Lc (
i.getItem());
2645 for (
int i=1;
i <=
tmp.level();
i++)
2664 if (
multi ==
ii.getItem().exp())
2679 tmp=
ii.getItem().factor();
2685 if (!
tmp.inCoeffDomain())
2726 tmp=
power (
ii.getItem().factor(),
ii.getItem().exp());
2734 if (!
tmp.inCoeffDomain())
2791 if (
cont.inCoeffDomain())
2835 if (
vars.level() <= 2)
2867 if (!
iter.getItem().isOne() &&
2883 A /=
iter.getItem();
2923#if defined(HAVE_NTL) || defined(HAVE_FLINT)
2983 if (
A.inCoeffDomain())
2987 if (
i.getItem().inCoeffDomain())
3011 if (
A.isUnivariate ())
3026 for (
int i= 1;
i <=
A.level();
i++)
3064 "time to check main var over Fq: ");
3066 "time to preprocess poly and extract content over Fq: ");
3095 "time to find evaluation point over Fq: ");
3098 if (
fail && (
i == 0))
3137 else if (
fail && (
i > 0))
3143 "time for evaluation wrt diff second vars over Fq: ");
3161 "time for bivariate factorization: ");
3221 "time for bivariate factorization wrt diff second vars over Fq: ");
3224 "total time for eval and bivar factors over Fq: ");
3274 if (
iter.getItem().isZero())
3351 "time to precompute LC over Fq: ");
3382 "time for successful LucksWang over Fq: ");
3514 for (
int i=
A.level() - 4;
i > -1;
i--)
3523 "time to shift evaluation point to zero: ");
3538 "time for non monic hensel lifting over Fq: ");
3547 "time to recover factors over Fq: ");
3579 for (;
i.hasItem();
i++)
3588 for (;
i.hasItem();
i++)
3590 LCA=
LC (
i.getItem(), 1);
3606 "time for hensel lifting over Fq: ");
3613 "time for factor recombination: ");
3620 "time for factor recombination: ");
3632 if (
i.getItem().level() <
kk)
3667 int k=
info.getGFDegree();
3698 else if (
p >= 7 &&
p*
p < (1<<16))
Rational pow(const Rational &a, int e)
const CanonicalForm CFMap CFMap & N
static const double log2exp
static Variable chooseExtension(const Variable &alpha)
static void evalPoint(const CanonicalForm &F, const CanonicalForm &G, CanonicalForm &FEval, CanonicalForm &GEval, CFGenerator &evalPoint)
CanonicalForm decompress(const CanonicalForm &F, const mpz_t *inverseM, const mpz_t *A)
decompress a bivariate poly
CanonicalForm extgcd(const CanonicalForm &f, const CanonicalForm &g, CanonicalForm &a, CanonicalForm &b)
CanonicalForm extgcd ( const CanonicalForm & f, const CanonicalForm & g, CanonicalForm & a,...
univariate Gcd over finite fields and Z, extended GCD over finite fields and Q
bool fdivides(const CanonicalForm &f, const CanonicalForm &g)
bool fdivides ( const CanonicalForm & f, const CanonicalForm & g )
CFFList FACTORY_PUBLIC sqrFree(const CanonicalForm &f, bool sort=false)
squarefree factorization
#define ASSERT(expression, message)
#define GaloisFieldDomain
CanonicalForm randomIrredpoly(int i, const Variable &x)
computes a random monic irreducible univariate polynomial in x over Fp of degree i via NTL/FLINT
generate random irreducible univariate polynomials
static CanonicalForm bound(const CFMatrix &M)
CanonicalForm compress(const CanonicalForm &f, CFMap &m)
CanonicalForm compress ( const CanonicalForm & f, CFMap & m )
int findItem(const CFList &list, const CanonicalForm &item)
helper function
CanonicalForm mapPrimElem(const CanonicalForm &primElem, const Variable &alpha, const Variable &beta)
compute the image of a primitive element of in . We assume .
CanonicalForm primitiveElement(const Variable &alpha, Variable &beta, bool &fail)
determine a primitive element of , is a primitive element of a field which is isomorphic to
static CanonicalForm mapDown(const CanonicalForm &F, const Variable &alpha, const CanonicalForm &G, CFList &source, CFList &dest)
the CanonicalForm G is the output of map_up, returns F considered as an element over ,...
CanonicalForm getItem(const CFList &list, const int &pos)
helper function
static CanonicalForm mapUp(const Variable &alpha, const Variable &beta)
and is a primitive element, returns the image of
CanonicalForm Falpha2GFRep(const CanonicalForm &F)
change representation by residue classes modulo a Conway polynomial to representation by primitive el...
CanonicalForm GFMapUp(const CanonicalForm &F, int k)
maps a polynomial over to a polynomial over , d needs to be a multiple of k
CanonicalForm GF2FalphaRep(const CanonicalForm &F, const Variable &alpha)
changes representation by primitive element to representation by residue classes modulo a Conway poly...
This file implements functions to map between extensions of finite fields.
generate random integers, random elements of finite fields
generate random elements in F_p(alpha)
class to iterate through CanonicalForm's
ExtensionInfo contains information about extension.
generate random elements in F_p
generate random elements in GF
factory's class for variables
functions to print debug output
const CanonicalForm int const CFList & evaluation
const CanonicalForm int s
const CanonicalForm int const CFList const Variable & y
CFFList append(const CFFList &Inputlist, const CFFactor &TheFactor)
const Variable & v
< [in] a sqrfree bivariate poly
CFList int & minFactorsLength
[in,out] minimal length of bivariate factors
CFList *& Aeval
<[in] poly
CFList int bool & irred
[in,out] Is A irreducible?
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
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 fina...
void indexUpdate(int index[], const int &subsetSize, const int &setSize, bool &noSubset)
update index
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
CFArray copy(const CFList &list)
write elements of list into an array
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 consid...
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)
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 ...
CFList FqBiSqrfFactorize(const CanonicalForm &G, const Variable &alpha)
factorize a squarefree bivariate polynomial over .
CFList biSqrfFactorizeHelper(const CanonicalForm &G, const ExtensionInfo &info)
CFList FpBiSqrfFactorize(const CanonicalForm &G)
factorize a squarefree bivariate polynomial over .
CFList GFBiSqrfFactorize(const CanonicalForm &G)
factorize a squarefree bivariate polynomial over GF
CFList recoverFactors(const CanonicalForm &F, const CFList &factors)
divides factors by their content wrt. Variable(1) and checks if these polys divide F
CanonicalForm reverseShift(const CanonicalForm &F, const CFList &evaluation, int l)
reverse shifting the evaluation point to zero
CanonicalForm shift2Zero(const CanonicalForm &F, CFList &Feval, const CFList &evaluation, int l)
shift evaluation point to zero
int * liftingBounds(const CanonicalForm &A, const int &bivarLiftBound)
compute lifting bounds
CFList evaluateAtZero(const CanonicalForm &F)
evaluate F successively n-2 at 0
bool isOnlyLeadingCoeff(const CanonicalForm &F)
check if F consists of more than just the leading coeff wrt. Variable (1)
CFFList sortCFFListByNumOfVars(CFFList &F)
sort CFFList by the number variables in a factor
CanonicalForm myGetVars(const CanonicalForm &F)
like getVars but including multiplicities
CFList evaluateAtEval(const CanonicalForm &F, const CFArray &eval)
evaluate F at evaluation
This file provides utility functions for multivariate factorization.
CFList multiFactorize(const CanonicalForm &F, const ExtensionInfo &info)
CFList factorRecombination(const CanonicalForm &F, const CFList &factors, const CFList &M)
Naive factor recombination for multivariate factorization. No precomputed is used to exclude combinat...
CFList precomputeLeadingCoeff(const CanonicalForm &LCF, const CFList &LCFFactors, const Variable &alpha, const CFList &evaluation, CFList *&differentSecondVarLCs, int lSecondVarLCs, Variable &y)
computes a list l of length length(LCFFactors)+1 of polynomials such that prod (l)=LCF,...
static CanonicalForm myContent(const CanonicalForm &F)
void LCHeuristicCheck(const CFList &LCs, const CFList &contents, CanonicalForm &A, const CanonicalForm &oldA, CFList &leadingCoeffs, bool &foundTrueMultiplier)
checks if prod(LCs)==LC (oldA,1) and if so divides elements of leadingCoeffs by elements in contents,...
int liftBoundAdaption(const CanonicalForm &F, const CFList &factors, bool &success, const int deg, const CFList &MOD, const int bound)
Lift bound adaption. Essentially an early factor detection but only the lift bound is adapted.
int testFactors(const CanonicalForm &G, const CFList &uniFactors, const Variable &alpha, CanonicalForm &sqrfPartF, CFList &factors, CFFList *&bufSqrfFactors, CFList &evalSqrfPartF, const CFArray &evalPoint)
void distributeLCmultiplier(CanonicalForm &A, CFList &leadingCoeffs, CFList &biFactors, const CFList &evaluation, const CanonicalForm &LCmultipler)
distributes a divisor LCmultiplier of LC(A,1) on the bivariate factors and the precomputed leading co...
void evaluationWRTDifferentSecondVars(CFList *&Aeval, const CFList &evaluation, const CanonicalForm &A)
evaluate a poly A with main variable at level 1 at an evaluation point in K^(n-1) wrt different secon...
void prepareLeadingCoeffs(CFList *&LCs, CanonicalForm &A, CFList &Aeval, int n, const CFList &leadingCoeffs, const CFList &biFactors, const CFList &evaluation)
normalize precomputed leading coefficients such that leading coefficients evaluated at evaluation in ...
CFList extFactorRecombination(const CFList &factors, const CanonicalForm &F, const CFList &M, const ExtensionInfo &info, const CFList &evaluation)
Naive factor recombination for multivariate factorization over an extension of the initial field....
void checkHelper(const CanonicalForm &f1, CFList &factors1, CFList &factors2, CFList &l1, CFList &l2)
CFList extEarlyFactorDetect(CanonicalForm &F, CFList &factors, int &adaptedLiftBound, bool &success, const ExtensionInfo &info, const CFList &eval, const int deg, const CFList &MOD, const int bound)
detects factors of F at stage deg of Hensel lifting. No combinations of more than one factor are test...
void LCHeuristic4(const CFList &oldBiFactors, const CFList *oldAeval, const CFList &contents, const CFList &factors, const CanonicalForm &testVars, int lengthAeval, CFList *&leadingCoeffs, CanonicalForm &A, CanonicalForm &LCmultiplier, bool &foundMultiplier)
heuristic to remove factors of LCmultiplier from factors. More precisely checks if elements of conten...
CanonicalForm myCompress(const CanonicalForm &F, CFMap &N)
compress a polynomial s.t. and no gaps between the variables occur
CFList checkOneToOne(const CFList &factors1, const CFList &factors2, CFList &factors3, const CanonicalForm &evalPoint, const Variable &x)
check if univariate factors factors2 of factors3 coincide with univariate factors of factors1 and rec...
void changeSecondVariable(CanonicalForm &A, CFList &biFactors, CFList &evaluation, CFList *&oldAeval, int lengthAeval2, const CFList &uniFactors, const Variable &w)
changes the second variable to be w and updates all relevant data
CFList distributeContent(const CFList &L, const CFList *differentSecondVarFactors, int length)
distribute content
static CanonicalForm prodEval(const CFList &l, const CanonicalForm &evalPoint, const Variable &v)
void factorizationWRTDifferentSecondVars(const CanonicalForm &A, CFList *&Aeval, const ExtensionInfo &info, int &minFactorsLength, bool &irred)
void sortByUniFactors(CFList *&Aeval, int AevalLength, CFList &uniFactors, CFList &biFactors, const CFList &evaluation)
sort bivariate factors in Aeval such that their corresponding univariate factors coincide with uniFac...
CFList conv(const CFArray &A)
CanonicalForm lcmContent(const CanonicalForm &A, CFList &contentAi)
compute the LCM of the contents of A wrt to each variable occuring in A.
CFList recombination(const CFList &factors1, const CFList &factors2, int s, int thres, const CanonicalForm &evalPoint, const Variable &x)
recombination of bivariate factors factors1 s. t. the result evaluated at evalPoint coincides with fa...
void gcdFreeBasis(CFFList &factors1, CFFList &factors2)
gcd free basis of two lists of factors
void getLeadingCoeffs(const CanonicalForm &A, CFList *&Aeval)
extract leading coefficients wrt Variable(1) from bivariate factors obtained from factorizations of A...
static int newMainVariableSearch(CanonicalForm &A, CFList &Aeval, CFList &evaluation, const Variable &alpha, const int lev, CanonicalForm &g)
CFList extFactorize(const CanonicalForm &F, const ExtensionInfo &info)
multivariate factorization over an extension of the initial field
int extLiftBoundAdaption(const CanonicalForm &F, const CFList &factors, bool &success, const ExtensionInfo &info, const CFList &eval, const int deg, const CFList &MOD, const int bound)
Lift bound adaption over an extension of the initial field. Essentially an early factor detection but...
CFList extNonMonicFactorRecombination(const CFList &factors, const CanonicalForm &F, const ExtensionInfo &info)
void LCHeuristic3(const CanonicalForm &LCmultiplier, const CFList &factors, const CFList &oldBiFactors, const CFList &contents, const CFList *oldAeval, CanonicalForm &A, CFList *&leadingCoeffs, int lengthAeval, bool &foundMultiplier)
heuristic to remove LCmultiplier from a factor based on the contents of factors. factors are assumed ...
CFList henselLiftAndEarly(CanonicalForm &A, CFList &MOD, int *&liftBounds, bool &earlySuccess, CFList &earlyFactors, const CFList &Aeval, const CFList &biFactors, const CFList &evaluation, const ExtensionInfo &info)
hensel Lifting and early factor detection
void LCHeuristic(CanonicalForm &A, const CanonicalForm &LCmultiplier, CFList &biFactors, CFList *&leadingCoeffs, const CFList *oldAeval, int lengthAeval, const CFList &evaluation, const CFList &oldBiFactors)
heuristic to distribute LCmultiplier onto factors based on the variables that occur in LCmultiplier a...
void refineBiFactors(const CanonicalForm &A, CFList &biFactors, CFList *const &Aeval, const CFList &evaluation, int minFactorsLength)
refine a bivariate factorization of A with l factors to one with minFactorsLength if possible
void LCHeuristic2(const CanonicalForm &LCmultiplier, const CFList &factors, CFList &leadingCoeffs, CFList &contents, CFList &LCs, bool &foundTrueMultiplier)
heuristic to distribute LCmultiplier onto factors based on the contents of factors....
static CanonicalForm listGCD(const CFList &L)
CFList buildUniFactors(const CFList &biFactors, const CanonicalForm &evalPoint, const Variable &y)
plug in evalPoint for y in a list of polys
CFList earlyFactorDetect(CanonicalForm &F, CFList &factors, int &adaptedLiftBound, bool &success, const int deg, const CFList &MOD, const int bound)
detects factors of F at stage deg of Hensel lifting. No combinations of more than one factor are test...
CFList evalPoints(const CanonicalForm &F, CFList &eval, const Variable &alpha, CFList &list, const bool &GF, bool &fail)
evaluation point search for multivariate factorization, looks for a (F.level() - 1)-tuple such that t...
This file provides functions for factorizing a multivariate polynomial over , or GF.
CFFList squarefreeFactorization(const CanonicalForm &F, const Variable &alpha)
squarefree factorization over a finite field return a list of squarefree factors with multiplicity
CFList nonMonicHenselLift(const CFList &F, const CFList &factors, const CFList &LCs, CFList &diophant, CFArray &Pi, CFMatrix &M, int lOld, int &lNew, const CFList &MOD, bool &noOneToOne)
CFList henselLift23(const CFList &eval, const CFList &factors, int *l, CFList &diophant, CFArray &Pi, CFMatrix &M)
Hensel lifting from bivariate to trivariate.
void nonMonicHenselLift12(const CanonicalForm &F, CFList &factors, int l, CFArray &Pi, CFList &diophant, CFMatrix &M, const CFArray &LCs, bool sort)
Hensel lifting from univariate to bivariate, factors need not to be monic.
CFList henselLift(const CFList &F, const CFList &factors, const CFList &MOD, CFList &diophant, CFArray &Pi, CFMatrix &M, int lOld, int lNew)
Hensel lifting.
void henselLiftResume(const CanonicalForm &F, CFList &factors, int start, int end, CFArray &Pi, const CFList &diophant, CFMatrix &M, const CFList &MOD)
resume Hensel lifting.
void sortList(CFList &list, const Variable &x)
sort a list of polynomials by their degree in x.
This file defines functions for Hensel lifting.
CanonicalForm mulMod(const CanonicalForm &A, const CanonicalForm &B, const CFList &MOD)
Karatsuba style modular multiplication for multivariate polynomials.
CanonicalForm prodMod(const CFList &L, const CanonicalForm &M)
product of all elements in L modulo M via divide-and-conquer.
This file defines functions for fast multiplication and division with remainder.
int LucksWangSparseHeuristic(const CanonicalForm &F, const CFList &factors, int level, const CFList &leadingCoeffs, CFList &result)
sparse heuristic lifting by Wang and Lucks
CFList sparseHeuristic(const CanonicalForm &A, const CFList &biFactors, CFList *&moreBiFactors, const CFList &evaluation, int minFactorsLength)
sparse heuristic which patches together bivariate factors of A wrt. different second variables by the...
This file provides functions for sparse heuristic Hensel lifting.
Variable FACTORY_PUBLIC rootOf(const CanonicalForm &, char name='@')
returns a symbolic root of polynomial with name name Use it to define algebraic variables
CanonicalForm getMipo(const Variable &alpha, const Variable &x)
void FACTORY_PUBLIC prune(Variable &alpha)
template CanonicalForm tmax(const CanonicalForm &, const CanonicalForm &)
template CanonicalForm tmin(const CanonicalForm &, const CanonicalForm &)
template List< Variable > Union(const List< Variable > &, const List< Variable > &)
template List< Variable > Difference(const List< Variable > &, const List< Variable > &)
template bool find(const List< CanonicalForm > &, const CanonicalForm &)
INST_VAR CanonicalForm gf_mipo
static BOOLEAN length(leftv result, leftv arg)
ideal lift(const ideal J, const ring r, const ideal inI, const ring s)
int lcm(unsigned long *l, unsigned long *a, unsigned long *b, unsigned long p, int dega, int degb)
static int index(p_Length length, p_Ord ord)
int status int void size_t count
int status int void * buf
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)