Changeset 93134c in git for factory/facFqBivar.cc


Ignore:
Timestamp:
Jan 19, 2011, 8:01:25 PM (13 years ago)
Author:
Martin Lee <martinlee84@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
faacc9af4993a2cd9baf5e2c3630559360675eb3
Parents:
4de1db931b2c71801f39c4b547b80ca57afb81a5
Message:
bug fixes for factor recombination in case an extension is needed


git-svn-id: file:///usr/local/Singular/svn/trunk@13801 2c84dea3-7e68-4137-9b89-c4e89433aadc
File:
1 edited

Legend:

Unmodified
Added
Removed
  • factory/facFqBivar.cc

    r4de1db r93134c  
    276276  bool nosubset= false;
    277277  bool recombination= false;
     278  bool trueFactor= false;
    278279  while (T.length() >= 2*s)
    279280  {
     
    319320          {
    320321            buf2= g (y - eval, y);
    321             appendTestMapDown (result, buf2, info, source, dest);
     322            buf2 /= Lc (buf2);
     323
    322324            if (!k && beta == Variable (1))
    323325            {
     
    327329                LCBuf= LC (buf, Variable (1));
    328330                recombination= true;
     331                appendTestMapDown (result, buf2, info, source, dest);
     332                trueFactor= true;
    329333              }
    330334            }
     
    336340                LCBuf= LC (buf, Variable (1));
    337341                recombination= true;
     342                appendTestMapDown (result, buf2, info, source, dest);
     343                trueFactor= true;
    338344              }
    339345            }
    340             T= Difference (T, S);
    341             // compute new possible degree pattern
    342             bufDegs2= DegreePattern (T);
    343             bufDegs1.intersect (bufDegs2);
    344             bufDegs1.refine ();
    345             if (T.length() < 2*s || T.length() == s ||
    346                 bufDegs1.getLength() == 1)
     346            if (trueFactor)
    347347            {
    348               if (recombination)
     348              T= Difference (T, S);
     349              // compute new possible degree pattern
     350              bufDegs2= DegreePattern (T);
     351              bufDegs1.intersect (bufDegs2);
     352              bufDegs1.refine ();
     353              if (T.length() < 2*s || T.length() == s ||
     354                  bufDegs1.getLength() == 1)
    349355              {
    350                 appendTestMapDown (result, buf (y - eval, y), info, source,
    351                                    dest);
    352                 return result;
     356                if (recombination)
     357                {
     358                  appendTestMapDown (result, buf (y - eval, y), info, source,
     359                                     dest);
     360                  return result;
     361                }
     362                else
     363                {
     364                  appendMapDown (result, F (y - eval, y), info, source, dest);
     365                  return result;
     366                }
    353367              }
    354               else
    355               {
    356                 appendMapDown (result, F (y - eval, y), info, source, dest);
    357                 return result;
    358               }
     368              trueFactor= false;
     369              TT= copy (T);
     370              indexUpdate (v, s, T.length(), nosubset);
     371              if (nosubset) break;
    359372            }
    360             TT= copy (T);
    361             indexUpdate (v, s, T.length(), nosubset);
    362             if (nosubset) break;
    363373          }
    364374        }
     
    609619  CanonicalForm M= power (y, deg);
    610620  adaptedLiftBound= 0;
     621  bool trueFactor= false;
    611622  int d;
    612623  if (degree (F) == degree (LCBuf))
     
    646657              d -= degree (g) + degree (LC (g, Variable (1)));
    647658              LCBuf= LC (buf, Variable (1));
     659              trueFactor= true;
    648660            }
    649661          }
     
    656668              d -= degree (g) + degree (LC (g, Variable (1)));
    657669              LCBuf= LC (buf, Variable (1));
     670              trueFactor= true;
    658671            }
    659672          }
    660           T= Difference (T, CFList (i.getItem()));
    661 
    662           // compute new possible degree pattern
    663           bufDegs2= DegreePattern (T);
    664           bufDegs1.intersect (bufDegs2);
    665           bufDegs1.refine ();
    666           if (bufDegs1.getLength() <= 1)
     673          if (trueFactor)
    667674          {
    668             buf= buf (y - eval, y);
    669             buf /= Lc (buf);
    670             appendMapDown (result, buf, info, source, dest);
    671             break;
     675            T= Difference (T, CFList (i.getItem()));
     676
     677            // compute new possible degree pattern
     678            bufDegs2= DegreePattern (T);
     679            bufDegs1.intersect (bufDegs2);
     680            bufDegs1.refine ();
     681            trueFactor= false;
     682            if (bufDegs1.getLength() <= 1)
     683            {
     684              buf= buf (y - eval, y);
     685              buf /= Lc (buf);
     686              appendMapDown (result, buf, info, source, dest);
     687              break;
     688            }
    672689          }
    673690        }
Note: See TracChangeset for help on using the changeset viewer.