Changeset 93134c in git for factory/facFqFactorize.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/facFqFactorize.cc

    r4de1db r93134c  
    643643  TT= copy (factors);
    644644  bool recombination= false;
     645  bool trueFactor= false;
    645646  while (T.length() >= 2*s)
    646647  {
     
    687688            LCBuf= LC (buf, Variable (1));
    688689            recombination= true;
     690            trueFactor= true;
    689691          }
    690692        }
     
    697699            LCBuf= LC (buf, Variable (1));
    698700            recombination= true;
     701            trueFactor= true;
    699702          }
    700703        }
    701         T= Difference (T, S);
    702 
    703         if (T.length() < 2*s || T.length() == s)
    704         {
    705           buf= reverseShift (buf, evaluation);
    706           buf /= Lc (buf);
    707           appendTestMapDown (result, buf, info, source, dest);
    708           return result;
    709         }
    710         TT= copy (T);
    711         indexUpdate (v, s, T.length(), noSubset);
    712         if (noSubset) break;
     704
     705        if (trueFactor)
     706        {
     707          T= Difference (T, S);
     708
     709          if (T.length() < 2*s || T.length() == s)
     710          {
     711            buf= reverseShift (buf, evaluation);
     712            buf /= Lc (buf);
     713            appendTestMapDown (result, buf, info, source, dest);
     714            return result;
     715          }
     716          trueFactor= false;
     717          TT= copy (T);
     718          indexUpdate (v, s, T.length(), noSubset);
     719          if (noSubset) break;
     720        }
    713721      }
    714722    }
     
    10641072      gg= reverseShift (g, eval);
    10651073      gg /= Lc (gg);
    1066           if (!k && beta == Variable (1))
    1067           {
    1068             if (degree (gg, alpha) < degMipoBeta)
    1069             {
    1070               appendTestMapDown (result, gg, info, source, dest);
    1071               buf /= g;
    1072               nBuf= degree (g, y) + degree (LC (g, Variable (1)), y);
    1073               d -= nBuf;
    1074               e= tmax (e, nBuf);
    1075               LCBuf= LC (buf, Variable (1));
    1076             }
    1077           }
    1078           else
    1079           {
    1080             if (!isInExtension (gg, delta, k))
    1081             {
    1082               appendTestMapDown (result, gg, info, source, dest);
    1083               buf /= g;
    1084               nBuf= degree (g, y) + degree (LC (g, Variable (1)), y);
    1085               d -= nBuf;
    1086               e= tmax (e, nBuf);
    1087               LCBuf= LC (buf, Variable (1));
    1088             }
    1089           }
    1090       T= Difference (T, CFList (i.getItem()));
     1074      if (!k && beta == Variable (1))
     1075      {
     1076        if (degree (gg, alpha) < degMipoBeta)
     1077        {
     1078          appendTestMapDown (result, gg, info, source, dest);
     1079          buf /= g;
     1080          nBuf= degree (g, y) + degree (LC (g, Variable (1)), y);
     1081          d -= nBuf;
     1082          e= tmax (e, nBuf);
     1083          LCBuf= LC (buf, Variable (1));
     1084          T= Difference (T, CFList (i.getItem()));
     1085        }
     1086      }
     1087      else
     1088      {
     1089        if (!isInExtension (gg, delta, k))
     1090        {
     1091          appendTestMapDown (result, gg, info, source, dest);
     1092          buf /= g;
     1093          nBuf= degree (g, y) + degree (LC (g, Variable (1)), y);
     1094          d -= nBuf;
     1095          e= tmax (e, nBuf);
     1096          LCBuf= LC (buf, Variable (1));
     1097          T= Difference (T, CFList (i.getItem()));
     1098         }
     1099      }
    10911100    }
    10921101  }
Note: See TracChangeset for help on using the changeset viewer.