Changeset c89740 in git for factory/facFqFactorize.cc
- Timestamp:
- Aug 21, 2012, 5:22:07 PM (12 years ago)
- Branches:
- (u'spielwiese', '17f1d200f27c5bd38f5dfc6e8a0879242279d1d8')
- Children:
- b30017f937034d50539db11d0bee89dc2991375c
- Parents:
- 5dad7c78535e5d3163be097e8a0d3e8d69c6593e
- git-author:
- Martin Lee <martinlee84@web.de>2012-08-21 17:22:07+02:00
- git-committer:
- Martin Lee <martinlee84@web.de>2012-09-04 18:01:19+02:00
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
factory/facFqFactorize.cc
r5dad7c7 rc89740 2287 2287 CFList biFactors, bufBiFactors; 2288 2288 CanonicalForm evalPoly; 2289 int lift, bufLift ;2289 int lift, bufLift, lengthAeval2= A.level()-2; 2290 2290 double logarithm= (double) ilog2 (totaldegree (A)); 2291 2291 logarithm /= log2exp; … … 2293 2293 if (factorNums < (int) logarithm) 2294 2294 factorNums= (int) logarithm; 2295 CFList* bufAeval2= new CFList [ A.level() -2];2296 CFList* Aeval2= new CFList [ A.level() -2];2295 CFList* bufAeval2= new CFList [lengthAeval2]; 2296 CFList* Aeval2= new CFList [lengthAeval2]; 2297 2297 int counter; 2298 2298 int differentSecondVar= 0; … … 2351 2351 evaluationWRTDifferentSecondVars (bufAeval2, bufEvaluation, A); 2352 2352 2353 for (int j= 0; j < A.level() -2; j++)2353 for (int j= 0; j < lengthAeval2; j++) 2354 2354 { 2355 2355 if (!bufAeval2[j].isEmpty()) … … 2392 2392 biFactors= bufBiFactors; 2393 2393 lift= bufLift; 2394 for (int j= 0; j < A.level() -2; j++)2394 for (int j= 0; j < lengthAeval2; j++) 2395 2395 Aeval2 [j]= bufAeval2 [j]; 2396 2396 differentSecondVar= counter; … … 2406 2406 biFactors= bufBiFactors; 2407 2407 lift= bufLift; 2408 for (int j= 0; j < A.level() -2; j++)2408 for (int j= 0; j < lengthAeval2; j++) 2409 2409 Aeval2 [j]= bufAeval2 [j]; 2410 2410 differentSecondVar= counter; … … 2446 2446 minFactorsLength= tmin (minFactorsLength, biFactors.length()); 2447 2447 2448 if (differentSecondVar == A.level() -2)2448 if (differentSecondVar == lengthAeval2) 2449 2449 { 2450 2450 bool zeroOccured= false; … … 2480 2480 CFList uniFactors= buildUniFactors (biFactors, evaluation.getLast(), y); 2481 2481 2482 sortByUniFactors (Aeval2, A.level() -2, uniFactors, evaluation);2483 2484 CFList * oldAeval= new CFList [ A.level() -2]; //TODO use bufAeval2 for this2485 for (int i= 0; i < A.level() -2; i++)2482 sortByUniFactors (Aeval2, lengthAeval2, uniFactors, evaluation); 2483 2484 CFList * oldAeval= new CFList [lengthAeval2]; //TODO use bufAeval2 for this 2485 for (int i= 0; i < lengthAeval2; i++) 2486 2486 oldAeval[i]= Aeval2[i]; 2487 2487 … … 2494 2494 Variable v; 2495 2495 CFList leadingCoeffs= precomputeLeadingCoeff (LC (A, 1), biFactorsLCs, alpha, 2496 evaluation, Aeval2, A.level() -2, v);2496 evaluation, Aeval2, lengthAeval2, v); 2497 2497 2498 2498 if (v.level() != 1) … … 2512 2512 } 2513 2513 } 2514 for (i= 0; i < A.level() -2; i++)2514 for (i= 0; i < lengthAeval2; i++) 2515 2515 { 2516 2516 if (oldAeval[i].isEmpty()) … … 2560 2560 } 2561 2561 2562 CanonicalForm LCmultiplier= leadingCoeffs.getFirst(); 2563 bool LCmultiplierIsConst= LCmultiplier.inCoeffDomain(); 2562 2564 leadingCoeffs.removeFirst(); 2563 2565 2564 2566 //prepare leading coefficients 2565 CFList* leadingCoeffs2= new CFList [ A.level() -2];2567 CFList* leadingCoeffs2= new CFList [lengthAeval2]; 2566 2568 prepareLeadingCoeffs (leadingCoeffs2, A.level(), leadingCoeffs, biFactors, 2567 2569 evaluation); … … 2574 2576 A /= hh; 2575 2577 2578 CFListIterator iter2; 2579 CFList bufLeadingCoeffs2= leadingCoeffs2[lengthAeval2-1]; 2580 bufBiFactors= biFactors; 2581 bufA= A; 2582 CanonicalForm bufLCmultiplier= LCmultiplier; 2583 CanonicalForm testVars; 2584 if (!LCmultiplierIsConst) 2585 { 2586 testVars= Variable (2); 2587 for (int i= 0; i < lengthAeval2; i++) 2588 { 2589 if (!oldAeval[i].isEmpty()) 2590 testVars *= oldAeval[i].getFirst().mvar(); 2591 } 2592 } 2576 2593 CFList bufFactors= CFList(); 2577 if (LucksWangSparseHeuristic (A, biFactors, 2, leadingCoeffs2 [A.level() - 3], 2594 bool LCheuristic= false; 2595 if (LucksWangSparseHeuristic (A, biFactors, 2, leadingCoeffs2 [lengthAeval2-1], 2578 2596 factors)) 2579 2597 { … … 2586 2604 { 2587 2605 if (extension) 2588 factors= extNonMonicFactorRecombination (factors, A, info);2606 factors= extNonMonicFactorRecombination (factors, bufA, info); //TODO brauche hier ein bufA statt A 2589 2607 2590 2608 if (v.level() != 1) … … 2613 2631 iter++; 2614 2632 iter.remove (1); 2615 for (int j= 0; j < A.level() -2; j++)2633 for (int j= 0; j < lengthAeval2; j++) 2616 2634 { 2617 2635 l= leadingCoeffs2[j]; … … 2638 2656 iter.getItem()= iter.getItem () (y + evaluation.getLast(), y); 2639 2657 2640 for (int i= 0; i < A.level() - 3; i++)2658 for (int i= 0; i < lengthAeval2-1; i++) 2641 2659 leadingCoeffs2[i]= CFList(); 2642 for (iter= leadingCoeffs2[ A.level() - 3]; iter.hasItem(); iter++)2660 for (iter= leadingCoeffs2[lengthAeval2-1]; iter.hasItem(); iter++) 2643 2661 { 2644 2662 iter.getItem()= shift2Zero (iter.getItem(), list, evaluation); 2645 2663 for (int i= A.level() - 4; i > -1; i--) 2646 2664 { 2647 if (i + 1 == A.level() - 3)2665 if (i + 1 == lengthAeval2-1) 2648 2666 leadingCoeffs2[i].append (iter.getItem() (0, i + 4)); 2649 2667 else
Note: See TracChangeset
for help on using the changeset viewer.