Changeset 9e74d36 in git for factory


Ignore:
Timestamp:
May 22, 2014, 3:12:08 PM (10 years ago)
Author:
Martin Lee <martinlee84@…>
Branches:
(u'spielwiese', '2a584933abf2a2d3082034c7586d38bb6de1a30a')
Children:
311dbd7ee168c47e2035bb6610892cdcc61130eb
Parents:
42aa8b885057d0efb3d7c9eb85289d8d9b2e1e7f
git-author:
Martin Lee <martinlee84@web.de>2014-05-22 15:12:08+02:00
git-committer:
Martin Lee <martinlee84@web.de>2014-06-04 11:54:57+02:00
Message:
chg: break factor recovery earlier
chg: make sure factor's not a constant from the alg. func. field
Location:
factory
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • factory/facAlgExt.cc

    r42aa8b8 r9e74d36  
    225225        else
    226226          tmp2.append (factor);
     227        if (buf.inCoeffDomain())
     228          break;
    227229        count++;
    228230        if (normFactors.length() - 1 == count)
  • factory/facAlgFunc.cc

    r42aa8b8 r9e74d36  
    430430{
    431431  bool isRat= isOn (SW_RATIONAL);
    432   CFFList L, sqrfFactors, Factorlist, tmp;
     432  CFFList L, normFactors, tmp;
    433433  CFFListIterator iter, iter2;
    434434  CanonicalForm R, Rstar, s, g, h, f= F;
     
    448448    if (!isRat && getCharacteristic() == 0)
    449449      On (SW_RATIONAL);
    450     Factorlist= factorize (g, alpha);
    451 
    452     for (iter= Factorlist; iter.hasItem(); iter++)
     450    tmp= factorize (g, alpha); // factorization over number field
     451
     452    for (iter= tmp; iter.hasItem(); iter++)
    453453    {
    454454      h= iter.getItem().factor();
     
    508508    {
    509509      f= iter.getItem().factor();
    510       sqrfFactors= norm (f, Rstar, *Gen, s, g, R, false);
     510      (void) norm (f, Rstar, *Gen, s, g, R, false);
    511511
    512512      if (hasFirstAlgVar (R, X))
    513         Factorlist= factorize (R, X);
     513        normFactors= factorize (R, X);
    514514      else
    515         Factorlist= factorize (R);
    516 
    517       if (!Factorlist.getFirst().factor().inCoeffDomain())
    518         Factorlist.insert (CFFactor (1, 1));
    519       if (Factorlist.length() == 2 && Factorlist.getLast().exp() == 1)
     515        normFactors= factorize (R);
     516
     517      if (normFactors.getFirst().factor().inCoeffDomain())
     518        normFactors.removeFirst();
     519      if (normFactors.length() == 1 && normFactors.getLast().exp() == 1)
    520520      {
    521521        f= backSubst (f, backSubsts, Astar);
     
    530530      {
    531531        g= f;
    532         for (iter2= Factorlist; iter2.hasItem(); iter2++)
     532        int count= 0;
     533        for (iter2= normFactors; iter2.hasItem(); iter2++)
    533534        {
    534535          CanonicalForm fnew= iter2.getItem().factor();
    535           if (fnew.level() < Rstar.level()) //factor is a constant from the function field
     536          if (fnew.level() <= Rstar.level()) //factor is a constant from the function field
    536537            continue;
    537538          else
     
    547548          h /= vcontent (h, Rstar.mvar());
    548549
    549           if (h.level() >= Rstar.level())
     550          if (h.level() > Rstar.level())
    550551          {
    551552            g= divide (g, h, Rstarlist);
     
    560561            else
    561562              tmp.append (CFFactor (h, iter2.getItem().exp()));
     563          }
     564          count++;
     565          if (g.level() <= Rstar.level())
     566            break;
     567          if (count == normFactors.length() - 1)
     568          {
     569            if (normFactors.getLast().exp() == 1 && g.level() > Rstar.level())
     570            {
     571              g= backSubst (g, backSubsts, Astar);
     572              g= Prem (g, as);
     573              g *= bCommonDen (g);
     574              g /= vcontent (g, as.getFirst().mvar());
     575              L.append (CFFactor (g, 1));
     576            }
     577            else if (normFactors.getLast().exp() > 1 &&
     578                     g.level() > Rstar.level())
     579            {
     580              g /= vcontent (g, Rstar.mvar());
     581              tmp.append (CFFactor (g, normFactors.getLast().exp()));
     582            }
     583            break;
    562584          }
    563585        }
Note: See TracChangeset for help on using the changeset viewer.