 |
My Project
debian-1:4.1.1-p2+ds-4
|
Go to the documentation of this file.
55 if ( !
f.inCoeffDomain() )
61 if (
i.exp() > exp_f[e]) exp_f[e]=
i.exp();
63 for (;
i.hasTerms();
i++ )
75 for(
i=mv;
i>0;
i--) exp_f[
i]=0;
79 if ((exp_f[
i]>0) && (exp_f[
i]<exp_f[mv]))
93 if (
f.isZero()) printf(
"+0");
95 else if (!
f.inBaseDomain() )
101 if (
i.coeff().isOne())
104 if (e==0) printf(
"1");
108 if (e!=1) printf(
"^%d",e);
117 if (e!=1) printf(
"^%d",e);
142 printf(
"+%ld",
f.intval());
151 char * str =
new char[mpz_sizeinbase(
m, 10 ) + 2];
152 str = mpz_get_str( str, 10,
m );
161 char * str =
new char[mpz_sizeinbase(
m, 10 ) + 2];
162 str = mpz_get_str( str, 10,
m );
163 puts(str);putchar(
'/');
167 str =
new char[mpz_sizeinbase(
m, 10 ) + 2];
168 str = mpz_get_str( str, 10,
m );
183 if (
f.inExtension()) printf(
"E(%d)",
f.level());
195 printf(
"%d\n", J.
getItem().exp());
204 if (!(L.
getFirst().factor().inCoeffDomain()))
205 printf(
"first entry is not const\n");
210 printf(
"other entry is const\n");
212 while(
j>0) { t*=tt;
j--; }
214 if (!(
f-t).
isZero()) { printf(
"problem:\n");
out_cf(
"factor:",
f,
" has problems\n");}
221 if (
f.inBaseDomain())
return true;
222 if (
f.level()<0)
return false;
231 if (
f.level()<=0)
return false;
234 if (!(
i.coeff().inBaseDomain()))
return false;
247 ASSERT( ( !
f.inCoeffDomain() ),
"no constants" );
249 for (
int i=1;
i<=n;
i++ )
282 for (
i=
f;
i.hasTerms();
i++ ){
284 for (
j=dummy;
j.hasItem();
j++ )
305 for (
i=
f;
i.hasTerms();
i++)
307 elem=
i.coeff()*
power(
f.mvar(),
i.exp());
321 for (
i=Termlist;
i.hasItem();
i++)
330 for (
i=Newlist;
i.hasItem();
i++)
345 for (
i=
f;
i.hasTerms();
i++)
347 elem=
i.coeff()*
power(
f.mvar(),
i.exp());
361 for (
i=Termlist;
i.hasItem();
i++)
370 for (
i=Newlist;
i.hasItem();
i++)
381 if (
f.exp() >
g.exp())
return 1;
382 if (
f.exp() <
g.exp())
return 0;
383 if (
f.factor() >
g.factor())
return 1;
392 if (
f.inCoeffDomain() )
397 ( const CanonicalForm & f, const Variable & alpha ) instead");
400 if (!
f.isUnivariate() )
412 for (
j=Intermediatelist;
j.hasItem();
j++ )
415 CFFactor( n(
j.getItem().factor()),
j.getItem().exp()) );
419 for (
j=Homoglist;
j.hasItem();
j++ )
423 d_xn -= (
degree(unhomogelem,
xn)*
j.getItem().exp());
434 if (
f.isUnivariate())
442 nmod_poly_factor_t
result;
443 nmod_poly_factor_init (
result);
444 mp_limb_t leadingCoeff= nmod_poly_factor (
result, f1);
446 nmod_poly_factor_clear (
result);
463 zz_p leadcoeff = LeadCoeff(f1);
466 f1=f1 / LeadCoeff(f1);
468 vec_pair_zz_pX_long factors;
486 vec_pair_GF2X_long factors;
495 factoryError (
"univariate factorization depends on NTL(missing)");
522 ASSERT(
f.isUnivariate(),
"multivariate factorization depends on NTL(missing)" );
523 factoryError (
"multivariate factorization depends on NTL(missing)");
535 if (
f.isUnivariate() )
542 vec_pair_ZZX_long factors;
550 if ( F.
getFirst().factor().inCoeffDomain() )
561 if ( !F.
getFirst().factor().inCoeffDomain() )
568 factoryError (
"univariate factorization over Z depends on NTL(missing)");
587 factoryError (
"multivariate factorization depends on NTL(missing)");
596 if ( F.
getFirst().factor().inCoeffDomain() )
619 if (
f.inCoeffDomain() )
630 does not coincide with alpha");
633 if (
f.isUnivariate()&& (ch>0))
639 #if (HAVE_FLINT && __FLINT_RELEASE >= 20400)
640 nmod_poly_t FLINTmipo, leadingCoeff;
648 fq_nmod_poly_t FLINTF;
650 fq_nmod_poly_factor_t
res;
652 fq_nmod_poly_factor (
res, leadingCoeff, FLINTF,
fq_con);
676 zz_pE leadcoeff= LeadCoeff(f1);
682 vec_pair_zz_pEX_long factors;
710 GF2E f1_coef=LeadCoeff(f1);
714 vec_pair_GF2EX_long factors;
721 factoryError (
"univariate factorization depends on NTL(missing)");
730 ASSERT(
f.isUnivariate(),
"multivariate factorization depends on NTL(missing)" );
731 factoryError (
"multivariate factorization depends on NTL(missing)");
736 else if (
f.isUnivariate() && (ch == 0))
745 ASSERT(
f.isUnivariate(),
"multivariate factorization depends on NTL(missing)" );
746 factoryError (
"multivariate factorization depends on NTL(missing)");
CFFList FpSqrf(const CanonicalForm &F, bool sort=true)
squarefree factorization over . If input is not monic, the leading coefficient is dropped
static const int SW_RATIONAL
set to 1 for computations over Q
int cmpCF(const CFFactor &f, const CFFactor &g)
zz_pX convertFacCF2NTLzzpX(const CanonicalForm &f)
void find_exp(const CanonicalForm &f, int *exp_f)
bool isZero(const CFArray &A)
checks if entries of A are zero
CFFList convertNTLvec_pair_ZZX_long2FacCFFList(const vec_pair_ZZX_long &e, const ZZ &multi, const Variable &x)
NAME: convertNTLvec_pair_ZZX_long2FacCFFList.
bool isPurePoly(const CanonicalForm &f)
void getTerms(const CanonicalForm &f, const CanonicalForm &t, CFList &result)
get_Terms: Split the polynomial in the containing terms.
class to iterate through CanonicalForm's
CFFList convertNTLvec_pair_zzpX_long2FacCFFList(const vec_pair_zz_pX_long &e, const zz_p multi, const Variable &x)
CFFList factorize(const CanonicalForm &f, bool issqrfree)
factorization over or
nmod_poly_clear(FLINTmipo)
CFFList FqFactorize(const CanonicalForm &G, const Variable &alpha, bool substCheck=true)
factorize a multivariate polynomial over
CFFList FqSqrf(const CanonicalForm &F, const Variable &alpha, bool sort=true)
squarefree factorization over . If input is not monic, the leading coefficient is dropped
CanonicalForm homogenize(const CanonicalForm &f, const Variable &x)
homogenize homogenizes f with Variable x
CFFList sqrFree(const CanonicalForm &f, bool sort)
squarefree factorization
CFList FpSqrfFactorize(const CanonicalForm &F)
factorize a squarefree multivariate polynomial over
CFFList ratFactorize(const CanonicalForm &G, const Variable &v=Variable(1), bool substCheck=true)
factorize a multivariate polynomial over
Variable get_max_degree_Variable(const CanonicalForm &f)
get_max_degree_Variable returns Variable with highest degree.
CFFList sqrFreeZ(const CanonicalForm &a)
void convertFacCF2Fq_nmod_poly_t(fq_nmod_poly_t result, const CanonicalForm &f, const fq_nmod_ctx_t ctx)
conversion of a factory univariate poly over F_q to a FLINT fq_nmod_poly_t
static const int SW_USE_NTL_SORT
set to 1 to sort factors in a factorization
#define GaloisFieldDomain
CFFList convertNTLvec_pair_GF2X_long2FacCFFList(const vec_pair_GF2X_long &e, GF2, const Variable &x)
NAME: convertNTLvec_pair_GF2X_long2FacCFFList.
void out_cf(const char *s1, const CanonicalForm &f, const char *s2)
cf_algorithm.cc - simple mathematical algorithms.
convertFacCF2nmod_poly_t(FLINTmipo, M)
CanonicalForm getMipo(const Variable &alpha, const Variable &x)
zz_pEX convertFacCF2NTLzz_pEX(const CanonicalForm &f, const zz_pX &mipo)
CFList ratSqrfFactorize(const CanonicalForm &G, const Variable &v=Variable(1))
factorize a squarefree multivariate polynomial over
#define ASSERT(expression, message)
fq_nmod_ctx_clear(fq_con)
int status int void * buf
CFFList convertFLINTFq_nmod_poly_factor2FacCFFList(const fq_nmod_poly_factor_t fac, const Variable &x, const Variable &alpha, const fq_nmod_ctx_t fq_con)
conversion of a FLINT factorization over Fq (for word size p) to a CFFList
CanonicalForm cd(bCommonDen(FF))
CFFList AlgExtFactorize(const CanonicalForm &F, const Variable &alpha)
factorize a univariate polynomial over algebraic extension of Q
nmod_poly_init(FLINTmipo, getCharacteristic())
CanonicalForm compress(const CanonicalForm &f, CFMap &m)
CanonicalForm compress ( const CanonicalForm & f, CFMap & m )
static int max(int a, int b)
CFFList convertNTLvec_pair_zzpEX_long2FacCFFList(const vec_pair_zz_pEX_long &e, const zz_pE &multi, const Variable &x, const Variable &alpha)
CFList get_Terms(const CanonicalForm &f)
CFFList sortCFFList(CFFList &F)
int find_mvar(const CanonicalForm &f)
ZZX convertFacCF2NTLZZX(const CanonicalForm &f)
CFFList convertFLINTnmod_poly_factor2FacCFFList(const nmod_poly_factor_t fac, const mp_limb_t leadingCoeff, const Variable &x)
conversion of a FLINT factorization over Z/p (for word size p) to a CFFList
void sort(CFArray &A, int l=0)
quick sort A
fq_nmod_ctx_init_modulus(fq_con, FLINTmipo, "Z")
CanonicalForm bCommonDen(const CanonicalForm &f)
CanonicalForm bCommonDen ( const CanonicalForm & f )
void(* factoryError)(const char *s)
GF2EX convertFacCF2NTLGF2EX(const CanonicalForm &f, const GF2X &mipo)
CanonicalForm in Z_2(a)[X] to NTL GF2EX.
static long imm2int(const InternalCF *const imm)
CFFList FpFactorize(const CanonicalForm &G, bool substCheck=true)
factorize a multivariate polynomial over
factory's class for variables
CFList GFSqrfFactorize(const CanonicalForm &F)
factorize a squarefree multivariate polynomial over GF
void test_cff(CFFList &L, const CanonicalForm &f)
void gmp_denominator(const CanonicalForm &f, mpz_ptr result)
CFFList GFFactorize(const CanonicalForm &G, bool substCheck=true)
factorize a multivariate polynomial over GF
void gmp_numerator(const CanonicalForm &f, mpz_ptr result)
fq_nmod_poly_clear(prod, fq_con)
GF2X convertFacCF2NTLGF2X(const CanonicalForm &f)
NAME: convertFacCF2NTLGF2X.
bool getReduce(const Variable &alpha)
bool isPurePoly_m(const CanonicalForm &f)
CFFList convertNTLvec_pair_GF2EX_long2FacCFFList(const vec_pair_GF2EX_long &e, const GF2E &multi, const Variable &x, const Variable &alpha)
NAME: convertNTLvec_pair_GF2EX_long2FacCFFList.
void sort(int(*)(const T &, const T &))