Changeset b4af1b in git for factory/facBivar.cc


Ignore:
Timestamp:
Mar 9, 2012, 12:47:25 PM (12 years ago)
Author:
Martin Lee <martinlee84@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
f9da5e777f690b6f9e44916c1818b0b98c02a70b
Parents:
41fea7e7855abb0fa24d84704ca2690c219670fb
git-author:
Martin Lee <martinlee84@web.de>2012-03-09 12:47:25+01:00
git-committer:
Martin Lee <martinlee84@web.de>2012-04-04 14:42:27+02:00
Message:
chg: coeff bound for factorization over Q(a), now Hensel
     lifting is done over ZZ_p^k[t]/(f) for suitable p and k
File:
1 edited

Legend:

Unmodified
Added
Removed
  • factory/facBivar.cc

    r41fea7 rb4af1b  
    106106    int N= degree (mipo);
    107107    CanonicalForm b;
    108     b= 2*power (maxNorm (f), N)*power (maxNorm (mipo), 4*N)*K*power (CanonicalForm (2), N)*(CanonicalForm (M+1).sqrt()+1)*power (CanonicalForm (N+1).sqrt()+1, 7*N);
     108    b= 2*power (maxNorm (f), N)*power (maxNorm (mipo), 4*N)*K*
     109       power (CanonicalForm (2), N)*(CanonicalForm (M+1).sqrt()+1)*
     110       power (CanonicalForm (N+1).sqrt()+1, 7*N);
    109111    b /= power (abs (lc (mipo)), N);
    110112
     
    358360    A= F;
    359361
     362  CanonicalForm mipo;
     363  if (extension)
     364    mipo= getMipo (v);
     365
    360366  if (A.isUnivariate())
    361367  {
     
    612618  }
    613619
    614 
    615620  if (degs.getLength() == 1) // A is irreducible
    616621  {
     
    645650    if (bb.getk() > b.getk() ) b=bb;
    646651  }
     652  else
     653  {
     654    A /= Lc (Aeval);
     655    A *= bCommonDen (A);
     656    // make factors elements of Z(a)[x] disable for modularDiophant
     657    for (CFListIterator i= uniFactors; i.hasItem(); i++)
     658      i.getItem()= i.getItem()*bCommonDen(i.getItem());
     659    Off (SW_RATIONAL);
     660    int i= 0;
     661    ZZX NTLmipo= convertFacCF2NTLZZX (mipo);
     662    CanonicalForm discMipo= convertZZ2CF (discriminant (NTLmipo));
     663    findGoodPrime (F*discMipo,i);
     664    findGoodPrime (Aeval*discMipo,i);
     665    findGoodPrime (A*discMipo,i);
     666
     667    int p=cf_getBigPrime(i);
     668    b = coeffBound( A, p, mipo );
     669    modpk bb= coeffBound (Aeval, p, mipo);
     670    if (bb.getk() > b.getk() ) b=bb;
     671      bb= coeffBound (F, p, mipo);
     672    if (bb.getk() > b.getk() ) b=bb;
     673  }
    647674
    648675  ExtensionInfo dummy= ExtensionInfo (false);
     676  if (extension)
     677    dummy= ExtensionInfo (v, false);
    649678  bool earlySuccess= false;
    650679  CFList earlyFactors;
    651680  TIMING_START (fac_hensel_lift);
    652   //maybe one should use a multiple of LC (A,1) and try a nonmonic lifting here?
    653681  uniFactors= henselLiftAndEarly
    654682              (A, earlySuccess, earlyFactors, degs, liftBound,
     
    662690                                uniFactors.length()/2, b);
    663691
    664   if (!extension)
    665     On (SW_RATIONAL);
     692  On (SW_RATIONAL);
    666693
    667694  if (earlySuccess)
Note: See TracChangeset for help on using the changeset viewer.