Changeset 8256fd in git
- Timestamp:
- Jul 16, 2012, 11:15:58 AM (12 years ago)
- Branches:
- (u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', 'b4f17ed1d25f93d46dbe29e4b499baecc2fd51bb')
- Children:
- faa1b8d6e411251ef4c85b56aefa21b74f5db582
- Parents:
- 67a39b21729f20cbd2a5d3b6e61a60d67aa387d9
- git-author:
- Martin Lee <martinlee84@web.de>2012-07-16 11:15:58+02:00
- git-committer:
- Martin Lee <martinlee84@web.de>2012-09-04 17:25:37+02:00
- Location:
- factory
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
factory/facFactorize.cc
r67a39b r8256fd 267 267 } 268 268 269 CFMap N; 270 CanonicalForm F= compress (LCF, N); 269 CFMap N, M; 270 CFArray dummy= CFArray (1); 271 dummy [0]= LCF; 272 compress (dummy, M, N); 273 CanonicalForm F= M (LCF); 271 274 if (LCF.isUnivariate()) 272 275 { … … 311 314 CFList factors= LCFFactors; 312 315 313 CFMap dummy;314 316 for (CFListIterator i= factors; i.hasItem(); i++) 315 i.getItem()= compress (i.getItem(), dummy);317 i.getItem()= M (i.getItem()); 316 318 317 319 CanonicalForm sqrfPartF; … … 333 335 { 334 336 int lev= 0; 335 for (int i= 1; i <= LCF.level(); i++)336 {337 if(degree (LCF, i) > 0)338 {339 lev= i - 1;340 break;341 }342 }343 337 for (int i= 0; i < length; i++) 344 338 { … … 355 349 allConstant= false; 356 350 y= Variable (iter.getItem().level()); 351 lev= M(y).level(); 357 352 } 358 353 } … … 364 359 iter.getItem()= swapvar (iter.getItem(), x, y); 365 360 bufF= F; 366 z= Variable ( y.level() -lev);361 z= Variable (lev); 367 362 bufF= swapvar (bufF, x, z); 368 363 bufBufFactors= bufFactors; … … 536 531 else 537 532 { 538 factors= CFList (oldSqrfPartF); 533 CanonicalForm contF=content (oldSqrfPartF,1); 534 factors= CFList (oldSqrfPartF/contF); 539 535 interMedResult= recoverFactors (oldSqrfPartF, factors); 540 536 } … … 799 795 if (!zeroOccured) 800 796 { 801 factors= sparseHeuristic (A, biFactors, Aeval2, evaluation, minFactorsLength); 797 factors= sparseHeuristic (A, biFactors, Aeval2, evaluation, 798 minFactorsLength); 802 799 if (factors.length() == biFactors.length()) 803 800 { … … 832 829 { 833 830 A= swapvar (A, y, w); 834 for (int i= 0; i < A.level() - 2; i++)835 {836 if (oldAeval[i].isEmpty())837 continue;838 if (oldAeval[i].getFirst().level() == w.level())839 {840 biFactors= CFList();841 for (CFListIterator iter= oldAeval [i]; iter.hasItem(); iter++)842 biFactors.append (swapvar (iter.getItem(), w, y));843 }844 }845 831 int i= A.level(); 846 832 CanonicalForm evalPoint; … … 854 840 evaluation.append (evalPoint); 855 841 break; 842 } 843 } 844 for (i= 0; i < A.level() - 2; i++) 845 { 846 if (oldAeval[i].isEmpty()) 847 continue; 848 if (oldAeval[i].getFirst().level() == w.level()) 849 { 850 CFArray tmp= copy (oldAeval[i]); 851 for (int ii= 0; ii < tmp.size(); ii++) 852 tmp[ii]= swapvar (tmp[ii], w, y); 853 CFArray tmp2= CFArray (tmp.size()); 854 CanonicalForm buf; 855 for (int ii= 0; ii < tmp.size(); ii++) 856 { 857 buf= tmp[ii] (evaluation.getLast(),y); 858 buf /= Lc (buf); 859 tmp2[findItem (uniFactors, buf)-1]=tmp[ii]; 860 } 861 biFactors= CFList(); 862 for (int j= 0; j < tmp2.size(); j++) 863 biFactors.append (tmp2[j]); 856 864 } 857 865 } … … 906 914 if (check == factors.length()) 907 915 { 916 917 if (w.level() != 1) 918 { 919 for (CFListIterator iter= factors; iter.hasItem(); iter++) 920 iter.getItem()= swapvar (iter.getItem(), w, y); 921 } 922 908 923 appendSwapDecompress (factors, contentAFactors, N, 0, 0, x); 909 924 normalize (factors); -
factory/facFqFactorize.cc
r67a39b r8256fd 1182 1182 { 1183 1183 g= gcd (i.getItem().factor(), j.getItem().factor()); 1184 if (degree (g ) > 0)1184 if (degree (g,1) > 0) 1185 1185 { 1186 1186 j.getItem()= CFFactor (j.getItem().factor()/g, j.getItem().exp()); … … 1432 1432 } 1433 1433 1434 CFMap N; 1435 CanonicalForm F= compress (LCF, N); 1434 CFMap N, M; 1435 CFArray dummy= CFArray (1); 1436 dummy [0]= LCF; 1437 compress (dummy, M, N); 1438 CanonicalForm F= M (LCF); 1436 1439 if (LCF.isUnivariate()) 1437 1440 { … … 1476 1479 CFList factors= LCFFactors; 1477 1480 1478 CFMap dummy;1479 1481 for (CFListIterator i= factors; i.hasItem(); i++) 1480 i.getItem()= compress (i.getItem(), dummy);1482 i.getItem()= M (i.getItem()); 1481 1483 1482 1484 CanonicalForm sqrfPartF; … … 1498 1500 int lev= 0; 1499 1501 // LCF is non-constant here 1500 for (int i= 1; i <= LCF.level(); i++)1501 {1502 if(degree (LCF, i) > 0)1503 {1504 lev= i - 1;1505 break;1506 }1507 }1508 1502 CFList bufBufFactors; 1509 1503 CanonicalForm bufF, swap; … … 1520 1514 allConstant= false; 1521 1515 y= Variable (iter.getItem().level()); 1516 lev= M(y).level(); 1522 1517 } 1523 1518 } … … 1529 1524 iter.getItem()= swapvar (iter.getItem(), x, y); 1530 1525 bufF= F; 1531 z= Variable ( y.level() -lev);1526 z= Variable (lev); 1532 1527 bufF= swapvar (bufF, x, z); 1533 1528 bufBufFactors= bufFactors; … … 1700 1695 else 1701 1696 { 1702 factors= CFList (oldSqrfPartF); 1697 CanonicalForm contF=content (oldSqrfPartF,1); 1698 factors= CFList (oldSqrfPartF/contF); 1703 1699 interMedResult= recoverFactors (oldSqrfPartF, factors); 1704 1700 } … … 2547 2543 { 2548 2544 A= swapvar (A, y, v); 2549 for (int i= 0; i < A.level() - 2; i++)2550 {2551 if (oldAeval[i].isEmpty())2552 continue;2553 if (oldAeval[i].getFirst().level() == v.level())2554 {2555 biFactors= CFList();2556 for (CFListIterator iter= oldAeval [i]; iter.hasItem(); iter++)2557 biFactors.append (swapvar (iter.getItem(), v, y));2558 }2559 }2560 2545 int i= A.level(); 2561 2546 CanonicalForm evalPoint; … … 2569 2554 evaluation.append (evalPoint); 2570 2555 break; 2556 } 2557 } 2558 for (i= 0; i < A.level() - 2; i++) 2559 { 2560 if (oldAeval[i].isEmpty()) 2561 continue; 2562 if (oldAeval[i].getFirst().level() == v.level()) 2563 { 2564 CFArray tmp= copy (oldAeval[i]); 2565 for (int ii= 0; ii < tmp.size(); ii++) 2566 tmp[ii]= swapvar (tmp[ii], v, y); 2567 CFArray tmp2= CFArray (tmp.size()); 2568 CanonicalForm buf; 2569 for (int ii= 0; ii < tmp.size(); ii++) 2570 { 2571 buf= tmp[ii] (evaluation.getLast(),y); 2572 buf /= Lc (buf); 2573 tmp2[findItem (uniFactors, buf)-1]=tmp[ii]; 2574 } 2575 biFactors= CFList(); 2576 for (int j= 0; j < tmp2.size(); j++) 2577 biFactors.append (tmp2[j]); 2571 2578 } 2572 2579 }
Note: See TracChangeset
for help on using the changeset viewer.