Changeset 617dbc in git for factory/facFqBivar.cc
- Timestamp:
- Jun 19, 2012, 3:16:35 PM (12 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- 53273d8bcb24900118b9a5adfd3b2e5353f82175
- Parents:
- 773d281c087d1388ff04cd6c70faccb93fe0fc03
- git-author:
- Martin Lee <martinlee84@web.de>2012-06-19 15:16:35+02:00
- git-committer:
- Martin Lee <martinlee84@web.de>2012-07-31 11:48:49+02:00
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
factory/facFqBivar.cc
r773d28 r617dbc 4259 4259 CanonicalForm& bufF, CFList& factors, int& l, 4260 4260 int& factorsFound, bool beenInThres, CFMatrix& M, 4261 CFArray& Pi, CFList& diophant 4261 CFArray& Pi, CFList& diophant, bool symmetric, 4262 const CanonicalForm& evaluation 4262 4263 ) 4263 4264 { … … 4329 4330 while ((degree (F,y)/4)*i + 4 <= smallFactorDeg) 4330 4331 i++; 4331 while (i < 4)4332 { 4333 dummy= tmin (degree (F,y)+1, (degree (F,y)/4)* (i+1)+4);4332 while (i < 5) 4333 { 4334 dummy= tmin (degree (F,y)+1, (degree (F,y)/4)*i+4); 4334 4335 if (l < dummy) 4335 4336 { … … 4337 4338 henselLiftResume12 (F, factors, l, dummy, Pi, diophant, M); 4338 4339 l= dummy; 4340 if (i == 1 && degree (F)%4==0 && symmetric && factors.length() == 2 && 4341 LC (F,1).inCoeffDomain() && 4342 (degree (factors.getFirst(), 1) == degree (factors.getLast(),1))) 4343 { 4344 Variable x= Variable (1); 4345 CanonicalForm g, h, gg, hh, multiplier1, multiplier2, check1, check2; 4346 int m= degree (F)/4+1; 4347 g= factors.getFirst(); 4348 h= factors.getLast(); 4349 g= mod (g, power (y,m)); 4350 h= mod (h, power (y,m)); 4351 g= g (y-evaluation, y); 4352 h= h (y-evaluation, y); 4353 gg= mod (swapvar (g,x,y),power (x,m)); 4354 gg= gg (y + evaluation, y); 4355 multiplier1= factors.getLast()[m-1][0]/gg[m-1][0]; 4356 gg= div (gg, power (y,m)); 4357 gg= gg*power (y,m); 4358 hh= mod (swapvar (h,x,y),power (x,m)); 4359 hh= hh (y + evaluation, y); 4360 multiplier2= factors.getFirst()[m-1][0]/hh[m-1][0]; 4361 hh= div (hh, power (y,m)); 4362 hh= hh*power (y,m); 4363 gg= multiplier1*gg+mod (factors.getLast(), power (y,m)); 4364 hh= multiplier2*hh+mod (factors.getFirst(), power (y,m)); 4365 check1= gg (y-evaluation,y); 4366 check2= hh (y-evaluation,y); 4367 check1= swapvar (check1, x, y); 4368 if (check1/Lc (check1) == check2/Lc (check2)) 4369 { 4370 result.append (gg); 4371 result.append (hh); 4372 delete [] liftPre; 4373 delete [] factorsFoundIndex; 4374 return result; 4375 } 4376 } 4339 4377 } 4340 4378 else 4341 4379 { 4342 4380 i++; 4343 if (i < 4)4381 if (i < 5) 4344 4382 continue; 4345 4383 } … … 4435 4473 while ((degree (F,y)/4)*i + 4 <= smallFactorDeg) 4436 4474 i++; 4437 while (i < 4)4438 { 4439 dummy= tmin (degree (F,y)+1, (degree (F,y)/4)* (i+1)+4);4475 while (i < 5) 4476 { 4477 dummy= tmin (degree (F,y)+1, (degree (F,y)/4)*i+4); 4440 4478 if (l < dummy) 4441 4479 { … … 4447 4485 { 4448 4486 i++; 4449 if (i < 4)4487 if (i < 5) 4450 4488 continue; 4451 4489 } … … 4546 4584 while ((degree (F,y)/4)*i + 4 <= smallFactorDeg) 4547 4585 i++; 4548 while (i < 4)4549 { 4550 dummy= tmin (degree (F,y)+1, (degree (F,y)/4)* (i+1)+4);4586 while (i < 5) 4587 { 4588 dummy= tmin (degree (F,y)+1, (degree (F,y)/4)*i+4); 4551 4589 if (l < dummy) 4552 4590 { … … 4558 4596 { 4559 4597 i++; 4560 if (i < 4)4598 if (i < 5) 4561 4599 continue; 4562 4600 } … … 4675 4713 CFList 4676 4714 henselLiftAndLatticeRecombi (const CanonicalForm& G, const CFList& uniFactors, 4677 const Variable& alpha, const DegreePattern& degPat 4715 const Variable& alpha, const DegreePattern& degPat, 4716 bool symmetric, const CanonicalForm& evaluation 4678 4717 ) 4679 4718 { … … 5005 5044 result= earlyReconstructionAndLifting (F, NTLN, bufF, bufUniFactors, l, 5006 5045 factorsFound, beenInThres, M, Pi, 5007 diophant 5046 diophant, symmetric, evaluation 5008 5047 ); 5009 5048 … … 5143 5182 } 5144 5183 return Union (result, henselLiftAndLatticeRecombi (bufF, bufUniFactors, 5145 alpha, degs 5184 alpha, degs, symmetric, 5185 evaluation 5146 5186 ) 5147 5187 ); … … 5273 5313 delete [] bounds; 5274 5314 return Union (result, henselLiftAndLatticeRecombi (F, bufUniFactors, alpha, 5275 degs 5315 degs,symmetric, evaluation 5276 5316 ) 5277 5317 ); … … 5933 5973 5934 5974 bool fail= false; 5935 CanonicalForm Aeval, evaluation, bufAeval, bufEvaluation, buf ;5975 CanonicalForm Aeval, evaluation, bufAeval, bufEvaluation, buf, tmp; 5936 5976 CFList uniFactors, list, bufUniFactors; 5937 5977 DegreePattern degs; … … 5951 5991 int subCheck1= substituteCheck (A, x); 5952 5992 int subCheck2= substituteCheck (A, y); 5993 bool symmetric= false; 5953 5994 for (int i= 0; i < factorNums; i++) 5954 5995 { … … 5957 5998 if (!derivXZero && !fail2) 5958 5999 { 5959 buf= swapvar (A, x, y); 6000 if (i == 0) 6001 { 6002 buf= swapvar (A, x, y); 6003 symmetric= (A/Lc (A) == buf/Lc (buf)); 6004 } 5960 6005 bufAeval2= buf; 5961 6006 bufEvaluation2= evalPoint (buf, bufAeval2, alpha, list2, GF, fail2); … … 5970 6015 subCheck2= subCheck1; 5971 6016 subCheck1= dummy; 6017 tmp= A; 5972 6018 A= buf; 6019 buf= tmp; 5973 6020 bufAeval= bufAeval2; 5974 6021 swap2= true; … … 6200 6247 else if (alpha.level() == 1 && !GF) 6201 6248 { 6202 CFList lll= henselLiftAndLatticeRecombi (A, uniFactors, alpha, degs); 6249 CFList lll= henselLiftAndLatticeRecombi (A, uniFactors, alpha, degs, 6250 symmetric, evaluation); 6203 6251 factors= Union (lll, factors); 6204 6252 } 6205 6253 else if (!extension && (alpha != x || GF)) 6206 6254 { 6207 CFList lll= henselLiftAndLatticeRecombi (A, uniFactors, alpha, degs); 6255 CFList lll= henselLiftAndLatticeRecombi (A, uniFactors, alpha, degs, 6256 symmetric, evaluation); 6208 6257 factors= Union (lll, factors); 6209 6258 }
Note: See TracChangeset
for help on using the changeset viewer.