Changeset 4704674 in git for factory/cf_gcd.cc


Ignore:
Timestamp:
Apr 26, 2012, 10:46:57 AM (11 years ago)
Author:
Martin Lee <martinlee84@…>
Branches:
(u'spielwiese', '8e0ad00ce244dfd0756200662572aef8402f13d5')
Children:
cb7827a842fd2e9878498f940e9f7735fdbe488e
Parents:
9f84ad2f3376850c4d78697edb203d32c07d3094
git-author:
Martin Lee <martinlee84@web.de>2012-04-26 10:46:57+02:00
git-committer:
Martin Lee <martinlee84@web.de>2012-05-07 14:16:24+02:00
Message:
chg: avoid divisibility tests
chg: use a bound on coeffs in chinrem_gcd
File:
1 edited

Legend:

Unmodified
Added
Removed
  • factory/cf_gcd.cc

    r9f84ad r4704674  
    12371237
    12381238  CanonicalForm Dn, test= 0;
     1239  cl =  gcd (f.lc(),g.lc());
     1240  CanonicalForm b= 1;
     1241  int minCommonDeg= 0;
     1242  CanonicalForm gcdcfcg= gcd (cf, cg);
     1243  for (i= tmax (f.level(), g.level()); i > 0; i--)
     1244  {
     1245    if (degree (f, i) <= 0 || degree (g, i) <= 0)
     1246      continue;
     1247    else
     1248    {
     1249      minCommonDeg= tmin (degree (g, i), degree (f, i));
     1250      break;
     1251    }
     1252  }
     1253  if (i == 0)
     1254    return gcdcfcg;
     1255  for (; i > 0; i--)
     1256  {
     1257    if (degree (f, i) <= 0 || degree (g, i) <= 0)
     1258      continue;
     1259    else
     1260      minCommonDeg= tmin (minCommonDeg, tmin (degree (g, i), degree (f, i)));
     1261  }
     1262  b= 2*tmin (maxNorm (f), maxNorm (g))*abs (cl)*power (CanonicalForm (2), minCommonDeg);
    12391263  bool equal= false;
    12401264  i = cf_getNumBigPrimes() - 1;
    1241   cl =  gcd (f.lc(),g.lc());
    1242 
    1243   CanonicalForm gcdcfcg= gcd (cf, cg);
     1265
    12441266  //Off (SW_RATIONAL);
    12451267  while ( true )
     
    13071329        equal= true;
    13081330      //Dn /=vcontent(Dn,Variable(1));
    1309       if (equal && fdivides( Dn, f ) && fdivides( Dn, g ) )
     1331      if ((equal || q > b) && fdivides( Dn, f ) && fdivides( Dn, g ) )
    13101332      {
    13111333        //printf(" -> success\n");
Note: See TracChangeset for help on using the changeset viewer.