Changeset 26fc59 in git
- Timestamp:
- Jun 24, 2013, 4:33:12 PM (10 years ago)
- Branches:
- (u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'f875bbaccd0831e36aaed09ff6adeb3eb45aeb94')
- Children:
- 47310215b203f48bdcb8ddd5548d21c99d84717a
- Parents:
- 13a03bf0c76a48e756ec7fbd4e7c57a45432e301
- git-author:
- Martin Lee <martinlee84@web.de>2013-06-24 16:33:12+02:00
- git-committer:
- Martin Lee <martinlee84@web.de>2013-07-22 15:49:53+02:00
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
factory/cf_gcd.cc
r13a03b r26fc59 480 480 // 481 481 //}}} 482 482 483 static CanonicalForm 483 balance_p ( const CanonicalForm & f, const CanonicalForm & q )484 balance_p ( const CanonicalForm & f, const CanonicalForm & q, const CanonicalForm & qh ) 484 485 { 485 486 Variable x = f.mvar(); 486 CanonicalForm result = 0 , qh = q / 2;487 CanonicalForm result = 0; 487 488 CanonicalForm c; 488 489 CFIterator i; … … 498 499 } 499 500 else 500 result += power( x, i.exp() ) * balance_p(c,q );501 result += power( x, i.exp() ) * balance_p(c,q,qh); 501 502 } 502 503 return result; 504 } 505 506 static CanonicalForm 507 balance_p ( const CanonicalForm & f, const CanonicalForm & q ) 508 { 509 CanonicalForm qh = q / 2; 510 return balance_p (f, q, qh); 503 511 } 504 512 … … 1269 1277 TIMING_DEFINE_PRINT(chinrem_termination) 1270 1278 TIMING_DEFINE_PRINT(chinrem_recursion) 1271 TIMING_DEFINE_PRINT(chinrem_reconstruction)1272 1279 1273 1280 CanonicalForm chinrem_gcd ( const CanonicalForm & FF, const CanonicalForm & GG ) 1274 1281 { 1275 CanonicalForm f, g, cl, q(0), Dp, newD, D, newq ;1282 CanonicalForm f, g, cl, q(0), Dp, newD, D, newq, newqh; 1276 1283 int p, i, dp_deg, d_deg=-1; 1277 1284 … … 1293 1300 1294 1301 CanonicalForm Dn, test= 0; 1302 CanonicalForm lcf, lcg; 1303 lcf= f.lc(); 1304 lcg= g.lc(); 1295 1305 cl = gcd (f.lc(),g.lc()); 1296 1306 CanonicalForm gcdcfcg= gcd (cf, cg); … … 1322 1332 i = cf_getNumBigPrimes() - 1; 1323 1333 1324 CanonicalForm cof, cog, cofp, cogp, newCof, newCog, cofn, cogn ;1334 CanonicalForm cof, cog, cofp, cogp, newCof, newCog, cofn, cogn, cDn; 1325 1335 int maxNumVars= tmax (getNumVars (f), getNumVars (g)); 1326 1336 //Off (SW_RATIONAL); … … 1356 1366 "time for gcd mod p in modular gcd: "); 1357 1367 Dp /=Dp.lc(); 1368 Dp *= mapinto (cl); 1358 1369 cofp /= lc (cofp); 1370 cofp *= mapinto (lcf); 1359 1371 cogp /= lc (cogp); 1372 cogp *= mapinto (lcg); 1360 1373 setCharacteristic( 0 ); 1361 1374 dp_deg=totaldegree(Dp); … … 1372 1385 d_deg=dp_deg; 1373 1386 q = p; 1387 Dn= balance_p (D, p); 1388 cofn= balance_p (cof, p); 1389 cogn= balance_p (cog, p); 1374 1390 } 1375 1391 else … … 1382 1398 cof= newCof; 1383 1399 cog= newCog; 1400 newqh= newq/2; 1401 Dn= balance_p (newD, newq, newqh); 1402 cofn= balance_p (newCof, newq, newqh); 1403 cogn= balance_p (newCog, newq, newqh); 1404 if (test != Dn) //balance_p (newD, newq)) 1405 test= balance_p (newD, newq); 1406 else 1407 equal= true; 1384 1408 q = newq; 1385 1409 D = newD; … … 1396 1420 test= 0; 1397 1421 equal= false; 1422 Dn= balance_p (D, p); 1423 cofn= balance_p (cof, p); 1424 cogn= balance_p (cog, p); 1398 1425 } 1399 1426 else … … 1405 1432 if ( i >= 0 ) 1406 1433 { 1407 TIMING_START (chinrem_reconstruction); 1408 Dn= Farey(D,q); 1409 cofn= Farey(cof,q); 1410 cogn= Farey(cog,q); 1411 TIMING_END_AND_PRINT (chinrem_reconstruction, 1412 "time for rational reconstruction in modular gcd: "); 1413 int is_rat= isOn (SW_RATIONAL); 1414 On (SW_RATIONAL); 1415 cd = bCommonDen( Dn ); // we need On(SW_RATIONAL) 1416 cofn *= bCommonDen (cofn); 1417 cogn *= bCommonDen (cogn); 1418 if (!is_rat) 1419 Off (SW_RATIONAL); 1420 Dn *=cd; 1421 if (test != Dn) 1422 test= Dn; 1423 else 1424 equal= true; 1425 //Dn /=vcontent(Dn,Variable(1)); 1434 cDn= icontent (Dn); 1435 Dn /= cDn; 1436 cofn /= cl/cDn; 1437 //cofn /= icontent (cofn); 1438 cogn /= cl/cDn; 1439 //cogn /= icontent (cogn); 1426 1440 TIMING_START (chinrem_termination); 1427 1441 if ((terminationTest (f,g, cofn, cogn, Dn)) ||
Note: See TracChangeset
for help on using the changeset viewer.