Changeset 3ed6758 in git for factory/facFqBivar.cc


Ignore:
Timestamp:
May 13, 2012, 1:53:57 PM (12 years ago)
Author:
Martin Lee <martinlee84@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
ec664a2ce7842d3b8f5d7a9af2a8b2ff7944ec43
Parents:
d1553c4ccee2126aacc2a8a2ac1923da9be0c131
git-author:
Martin Lee <martinlee84@web.de>2012-05-13 13:53:57+02:00
git-committer:
Martin Lee <martinlee84@web.de>2012-07-31 11:33:09+02:00
Message:
chg: smarter check if factorization is reconstructed if there are only two factors
File:
1 edited

Legend:

Unmodified
Added
Removed
  • factory/facFqBivar.cc

    rd1553c r3ed6758  
    13311331  Variable x= Variable (1);
    13321332  CanonicalForm yToL= power (y, liftBound);
     1333  if (factors.length() == 2)
     1334  {
     1335    CanonicalForm tmp1, tmp2;
     1336    tmp1= factors.getFirst();
     1337    tmp2= factors.getLast();
     1338    tmp1 *= LC (F, x);
     1339    tmp1= mod (tmp1, yToL);
     1340    tmp1 /= content (tmp1, x);
     1341    tmp2 *= LC (F, x);
     1342    tmp2= mod (tmp2, yToL);
     1343    tmp2 /= content (tmp2, x);
     1344    if (degree (tmp1) + degree (tmp2) == degree (F))
     1345    {
     1346      factorsFound++;
     1347      F= 1;
     1348      reconstructedFactors.append (tmp1);
     1349      reconstructedFactors.append (tmp2);
     1350      return;
     1351    }
     1352  }
    13331353  CanonicalForm quot, buf;
    13341354  CFListIterator iter;
     
    13861406  Variable y= Variable (2);
    13871407  Variable x= Variable (1);
     1408  CanonicalForm yToL= power (y, liftBound);
     1409  if (factors.length() == 2)
     1410  {
     1411    CanonicalForm tmp1, tmp2;
     1412    tmp1= factors.getFirst();
     1413    tmp2= factors.getLast();
     1414    tmp1 *= LC (F, x);
     1415    tmp1= mod (tmp1, yToL);
     1416    tmp1 /= content (tmp1, x);
     1417    tmp2 *= LC (F, x);
     1418    tmp2= mod (tmp2, yToL);
     1419    tmp2 /= content (tmp2, x);
     1420    if (degree (tmp1) + degree (tmp2) == degree (F))
     1421    {
     1422      factorsFound++;
     1423      F= 1;
     1424      reconstructedFactors.append (tmp1);
     1425      reconstructedFactors.append (tmp2);
     1426      return;
     1427    }
     1428  }
    13881429  CanonicalForm quot, buf;
    1389   CanonicalForm yToL= power (y, liftBound);
    13901430  CFListIterator iter;
    13911431  for (long i= 1; i <= N.NumCols(); i++)
     
    16801720  CanonicalForm delta= info.getDelta();
    16811721  CanonicalForm yToL= power (y, liftBound);
     1722  CFList source, dest;
     1723  if (factors.length() == 2)
     1724  {
     1725    CanonicalForm tmp1, tmp2;
     1726    tmp1= factors.getFirst();
     1727    tmp2= factors.getLast();
     1728    tmp1 *= LC (F, x);
     1729    tmp1= mod (tmp1, yToL);
     1730    tmp1 /= content (tmp1, x);
     1731    tmp2 *= LC (F, x);
     1732    tmp2= mod (tmp2, yToL);
     1733    tmp2 /= content (tmp2, x);
     1734    if (degree (tmp1) + degree (tmp2) == degree (F))
     1735    {
     1736      tmp1= tmp1 (y - evaluation, y);
     1737      tmp2= tmp2 (y - evaluation, y);
     1738      factorsFound++;
     1739      F= 1;
     1740      tmp1= mapDown (tmp1, info, source, dest);
     1741      tmp2= mapDown (tmp2, info, source, dest);
     1742      reconstructedFactors.append (tmp1);
     1743      reconstructedFactors.append (tmp2);
     1744      return;
     1745    }
     1746  }
    16821747  CanonicalForm quot, buf, buf2;
    1683   CFList source, dest;
    16841748  CFListIterator iter;
    16851749  for (long i= 1; i <= N.NumCols(); i++)
Note: See TracChangeset for help on using the changeset viewer.