- Timestamp:
- Jul 3, 2008, 12:02:17 PM (16 years ago)
- Branches:
- (u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', 'fc741b6502fd8a97288eaa3eba6e5220f3c3df87')
- Children:
- 84acfb6c0595b6d484ac13d1c4749d9828283c0e
- Parents:
- cf315c3c3d6ea2b0b48d53abb5830ae445c6e822
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
factory/fieldGCD.cc
rcf315c r13be01 13 13 #include "cf_generator.h" 14 14 15 void out_cf(char *s1,const CanonicalForm &f,char *s2); 16 17 15 18 CanonicalForm fieldGCD( const CanonicalForm & F, const CanonicalForm & G ); 16 19 void CRA(const CanonicalForm & x1, const CanonicalForm & q1, const CanonicalForm & x2, const CanonicalForm & q2, CanonicalForm & xnew, CanonicalForm & qnew); … … 24 27 {// this is the modular method by Brown 25 28 // assume F,G are multivariate polys over Z/p for big prime p 26 if(F.isZero())29 if(F.isZero()) 27 30 { 28 31 if(G.isZero()) … … 40 43 if(F.inCoeffDomain() || G.inCoeffDomain()) 41 44 return CanonicalForm(1); 45 //out_cf("F=",F,"\n"); 46 //out_cf("G=",G,"\n"); 42 47 CFMap MM,NN; 43 48 CFArray ps(1,2); … … 62 67 g/=cg; 63 68 if(f.inCoeffDomain() || g.inCoeffDomain()) 69 { 70 //printf("=============== inCoeffDomain\n"); 64 71 return NN(c); 72 } 65 73 int *L = new int[mv+1]; // L is addressed by i from 2 to mv 66 74 int *M = new int[mv+1]; … … 87 95 if(gamma_image.isZero()) // skip lc-bad points var(1)-alpha 88 96 continue; 89 g_image = fieldGCD( f(alpha, Variable(1)), g(alpha, Variable(1)) ); // recursive call with one var less97 g_image = gcd( f(alpha, Variable(1)), g(alpha, Variable(1)) ); // recursive call with one var less 90 98 if(g_image.inCoeffDomain()) // early termination 99 { 100 //printf("================== inCoeffDomain\n"); 91 101 return NN(c); 102 } 92 103 for(int i=2; i<=mv; i++) 93 104 dg_im[i] = 0; // reset (this is necessary, because some entries may not be updated by call to leadDeg) … … 105 116 { 106 117 g_image = gm / vcontent(gm, Variable(2)); 118 //out_cf("=========== try ",g_image,"\n"); 107 119 if(fdivides(g_image,f) && fdivides(g_image,g)) // trial division 120 { 121 //printf("=========== okay\n"); 108 122 return NN(c*g_image); 123 } 109 124 } 110 125 gm = gnew; … … 117 132 if(isLess(dg_im, L, 2, mv)) // dg_im < L --> all previous points were unlucky 118 133 { 134 //printf("=========== reset\n"); 119 135 m = CanonicalForm(1); // reset 120 136 gm = 0; // reset
Note: See TracChangeset
for help on using the changeset viewer.