Changeset 1a688ba in git
- Timestamp:
- Dec 16, 2013, 3:13:24 PM (9 years ago)
- Branches:
- (u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'a800fe4b3e9d37a38c5a10cc0ae9dfa0c15a4ee6')
- Children:
- 2773fe426f803fdb541ac43df1e156eb4069affc
- Parents:
- 1f4ed35293648146e81ceb849bb6dbba0771e8b3
- git-author:
- Martin Lee <martinlee84@web.de>2013-12-16 15:13:24+01:00
- git-committer:
- Martin Lee <martinlee84@web.de>2014-01-20 16:45:03+01:00
- Location:
- factory
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
factory/facFqSquarefree.cc
r1f4ed3 r1a688ba 30 30 #endif 31 31 32 #ifdef HAVE_FLINT 33 #include "FLINTconvert.h" 34 #endif 35 32 36 static inline 33 37 CanonicalForm … … 65 69 power (NTLA2, NTLA2, q/p); 66 70 A= convertNTLzzpE2CF (NTLA2, alpha); 71 return A; 72 } 73 else 74 { 75 CanonicalForm buf= 0; 76 for (CFIterator i= A; i.hasTerms(); i++) 77 buf= buf + power(A.mvar(), i.exp()/p)*pthRoot (i.coeff(), q, alpha); 78 return buf; 79 } 80 } 81 #endif 82 83 #if (HAVE_FLINT && __FLINT_VERSION_MINOR >= 4) 84 CanonicalForm 85 pthRoot (const CanonicalForm & F, const fmpz_t& q, const Variable& alpha) 86 { 87 CanonicalForm A= F; 88 int p= getCharacteristic (); 89 if (A.inCoeffDomain()) 90 { 91 nmod_poly_t FLINTmipo; 92 fq_nmod_ctx_t fq_con; 93 fmpz_t qp; 94 fq_nmod_t FLINTA; 95 96 nmod_poly_init (FLINTmipo, p); 97 convertFacCF2nmod_poly_t (FLINTmipo, getMipo (alpha)); 98 99 fq_nmod_ctx_init_modulus (fq_con, FLINTmipo, "Z"); 100 101 fq_nmod_init2 (FLINTA, fq_con); 102 103 convertFacCF2Fq_nmod_t (FLINTA, A, fq_con); 104 105 fmpz_init_set (qp, q); 106 fmpz_divexact_si (qp, qp, p); 107 108 fq_nmod_pow (FLINTA, FLINTA, qp, fq_con); 109 A= convertFq_nmod_t2FacCF (FLINTA, alpha); 110 111 fmpz_clear (qp); 112 nmod_poly_clear (FLINTmipo); 113 fq_nmod_clear (FLINTA, fq_con); 114 fq_nmod_ctx_clear (fq_con); 67 115 return A; 68 116 } … … 195 243 #endif 196 244 buffer= pthRoot (A, ipower (p, k)); 197 #ifdef HAVE_NTL 245 #if (HAVE_FLINT && __FLINT_VERSION_MINOR >= 4) 246 else 247 { 248 fmpz_t qq; 249 fmpz_init_set_ui (qq, p); 250 fmpz_pow_ui (qq, qq, k); 251 buffer= pthRoot (A, qq, alpha); 252 fmpz_clear (qq); 253 } 254 #else 198 255 else 199 256 { -
factory/facHensel.cc
r1f4ed3 r1a688ba 36 36 #include "NTLconvert.h" 37 37 38 #ifdef HAVE_FLINT 39 #include "FLINTconvert.h" 40 #endif 41 38 42 TIMING_DEFINE_PRINT (diotime) 39 43 TIMING_DEFINE_PRINT (product1) … … 80 84 } 81 85 86 #if (HAVE_FLINT && __FLINT_VERSION_MINOR >= 4) 87 static 88 CFList productsFLINT (const CFList& factors, const CanonicalForm& M) 89 { 90 nmod_poly_t FLINTmipo; 91 fq_nmod_ctx_t fq_con; 92 fq_nmod_poly_t prod; 93 fq_nmod_t buf; 94 95 nmod_poly_init (FLINTmipo, getCharacteristic()); 96 convertFacCF2nmod_poly_t (FLINTmipo, M); 97 98 fq_nmod_ctx_init_modulus (fq_con, FLINTmipo, "Z"); 99 100 fq_nmod_poly_t * vec=new fq_nmod_poly_t [factors.length()]; 101 102 int j= 0; 103 104 for (CFListIterator i= factors; i.hasItem(); i++, j++) 105 { 106 if (i.getItem().inCoeffDomain()) 107 { 108 fq_nmod_poly_init (vec[j], fq_con); 109 fq_nmod_init2 (buf, fq_con); 110 convertFacCF2Fq_nmod_t (buf, i.getItem(), fq_con); 111 fq_nmod_poly_set_coeff (vec[j], 0, buf, fq_con); 112 fq_nmod_clear (buf, fq_con); 113 } 114 else 115 convertFacCF2Fq_nmod_poly_t (vec[j], i.getItem(), fq_con); 116 } 117 118 CFList result; 119 Variable x= Variable (1); 120 fq_nmod_poly_init (prod, fq_con); 121 for (j= 0; j < factors.length(); j++) 122 { 123 int k= 0; 124 fq_nmod_poly_one (prod, fq_con); 125 for (int i= 0; i < factors.length(); i++, k++) 126 { 127 if (k == j) 128 continue; 129 fq_nmod_poly_mul (prod, prod, vec[i], fq_con); 130 } 131 result.append (convertFq_nmod_poly_t2FacCF (prod, x, M.mvar(), fq_con)); 132 } 133 for (j= 0; j < factors.length(); j++) 134 fq_nmod_poly_clear (vec[j], fq_con); 135 136 nmod_poly_clear (FLINTmipo); 137 fq_nmod_poly_clear (prod, fq_con); 138 fq_nmod_ctx_clear (fq_con); 139 delete [] vec; 140 return result; 141 } 142 #endif 143 82 144 static 83 145 void tryDiophantine (CFList& result, const CanonicalForm& F, … … 103 165 i.getItem()= reduce (i.getItem()*inv, M); 104 166 } 167 #if (HAVE_FLINT && __FLINT_VERSION_MINOR >= 4) 168 bufFactors= productsFLINT (bufFactors, M); 169 #else 105 170 bufFactors= productsNTL (bufFactors, M); 171 #endif 106 172 107 173 CanonicalForm buf1, buf2, buf3, S, T;
Note: See TracChangeset
for help on using the changeset viewer.