Changeset 65148c4 in git for factory/cf_gcd.cc


Ignore:
Timestamp:
Feb 18, 2013, 5:54:37 PM (11 years ago)
Author:
Oleksandr Motsak <malex984@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
77ed18101c07cdbb767d8703e5ea1d0f7c8b05f6
Parents:
71a4d7b8fea297969227779896a8ec8fc63aaedaa1da6f6fa3cfce502fec23270a8a572c1290577d
Message:
Merge pull request #265 from mohamed-barakat/spielwiese

clang fixes
File:
1 edited

Legend:

Unmodified
Added
Removed
  • factory/cf_gcd.cc

    ra1da6f r65148c4  
    607607gcd_poly_p( const CanonicalForm & f, const CanonicalForm & g )
    608608{
     609    if (f.inCoeffDomain() || g.inCoeffDomain()) //zero case should be caught by gcd
     610      return 1;
    609611    CanonicalForm pi, pi1;
    610612    CanonicalForm C, Ci, Ci1, Hi, bi, pi2;
    611     bool bpure;
     613    bool bpure, ezgcdon= isOn (SW_USE_EZGCD_P);
    612614    int delta = degree( f ) - degree( g );
    613615
     
    620622        pi = g; pi1 = f; delta = -delta;
    621623    }
    622     Ci = content( pi ); Ci1 = content( pi1 );
    623     pi1 = pi1 / Ci1; pi = pi / Ci;
     624    if (pi.isUnivariate())
     625      Ci= 1;
     626    else
     627    {
     628      if (!ezgcdon)
     629        On (SW_USE_EZGCD_P);
     630      Ci = content( pi );
     631      if (!ezgcdon)
     632        Off (SW_USE_EZGCD_P);
     633      pi = pi / Ci;
     634    }
     635    if (pi1.isUnivariate())
     636      Ci1= 1;
     637    else
     638    {
     639      if (!ezgcdon)
     640        On (SW_USE_EZGCD_P);
     641      Ci1 = content( pi1 );
     642      if (!ezgcdon)
     643        Off (SW_USE_EZGCD_P);
     644      pi1 = pi1 / Ci1;
     645    }
    624646    C = gcd( Ci, Ci1 );
    625647    int d= 0;
     
    683705        pi = pi1; pi1 = pi2;
    684706        maxNumVars= tmax (getNumVars (pi), getNumVars (pi1));
    685         if (!(pi1.isUnivariate()) && (size (pi1)/maxNumVars > 500))
     707        if (!pi1.isUnivariate() && (size (pi1)/maxNumVars > 500))
    686708        {
    687709            On (SW_USE_FF_MOD_GCD);
     
    701723            if (!(pi.isUnivariate() && pi1.isUnivariate()))
    702724            {
    703               if (size (Hi)*size (pi)/(maxNumVars*3) > 500) //maybe this needs more tuning
     725              if (size (Hi)*size (pi)/(maxNumVars*3) > 1500) //maybe this needs more tuning
    704726              {
    705727                On (SW_USE_FF_MOD_GCD);
     
    717739      return C;
    718740    }
    719     pi /= content( pi );
     741    if (!pi.isUnivariate())
     742    {
     743      if (!ezgcdon)
     744        On (SW_USE_EZGCD_P);
     745      Ci= gcd (LC (oldPi,v), LC (oldPi1,v));
     746      pi /= LC (pi,v)/Ci;
     747      Ci= content (pi);
     748      pi /= Ci;
     749      if (!ezgcdon)
     750        Off (SW_USE_EZGCD_P);
     751    }
    720752    if ( bpure )
    721753        pi /= pi.lc();
Note: See TracChangeset for help on using the changeset viewer.