Changeset 4cf4dc in git for factory/facFactorize.cc


Ignore:
Timestamp:
Aug 20, 2012, 9:44:16 PM (12 years ago)
Author:
Martin Lee <martinlee84@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
589ef64cf8eb3dc278fc36630707eda2b0125578
Parents:
27e0172370323ce80587df1d73a66392a08a5c03
git-author:
Martin Lee <martinlee84@web.de>2012-08-20 21:44:16+02:00
git-committer:
Martin Lee <martinlee84@web.de>2012-09-04 18:01:18+02:00
Message:
chg: more improvements to heuristic to distribute leading coeff
File:
1 edited

Legend:

Unmodified
Added
Removed
  • factory/facFactorize.cc

    r27e0172 r4cf4dc  
    10551055              foundMultiplier= true;
    10561056              iter.getItem()= 1;
    1057               break;
    10581057            }
    10591058          }
     
    10671066          for (iter= contents; iter.hasItem(); iter++, iter2++, index++)
    10681067          {
    1069             if (!(iter.getItem().isOne()) &&
     1068            if (!iter.getItem().isOne() &&
    10701069                fdivides (iter.getItem(), LCmultiplier))
    10711070            {
     
    10861085                LCmultiplier /= iter.getItem();
    10871086                iter.getItem()= 1;
    1088                 break;
    10891087              }
    10901088              else //factor consists of just leading coeff
    10911089              {
    1092                 CanonicalForm vars=getVars (iter.getItem());
    1093                 CanonicalForm factor;
    1094                 Variable xx;
    1095                 bool oneVariableNotInCommon= false;
    1096                 for (int i= 0; i < A.level()-2; i++)
     1090                Variable xx= Variable (2);
     1091                CanonicalForm vars;
     1092                vars= power (xx, degree (LC (getItem(oldBiFactors, index),1),
     1093                                          xx));
     1094                for (int i= 0; i < A.level() -2; i++)
    10971095                {
    10981096                  if (oldAeval[i].isEmpty())
    10991097                    continue;
    11001098                  xx= oldAeval[i].getFirst().mvar();
    1101                   factor= LC (getItem (oldAeval[i], index),1);
    1102                   if ((factor.inCoeffDomain() && degree (vars,xx) > 0) ||
    1103                       (degree (factor,xx) > 0 && degree (vars,xx) <= 0)) //scan for bivariate factors with leading coeff that does not contain variables which occur in LCmultiplier
    1104                   {
    1105                     oneVariableNotInCommon= true;
    1106                     break;
    1107                   }
     1099                  vars *= power (xx, degree (LC (getItem(oldAeval[i], index),1),
     1100                                             xx));
    11081101                }
    1109                 if (oneVariableNotInCommon)
     1102                if (myGetVars(content(getItem(leadingCoeffs2[A.level()-3],index),1))
     1103                    /myGetVars (LCmultiplier) == vars)
    11101104                {
    11111105                  int index2= 1;
     
    11151109                    if (index2 == index)
    11161110                    {
    1117                       iter2.getItem() /= iter.getItem();
     1111                      iter2.getItem() /= LCmultiplier;
    11181112                      foundMultiplier= true;
    11191113                      break;
    11201114                    }
    11211115                  }
    1122                   A /= iter.getItem();
    1123                   LCmultiplier /= iter.getItem();
     1116                  A /= LCmultiplier;
    11241117                  iter.getItem()= 1;
    1125                   break;
    1126                 }
    1127               }
    1128             }
    1129           }
    1130           // wipe out the last LCmultiplier
    1131           if (foundMultiplier)
    1132           {
    1133             index= 1;
    1134             for (iter= contents; iter.hasItem(); iter++, index++)
    1135             {
    1136               if (!iter.getItem().isOne() &&
    1137                   fdivides (LCmultiplier, iter.getItem()))
    1138               {
    1139                 int index2= 1;
    1140                 for (iter2= leadingCoeffs2[A.level()-3]; iter2.hasItem();
    1141                      iter2++, index2++)
    1142                 {
    1143                   if (index2 == index)
    1144                   {
    1145                     iter2.getItem() /= LCmultiplier;
    1146                     A /= LCmultiplier;
    1147                     iter.getItem() /= LCmultiplier;
    1148                   }
    11491118                }
    11501119              }
Note: See TracChangeset for help on using the changeset viewer.