Changeset 71a4d7 in git for factory/cf_gcd_smallp.cc
- Timestamp:
- Feb 18, 2013, 5:10:09 PM (11 years ago)
- Branches:
- (u'spielwiese', '17f1d200f27c5bd38f5dfc6e8a0879242279d1d8')
- Children:
- 65148c4d2a607796fbd578ae2f3219965019aaae
- Parents:
- d826a82d3b17fc5f6da647679a15d4f1af7657fdf1becf6c8965f6addf0a63ca09a9418a48c294be
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
factory/cf_gcd_smallp.cc
rd826a8 r71a4d7 33 33 #include "cfNewtonPolygon.h" 34 34 #include "cf_algorithm.h" 35 #include "cf_primes.h" 35 36 36 37 // iinline helper functions: … … 820 821 cH= uni_content (H); 821 822 ppH= H/cH; 823 ppH /= Lc (ppH); 822 824 CanonicalForm lcppH= gcdlcAlcB/cH; 823 CanonicalForm ccoF= lcA/lcppH; 824 ccoF /= Lc (ccoF); 825 CanonicalForm ccoG= lcB/lcppH; 826 ccoG /= Lc (ccoG); 825 CanonicalForm ccoF= lcppH/Lc (lcppH); 826 CanonicalForm ccoG= lcppH/Lc (lcppH); 827 827 ppCoF= coF/ccoF; 828 828 ppCoG= coG/ccoG; … … 836 836 CFList u, v; 837 837 DEBOUTLN (cerr, "ppH before mapDown= " << ppH); 838 ppH /= Lc(ppH);839 838 ppH= mapDown (ppH, prim_elem, im_prim_elem, alpha, u, v); 840 839 ppCoF= mapDown (ppCoF, prim_elem, im_prim_elem, alpha, u, v); 841 ppCo F= mapDown (ppCoG, prim_elem, im_prim_elem, alpha, u, v);840 ppCoG= mapDown (ppCoG, prim_elem, im_prim_elem, alpha, u, v); 842 841 DEBOUTLN (cerr, "ppH after mapDown= " << ppH); 843 842 if (compressConvexDense) … … 1214 1213 { 1215 1214 if (inextension) 1215 { 1216 ppA= GFMapDown (ppA, k); 1217 ppB= GFMapDown (ppB, k); 1216 1218 setCharacteristic (p, k, gf_name_buf); 1219 } 1217 1220 coF= N (ppA*(cA/gcdcAcB)); 1218 1221 coG= N (ppB*(cB/gcdcAcB)); … … 1267 1270 cH= uni_content (H); 1268 1271 ppH= H/cH; 1272 ppH /= Lc (ppH); 1269 1273 CanonicalForm lcppH= gcdlcAlcB/cH; 1270 CanonicalForm ccoF= lcA/lcppH; 1271 ccoF /= Lc (ccoF); 1272 CanonicalForm ccoG= lcB/lcppH; 1273 ccoG /= Lc (ccoG); 1274 CanonicalForm ccoF= lcppH/Lc (lcppH); 1275 CanonicalForm ccoG= lcppH/Lc (lcppH); 1274 1276 ppCoF= coF/ccoF; 1275 1277 ppCoG= coG/ccoG; … … 1624 1626 G_random_element= 1625 1627 GCD_Fp_extension (ppA (random_element, x), ppB (random_element, x), 1626 coF_random_element, coG_random_element, alpha,1628 coF_random_element, coG_random_element, V_buf, 1627 1629 list, topLevel); 1628 1630 TIMING_END_AND_PRINT (gcd_recursion, … … 3905 3907 l.append (random_element); 3906 3908 3907 if ((getCharacteristic() > 3 && size (skeleton) < 100))3909 if ((getCharacteristic() > 3 && size (skeleton) < 200)) 3908 3910 { 3909 3911 CFArray Monoms; … … 4120 4122 } while (1); //end of second do 4121 4123 } 4124 else 4125 return N(gcdcAcB*GCD_small_p (ppA, ppB)); 4122 4126 } while (1); //end of first do 4123 4127 } … … 4381 4385 4382 4386 CFList evaluation; 4387 long termEstimate= size (U); 4383 4388 for (int i= A.min(); i <= A.max(); i++) 4389 { 4390 if (!A[i].isZero() && (getCharacteristic() > degree (U,i))) //TODO find a good estimate for getCharacteristic() <= degree (U,i) 4391 { 4392 termEstimate *= degree (U,i)*2; 4393 termEstimate /= 3; 4394 } 4384 4395 evaluation.append (A [i]); 4396 } 4397 if (termEstimate/getNumVars(U) > 500) 4398 return -1; 4385 4399 CFList UEval; 4386 4400 CanonicalForm shiftedU= myShift2Zero (U, UEval, evaluation); … … 4548 4562 if( F.mvar() == G.mvar() ) 4549 4563 d *= gcd( F, G ); 4564 else 4565 return N (d); 4550 4566 return N (d); 4567 } 4568 if ( F.isUnivariate()) 4569 { 4570 g= content (G,G.mvar()); 4571 return N(d*gcd(F,g)); 4572 } 4573 if ( G.isUnivariate()) 4574 { 4575 f= content (F,F.mvar()); 4576 return N(d*gcd(G,f)); 4551 4577 } 4552 4578 … … 4934 4960 } 4935 4961 else 4936 return N (d*GCD_small_p (F,G)); 4962 { 4963 if (p >= cf_getBigPrime(0)) 4964 return N (d*sparseGCDFp (F,G)); 4965 else 4966 return N (d*GCD_small_p (F,G)); 4967 } 4937 4968 } 4938 4969
Note: See TracChangeset
for help on using the changeset viewer.