Changeset 71a4d7 in git for factory/cf_gcd_smallp.cc


Ignore:
Timestamp:
Feb 18, 2013, 5:10:09 PM (11 years ago)
Author:
Oleksandr Motsak <malex984@…>
Branches:
(u'spielwiese', '17f1d200f27c5bd38f5dfc6e8a0879242279d1d8')
Children:
65148c4d2a607796fbd578ae2f3219965019aaae
Parents:
d826a82d3b17fc5f6da647679a15d4f1af7657fdf1becf6c8965f6addf0a63ca09a9418a48c294be
Message:
Merge pull request #264 from mmklee/sync

Sync Master and Spielwiese
File:
1 edited

Legend:

Unmodified
Added
Removed
  • factory/cf_gcd_smallp.cc

    rd826a8 r71a4d7  
    3333#include "cfNewtonPolygon.h"
    3434#include "cf_algorithm.h"
     35#include "cf_primes.h"
    3536
    3637// iinline helper functions:
     
    820821        cH= uni_content (H);
    821822      ppH= H/cH;
     823      ppH /= Lc (ppH);
    822824      CanonicalForm lcppH= gcdlcAlcB/cH;
    823       CanonicalForm ccoF= lcA/lcppH;
    824       ccoF /= Lc (ccoF);
    825       CanonicalForm ccoG= lcB/lcppH;
    826       ccoG /= Lc (ccoG);
     825      CanonicalForm ccoF= lcppH/Lc (lcppH);
     826      CanonicalForm ccoG= lcppH/Lc (lcppH);
    827827      ppCoF= coF/ccoF;
    828828      ppCoG= coG/ccoG;
     
    836836          CFList u, v;
    837837          DEBOUTLN (cerr, "ppH before mapDown= " << ppH);
    838           ppH /= Lc(ppH);
    839838          ppH= mapDown (ppH, prim_elem, im_prim_elem, alpha, u, v);
    840839          ppCoF= mapDown (ppCoF, prim_elem, im_prim_elem, alpha, u, v);
    841           ppCoF= mapDown (ppCoG, prim_elem, im_prim_elem, alpha, u, v);
     840          ppCoG= mapDown (ppCoG, prim_elem, im_prim_elem, alpha, u, v);
    842841          DEBOUTLN (cerr, "ppH after mapDown= " << ppH);
    843842          if (compressConvexDense)
     
    12141213    {
    12151214      if (inextension)
     1215      {
     1216        ppA= GFMapDown (ppA, k);
     1217        ppB= GFMapDown (ppB, k);
    12161218        setCharacteristic (p, k, gf_name_buf);
     1219      }
    12171220      coF= N (ppA*(cA/gcdcAcB));
    12181221      coG= N (ppB*(cB/gcdcAcB));
     
    12671270        cH= uni_content (H);
    12681271      ppH= H/cH;
     1272      ppH /= Lc (ppH);
    12691273      CanonicalForm lcppH= gcdlcAlcB/cH;
    1270       CanonicalForm ccoF= lcA/lcppH;
    1271       ccoF /= Lc (ccoF);
    1272       CanonicalForm ccoG= lcB/lcppH;
    1273       ccoG /= Lc (ccoG);
     1274      CanonicalForm ccoF= lcppH/Lc (lcppH);
     1275      CanonicalForm ccoG= lcppH/Lc (lcppH);
    12741276      ppCoF= coF/ccoF;
    12751277      ppCoG= coG/ccoG;
     
    16241626      G_random_element=
    16251627      GCD_Fp_extension (ppA (random_element, x), ppB (random_element, x),
    1626                         coF_random_element, coG_random_element, alpha,
     1628                        coF_random_element, coG_random_element, V_buf,
    16271629                        list, topLevel);
    16281630      TIMING_END_AND_PRINT (gcd_recursion,
     
    39053907      l.append (random_element);
    39063908
    3907     if ((getCharacteristic() > 3 && size (skeleton) < 100))
     3909    if ((getCharacteristic() > 3 && size (skeleton) < 200))
    39083910    {
    39093911      CFArray Monoms;
     
    41204122      } while (1); //end of second do
    41214123    }
     4124    else
     4125      return N(gcdcAcB*GCD_small_p (ppA, ppB));
    41224126  } while (1); //end of first do
    41234127}
     
    43814385
    43824386  CFList evaluation;
     4387  long termEstimate= size (U);
    43834388  for (int i= A.min(); i <= A.max(); i++)
     4389  {
     4390    if (!A[i].isZero() && (getCharacteristic() > degree (U,i))) //TODO find a good estimate for getCharacteristic() <= degree (U,i)
     4391    {
     4392      termEstimate *= degree (U,i)*2;
     4393      termEstimate /= 3;
     4394    }
    43844395    evaluation.append (A [i]);
     4396  }
     4397  if (termEstimate/getNumVars(U) > 500)
     4398    return -1;
    43854399  CFList UEval;
    43864400  CanonicalForm shiftedU= myShift2Zero (U, UEval, evaluation);
     
    45484562    if( F.mvar() == G.mvar() )
    45494563      d *= gcd( F, G );
     4564    else
     4565      return N (d);
    45504566    return N (d);
     4567  }
     4568  if ( F.isUnivariate())
     4569  {
     4570    g= content (G,G.mvar());
     4571    return N(d*gcd(F,g));
     4572  }
     4573  if ( G.isUnivariate())
     4574  {
     4575    f= content (F,F.mvar());
     4576    return N(d*gcd(G,f));
    45514577  }
    45524578
     
    49344960        }
    49354961        else
    4936           return N (d*GCD_small_p (F,G));
     4962        {
     4963          if (p >= cf_getBigPrime(0))
     4964            return N (d*sparseGCDFp (F,G));
     4965          else
     4966            return N (d*GCD_small_p (F,G));
     4967        }
    49374968      }
    49384969
Note: See TracChangeset for help on using the changeset viewer.