Changeset 2dbe57 in git
- Timestamp:
- Feb 3, 2013, 11:41:08 PM (10 years ago)
- Branches:
- (u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'f875bbaccd0831e36aaed09ff6adeb3eb45aeb94')
- Children:
- f4d7641e74a466b25fca59f236f67698ac0ac369
- Parents:
- f18f58e98999305024a09db437ce1cd47ef15d21
- git-author:
- Martin Lee <martinlee84@web.de>2013-02-03 23:41:08+01:00
- git-committer:
- Martin Lee <martinlee84@web.de>2013-02-18 15:00:18+01:00
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
factory/facFqFactorize.cc
rf18f58 r2dbe57 50 50 TIMING_DEFINE_PRINT(fac_fq_compress) 51 51 52 53 void out_cf(const char *s1,const CanonicalForm &f,const char *s2);54 void out_cff(CFFList &L);55 52 56 53 static inline … … 1328 1325 const CFArray& evalPoint) 1329 1326 { 1330 for (int i= 0; i < evalPoint.size(); i++)1331 out_cf ("evalPoint= ", evalPoint[i], "\n");1332 1333 1327 CanonicalForm F= G; 1334 1328 CFFList sqrfFactorization; … … 1346 1340 CanonicalForm test= evalSqrfPartF.getFirst() (evalPoint[0], 2); 1347 1341 1348 out_cf ("test= ", test, "\n");1349 out_cf ("sqrfPartF= ", sqrfPartF, "\n");1350 1342 if (degree (test) != degree (sqrfPartF, 1) || test.inCoeffDomain()) 1351 1343 return 0; … … 1389 1381 for (iter= bufSqrfFactors [i]; iter.hasItem(); iter++) 1390 1382 { 1391 out_cf ("bufSqrfFactors[0]= ", iter.getItem().factor(), "\n");1392 1383 if (iter.getItem().factor().inCoeffDomain()) 1393 1384 continue; … … 1400 1391 else 1401 1392 { 1402 printf ("i= %d\n", i);1403 1393 for (iter= bufSqrfFactors [i]; iter.hasItem(); iter++) 1404 1394 { … … 1408 1398 Lc (iter.getItem().factor()), 1409 1399 iter.getItem().exp()); 1410 out_cf ("bufSqrfFactors[i]= ", iter.getItem().factor(), "\n");1411 1400 if (!find (factors, iter.getItem().factor())) 1412 1401 factors.append (iter.getItem().factor()); … … 1416 1405 1417 1406 test= prod (factors); 1418 out_cf ("test= ", test, "\n");1419 1407 tmp= evalSqrfPartF.getFirst() (evalPoint[0],2); 1420 out_cf ("tmp= ", tmp, "\n");1421 1408 if (test/Lc (test) != tmp/Lc (tmp)) 1422 1409 return 0; … … 1432 1419 ) 1433 1420 { 1434 out_cf ("LCF= ", LCF, "\n");1435 printf ("LCFFactors.length()= %d\n", LCFFactors.length());1436 for (CFListIterator iter= evaluation; iter.hasItem(); iter++)1437 out_cf ("evaluation= ", iter.getItem(), "\n");1438 for (CFListIterator iter= LCFFactors; iter.hasItem(); iter++)1439 out_cf ("LCFFactors= ", iter.getItem(), "\n");1440 1441 for (int j= 0; j < lSecondVarLCs; j++)1442 {1443 printf ("differentSecondVar= ");1444 for (CFListIterator iter= differentSecondVarLCs[j]; iter.hasItem(); iter++)1445 out_cf ("", iter.getItem(), " ");1446 printf ("\n");1447 }1448 1421 y= Variable (1); 1449 1422 if (LCF.inCoeffDomain()) … … 1452 1425 for (int i= 1; i <= LCFFactors.length() + 1; i++) 1453 1426 result.append (1); 1454 printf ("exit00\n");1455 1427 return result; 1456 1428 } … … 1498 1470 result.insert (Lc (LCF)); 1499 1471 else 1500 {1501 //for (CFListIterator i= result; i.hasItem(); i++)1502 //result.append (1);1503 1472 result.insert (LCF); 1504 } 1505 printf ("exit0\n"); 1473 1506 1474 return result; 1507 1475 } … … 1528 1496 buf= swap; 1529 1497 for (int i= 0; i < evaluation.length() - 1; i++) 1530 {1531 out_cf ("buf[i]= ", buf[i], "\n");1532 1498 evalPoint[i]= buf[i+1]; 1533 } 1534 out_cf ("buf[i]= ", buf[evaluation.length()-1], "\n"); 1499 1535 1500 int pass= testFactors (F, factors, alpha, sqrfPartF, 1536 1501 bufFactors, bufSqrfFactors, evalSqrfPartF, evalPoint); … … 1570 1535 bufBufFactors= bufFactors; 1571 1536 evalPoint= CFArray (evaluation.length() - 1); 1572 out_cf ("x= ", x, "\n");1573 out_cf ("z= ", z, "\n");1574 1537 for (int k= 1; k < evaluation.length(); k++) 1575 1538 { … … 1579 1542 evalPoint[k-1]= buf[0]; 1580 1543 } 1581 printf ("swap war nötig\n");1582 for (int jj= 0; jj < evalPoint.size(); jj++)1583 out_cf ("evalPoint= ", evalPoint[jj], "\n");1584 1544 pass= testFactors (bufF, bufBufFactors, alpha, sqrfPartF, bufFactors, 1585 1545 bufSqrfFactors, evalSqrfPartF, evalPoint); 1586 //pass= false;1587 1546 if (pass) 1588 1547 { … … 1603 1562 result.append (1); 1604 1563 result= distributeContent (result, differentSecondVarLCs, lSecondVarLCs); 1605 printf ("this exit\n");1606 1564 y= Variable (1); 1607 /*if (!result.getFirst().inCoeffDomain())1608 {1609 CFListIterator iter= result;1610 CanonicalForm tmp= iter.getItem();1611 iter++;1612 for (; iter.hasItem(); iter++)1613 iter.getItem() *= tmp;1614 }1615 y= Variable (1);*/1616 1565 delete [] bufSqrfFactors; 1617 1566 return result; … … 1627 1576 result.append (1); 1628 1577 result= distributeContent (result, differentSecondVarLCs, lSecondVarLCs); 1629 printf ("no that exit\n");1630 /*if (!result.getFirst().inCoeffDomain())1631 {1632 CFListIterator iter= result;1633 CanonicalForm tmp= iter.getItem();1634 iter++;1635 for (; iter.hasItem(); iter++)1636 iter.getItem() *= tmp;1637 }*/1638 1578 y= Variable (1); 1639 1579 delete [] bufSqrfFactors; … … 1786 1726 result.insert (N (F)); 1787 1727 1788 out_cf ("result.getFirst()= ", result.getFirst(), "\n");1789 out_cf ("content (result.getFirst())= ", content (result.getFirst()), "\n");1790 printf ("foundDifferent= %d\n", foundDifferent);1791 for (int i= 0; i < lSecondVarLCs; i++)1792 {1793 printf ("differentSecondVarLCs ");1794 for (CFListIterator pp= differentSecondVarLCs[i]; pp.hasItem(); pp++)1795 out_cf ("", pp.getItem(), " ");1796 printf ("\n");1797 }1798 for (CFListIterator pp= LCFFactors; pp.hasItem(); pp++)1799 out_cf ("LCFactors", pp.getItem(), "\n");1800 printf ("y.level()= %d\n", y.level());1801 printf ("x.level()= %d\n", x.level());1802 printf ("z.level()= %d\n", z.level());1803 1804 1728 result= distributeContent (result, differentSecondVarLCs, lSecondVarLCs); 1805 1729 1806 for (CFListIterator iter= result; iter.hasItem(); iter++)1807 out_cf ("result bis kurz vor schluÃ= ", iter.getItem(), "\n");1808 1809 1730 if (!result.getFirst().inCoeffDomain()) 1810 1731 { 1732 // prepare input for recursion 1811 1733 if (foundDifferent) 1812 1734 { 1813 1735 for (CFListIterator i= result; i.hasItem(); i++) 1814 1736 i.getItem()= swapvar (i.getItem(), Variable (2), y); 1815 CFList l= differentSecondVarLCs [j]; //nasty1737 CFList l= differentSecondVarLCs [j]; 1816 1738 for (CFListIterator i= l; i.hasItem(); i++) 1817 1739 i.getItem()= swapvar (i.getItem(), y, z); 1818 1740 differentSecondVarLCs [j]= l; 1819 1741 } 1820 printf ("not the whole leading coeff\n");1821 out_cf ("result.getFirst()= ", result.getFirst(), "\n");1822 out_cf ("y= ", y, "\n");1823 out_cf ("LCF= ", LCF, "\n");1824 for (int i= 0; i < lSecondVarLCs; i++)1825 {1826 printf ("differentSecondVarLCs ");1827 for (CFListIterator pp= differentSecondVarLCs[i]; pp.hasItem(); pp++)1828 out_cf ("", pp.getItem(), " ");1829 printf ("\n");1830 }1831 CFListIterator i; //= result;1832 CanonicalForm tmp;1833 /*if (foundDifferent)1834 i.getItem()= swapvar (i.getItem(), Variable (2), y);1835 1836 tmp= i.getItem();1837 1838 i++;1839 for (; i.hasItem(); i++)1840 {1841 out_cf ("lc= ", i.getItem(), "\n");1842 if (foundDifferent)1843 i.getItem()= swapvar (i.getItem(), Variable (2), y); //*tmp;1844 }*/1845 for (i=evaluation; i.hasItem(); i++)1846 out_cf ("eval= ", i.getItem(), "\n");1847 for (int jj= 0; jj < evalPoint.size(); jj++)1848 out_cf ("evalPoint= ", evalPoint[jj], "\n");1849 1742 1850 1743 F= result.getFirst(); … … 1864 1757 } 1865 1758 } 1866 printf ("y.level()= %d\n", y.level());1867 printf ("lSecondVarLCs= %d\n", lSecondVarLCs);1868 1759 lcretry: 1869 1760 if (lSecondVarLCs - level > 0) … … 1872 1763 int j= lSecondVarLCs+2; 1873 1764 CanonicalForm swap; 1765 CFListIterator i; 1874 1766 for (i= evaluation2; i.hasItem(); i++, j--) 1875 1767 { … … 1894 1786 goto lcretry; 1895 1787 } 1896 i= newLCs; //kann leer sein!?1788 i= newLCs; 1897 1789 CFListIterator iter= result; 1898 1790 iter++; … … 1903 1795 { 1904 1796 int count= evaluation.length()+1; 1905 for (CFListIterator iter2= evaluation2; iter2.hasItem(); iter2++, count--) 1797 for (CFListIterator iter2= evaluation2; iter2.hasItem(); iter2++, 1798 count--) 1906 1799 { 1907 1800 if (count != level+3) … … 1928 1821 { 1929 1822 int count= evaluation.length()+1; 1930 for (CFListIterator iter2= evaluation2; iter2.hasItem(); iter2++, count--) 1823 for (CFListIterator iter2= evaluation2; iter2.hasItem();iter2++, 1824 count--) 1931 1825 { 1932 1826 if (count != j+3) … … 1943 1837 evaluation2.removeLast(); 1944 1838 Variable dummyvar= Variable (1); 1945 for (i= evaluation2; i.hasItem(); i++) 1946 out_cf ("evaluation2= ", i.getItem(), "\n"); 1947 for (i= newLCs; i.hasItem(); i++) 1948 out_cf ("newLCs= ", i.getItem(), "\n"); 1949 1950 //// test 1839 1951 1840 CanonicalForm newLCF= result.getFirst(); 1952 1841 newLCF=swapvar (newLCF, Variable (2), Variable (level+3)); 1953 1842 for (i=newLCs; i.hasItem(); i++) 1954 1843 i.getItem()= swapvar (i.getItem(), Variable (2), Variable (level+3)); 1955 for (int j= 0; j < lSecondVarLCs-level-1;j++) 1956 { 1957 for (i= differentSecondVarLCs2[j]; i.hasItem(); i++) 1958 i.getItem()= swapvar (i.getItem(), Variable (2+j+1), Variable (level+3+j+1)); 1959 newLCF= swapvar (newLCF, Variable (2+j+1), Variable (level+3+j+1)); 1960 } 1961 //// 1962 for (int j= 0; j < lSecondVarLCs-level-1; j++) 1963 { 1964 printf ("differentSecondVarLCs2\n"); 1965 for (i= differentSecondVarLCs2[j]; i.hasItem(); i++) 1966 out_cf ("", i.getItem(), " "); 1967 printf ("\n"); 1968 } 1969 for (i= newLCs; i.hasItem(); i++) 1970 out_cf ("newLCs= ", i.getItem(), "\n"); 1971 out_cf ("newLCF= ", newLCF, "\n"); 1972 printf ("before recursion\n"); 1973 CFList recursiveResult= precomputeLeadingCoeff(newLCF, newLCs, alpha, evaluation2, differentSecondVarLCs2, lSecondVarLCs - level - 1, dummyvar); 1844 for (int j= 1; j < lSecondVarLCs-level;j++) 1845 { 1846 for (i= differentSecondVarLCs2[j-1]; i.hasItem(); i++) 1847 i.getItem()= swapvar (i.getItem(), Variable (2+j), 1848 Variable (level+3+j)); 1849 newLCF= swapvar (newLCF, Variable (2+j), Variable (level+3+j)); 1850 } 1851 1852 CFList recursiveResult= 1853 precomputeLeadingCoeff (newLCF, newLCs, alpha, evaluation2, 1854 differentSecondVarLCs2, lSecondVarLCs - level - 1, 1855 dummyvar); 1974 1856 1975 1857 if (dummyvar.level() != 1) … … 1981 1863 { 1982 1864 for (int j= lSecondVarLCs-level-1; j > 0; j--) 1983 i.getItem()=swapvar (i.getItem(), Variable (2+j), Variable (level+3+j)); 1865 i.getItem()=swapvar (i.getItem(), Variable (2+j), 1866 Variable (level+3+j)); 1984 1867 i.getItem()= swapvar (i.getItem(), Variable (2), Variable (level+3)); 1985 1868 } 1986 1869 1987 out_cf ("recursiveResult.getFirst()= ", recursiveResult.getFirst(), "\n");1988 1870 if (recursiveResult.getFirst() == result.getFirst()) 1989 1871 { 1990 /*i= result;1991 i++;1992 for (; i.hasItem(); i++)1993 i.getItem() *= tmp;*/1994 1872 delete [] bufSqrfFactors; 1995 1873 delete [] differentSecondVarLCs2; … … 1998 1876 else 1999 1877 { 2000 CFListIteratoriter=recursiveResult;1878 iter=recursiveResult; 2001 1879 i= result; 2002 1880 i.getItem()= iter.getItem(); … … 2004 1882 iter++; 2005 1883 for (; i.hasItem(); i++, iter++) 2006 {2007 1884 i.getItem() *= iter.getItem(); 2008 }2009 for (CFListIterator iter= result; iter.hasItem(); iter++)2010 out_cf ("result am Ende= ", iter.getItem(), "\n");2011 1885 delete [] differentSecondVarLCs2; 2012 1886 } … … 2523 2397 CanonicalForm lcmCont= lcmContent (A, contentAi); 2524 2398 A /= lcmCont; 2525 out_cf ("lcmCont= ", lcmCont, "\n");2526 for (int i= 1; i <= A.level(); i++)2527 out_cf ("LC= ", LC (A,i), "\n");2528 2399 TIMING_END_AND_PRINT (fac_fq_content, "time to extract content over Fq: "); 2529 2400 … … 2915 2786 2916 2787 CanonicalForm LCmultiplier= leadingCoeffs.getFirst(); 2917 out_cf ("LCmultiplier= ", LCmultiplier, "\n");2918 2788 bool LCmultiplierIsConst= LCmultiplier.inCoeffDomain(); 2919 2789 leadingCoeffs.removeFirst(); … … 3490 3360 tryAgainWithoutHeu: 3491 3361 TIMING_START (fac_fq_shift_to_zero); 3492 out_cf ("LC (A,1)= ", LC (A,1), "\n");3493 out_cf ("LC (oldA,1)= ", LC (oldA,1), "\n");3494 3362 A= shift2Zero (A, Aeval, evaluation); 3495 3363 … … 3546 3414 if (noOneToOne) 3547 3415 { 3548 printf ("noOneToOne\n");3549 3416 if (!LCmultiplierIsConst && LCheuristic) 3550 3417 {
Note: See TracChangeset
for help on using the changeset viewer.