Changeset 7d2b89 in git
- Timestamp:
- Jun 9, 2016, 1:41:17 PM (8 years ago)
- Branches:
- (u'spielwiese', '17f1d200f27c5bd38f5dfc6e8a0879242279d1d8')
- Children:
- 72fd164d224c701f45aaf30d20586e1bb5edc133
- Parents:
- 459ec942488fc3417e5bcc3965cb5119e5add894
- Location:
- kernel/GBEngine
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/GBEngine/kspoly.cc
r459ec94 r7d2b89 23 23 #endif 24 24 25 #define ADIDEBUG 125 #define ADIDEBUG 0 26 26 27 27 #ifdef KDEBUG … … 289 289 pDelete(&PR->sig); 290 290 PR->sig = origsig; 291 strat->blockred++; 291 292 return 3; 292 293 } -
kernel/GBEngine/kstd1.cc
r459ec94 r7d2b89 2591 2591 #endif 2592 2592 //This is how we set the SBA algorithm; 2593 int totalsbaruns =-1,loops = 0; 2594 while(sigdrop && (loops < totalsbaruns || totalsbaruns == -1)) 2593 int totalsbaruns = 1,blockedreductions = 10,blockred = 0,loops = 0; 2594 while(sigdrop && (loops < totalsbaruns || totalsbaruns == -1) 2595 && (blockred <= blockedreductions)) 2595 2596 { 2596 2597 loops++; … … 2602 2603 strat->sbaEnterS = sbaEnterS; 2603 2604 strat->sigdrop = sigdrop; 2605 #if 0 2606 strat->blockred = blockred; 2607 #else 2608 strat->blockred = 0; 2609 #endif 2610 strat->blockredmax = blockedreductions; 2604 2611 //printf("\nsbaEnterS beginning = %i\n",strat->sbaEnterS); 2605 2612 //printf("\nsigdrop beginning = %i\n",strat->sigdrop); … … 2726 2733 sigdrop = strat->sigdrop; 2727 2734 sbaEnterS = strat->sbaEnterS; 2735 blockred = strat->blockred; 2728 2736 #if ADIDEBUG 2729 2737 printf("\nsbaEnterS = %i\n",sbaEnterS); … … 2733 2741 } 2734 2742 // Go to std 2735 if(sigdrop )2743 if(sigdrop || blockred > blockedreductions) 2736 2744 { 2737 2745 #if ADIDEBUG 2738 2746 printf("\nWent to std\n"); 2739 2747 //idPrint(r); 2740 getchar();2748 //getchar(); 2741 2749 #endif 2742 2750 r = kStd(r, Q, h, w, hilb, syzComp, newIdeal, vw); -
kernel/GBEngine/kstd2.cc
r459ec94 r7d2b89 925 925 strat->sigdrop = FALSE; 926 926 } 927 #if 0 927 928 //If the reducer has the same lt (+ or -) as the other one, reduce it via redRing 929 //In some cases this proves to be very bad 928 930 if(rField_is_Ring(currRing) && h->p != NULL && pLmCmp(h->p,strat->T[ii].p)==0) 929 931 { … … 949 951 } 950 952 } 953 #endif 954 if(strat->sigdrop) 955 return 1; 951 956 #if SBA_PRINT_REDUCTION_STEPS 952 957 if (sigSafe != 3) … … 2253 2258 printf("\n list L\n"); 2254 2259 int iii; 2255 #if 02260 #if 1 2256 2261 for(iii = 0; iii<= strat->Ll; iii++) 2257 2262 { … … 2436 2441 printf("\nAfter reduce (redresult=%i): \n",red_result);pWrite(strat->P.p);pWrite(strat->P.sig); 2437 2442 #endif 2438 #ifdef HAVE_RINGS2439 2443 //sigdrop case 2440 2444 if(rField_is_Ring(currRing) && strat->sigdrop) … … 2465 2469 } 2466 2470 } 2467 #endif 2471 if(strat->blockred > strat->blockredmax) 2472 { 2473 #if ADIDEBUG 2474 printf("\nToo many blocked reductions\n"); 2475 #endif 2476 strat->sigdrop = TRUE; 2477 break; 2478 } 2468 2479 2469 2480 if (errorreported) break; … … 2652 2663 */ 2653 2664 if (rField_is_Ring(currRing)) 2654 superenterpairsSig(strat->P.p,strat->P.sig,strat->P.sig_sba_max,strat->sl+1,strat->sl,strat->P.ecart,pos,strat, strat->tl);2655 2665 superenterpairsSig(strat->P.p,strat->P.sig,strat->sl+1,strat->sl,strat->P.ecart,pos,strat, strat->tl); 2656 2666 else … … 2659 2669 printf("\nThis element is added to S\n"); 2660 2670 p_Write(strat->P.p, strat->tailRing);p_Write(strat->P.p1, strat->tailRing);p_Write(strat->P.p2, strat->tailRing);pWrite(strat->P.sig); 2661 //getchar();2671 getchar(); 2662 2672 #endif 2663 2673 // posInS only depends on the leading term … … 3382 3392 if (TEST_OPT_PROT) PrintS("s"); 3383 3393 int pos; 3384 #if 03394 #if 1 3385 3395 if(!rField_is_Ring(currRing)) 3386 3396 pos = posInS(strat,strat->sl,strat->P.p,strat->P.ecart); -
kernel/GBEngine/kutil.cc
r459ec94 r7d2b89 4716 4716 { 4717 4717 if (length<0) return 0; 4718 if(pNext(p) == NULL) return 0;4719 4718 polyset set=strat->S; 4720 int o = p_Deg(p,currRing); 4721 int op = p_Deg(set[length],currRing); 4722 4723 if ((op < o) 4724 || ((op == o) && (pLtCmp(set[length],p) == -1))) 4725 return length+1; 4726 int i; 4727 int an = 0; 4728 for(i=0;i<=length;i++) 4729 if(set[i] != NULL && pNext(set[i]) == NULL) 4730 an++; 4731 int en= length; 4732 loop 4733 { 4734 if (an >= en-1) 4735 { 4736 op = p_Deg(set[an],currRing); 4719 if(pNext(p) == NULL) 4720 { 4721 int mon = 0; 4722 for(int i = 0;i<=length;i++) 4723 { 4724 if(set[i] != NULL && pNext(set[i]) == NULL) 4725 mon++; 4726 } 4727 int o = p_Deg(p,currRing); 4728 int op = p_Deg(set[mon],currRing); 4729 4730 if ((op < o) 4731 || ((op == o) && (pLtCmp(set[mon],p) == -1))) 4732 return length+1; 4733 int i; 4734 int an = 0; 4735 int en= mon; 4736 loop 4737 { 4738 if (an >= en-1) 4739 { 4740 op = p_Deg(set[an],currRing); 4741 if ((op < o) 4742 || ((op == o) && (pLtCmp(set[an],p) == -1))) 4743 return en; 4744 return an; 4745 } 4746 i=(an+en) / 2; 4747 op = p_Deg(set[i],currRing); 4737 4748 if ((op < o) 4738 || ((op == o) && (pLtCmp(set[an],p) == -1))) 4739 return en; 4740 return an; 4741 } 4742 i=(an+en) / 2; 4743 op = p_Deg(set[i],currRing); 4749 || ((op == o) && (pLtCmp(set[i],p) == -1))) 4750 an=i; 4751 else 4752 en=i; 4753 } 4754 } 4755 if(pNext(p) != NULL) 4756 { 4757 int o = p_Deg(p,currRing); 4758 int op = p_Deg(set[length],currRing); 4759 4744 4760 if ((op < o) 4745 || ((op == o) && (pLtCmp(set[i],p) == -1))) 4746 an=i; 4747 else 4748 en=i; 4761 || ((op == o) && (pLtCmp(set[length],p) == -1))) 4762 return length+1; 4763 int i; 4764 int an = 0; 4765 for(i=0;i<=length;i++) 4766 if(set[i] != NULL && pNext(set[i]) == NULL) 4767 an++; 4768 int en= length; 4769 loop 4770 { 4771 if (an >= en-1) 4772 { 4773 op = p_Deg(set[an],currRing); 4774 if ((op < o) 4775 || ((op == o) && (pLtCmp(set[an],p) == -1))) 4776 return en; 4777 return an; 4778 } 4779 i=(an+en) / 2; 4780 op = p_Deg(set[i],currRing); 4781 if ((op < o) 4782 || ((op == o) && (pLtCmp(set[i],p) == -1))) 4783 an=i; 4784 else 4785 en=i; 4786 } 4749 4787 } 4750 4788 } … … 6647 6685 { 6648 6686 //printf("Faugere Rewritten Criterion\n"); 6687 if(rField_is_Ring(currRing)) 6688 return FALSE; 6649 6689 //#if 1 6650 6690 #ifdef DEBUGF5 -
kernel/GBEngine/kutil.h
r459ec94 r7d2b89 361 361 int sbaEnterS; // sba over Z strategy: if sigdrop element has _*gen(sbaEnterS+1), then 362 362 // add directly sbaEnterS elements into S 363 int blockred; // counter for blocked reductions in redSig 364 int blockredmax; 363 365 #endif 364 366 #ifdef HAVE_SHIFTBBA
Note: See TracChangeset
for help on using the changeset viewer.