Changeset 75d084 in git
- Timestamp:
- Apr 30, 2007, 5:47:41 PM (16 years ago)
- Branches:
- (u'spielwiese', 'd1ba061a762c62d3a25159d8da8b6e17332291fa')
- Children:
- 580ab50138ac90a455bc8ccfd0bfb17268011c18
- Parents:
- 8d670359ca4f71b1359f6a846d1286150c4f39e0
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/kutil.cc
r8d67035 r75d084 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: kutil.cc,v 1. 49 2007-03-29 11:34:52Singular Exp $ */4 /* $Id: kutil.cc,v 1.50 2007-04-30 15:47:41 Singular Exp $ */ 5 5 /* 6 6 * ABSTRACT: kernel: utils for kStd … … 2568 2568 2569 2569 /*2 2570 *constructs the pairset at the beginning2571 *of the buchberger/mora algorithm2572 */2573 void pairs (kStrategy strat)2574 {2575 int j,i;2576 // Print("pairs:sl=%d\n",strat->sl);2577 // for (i=0; i<=strat->sl; i++)2578 // {2579 // Print("s%d:",i);pWrite(strat->S[i]);2580 // }2581 if (strat->fromQ!=NULL)2582 {2583 for (i=1; i<=strat->sl; i++)2584 {2585 initenterpairs(strat->S[i],i-1,strat->ecartS[i],strat->fromQ[i],strat);2586 }2587 }2588 else2589 {2590 for (i=1; i<=strat->sl; i++)2591 {2592 initenterpairs(strat->S[i],i-1,strat->ecartS[i],0,strat);2593 }2594 }2595 /*deletes superfluous elements in S*/2596 i = -1;2597 loop2598 {2599 i++;2600 if (i >= strat->sl) break;2601 if (1//(strat->syzComp==0) || (pGetComp(strat->S[i])<=strat->syzComp))2602 )2603 {2604 j=i;2605 loop2606 {2607 j++;2608 if (j > strat->sl) break;2609 if (pLmShortDivisibleBy(strat->S[i], strat->sevS[i],2610 strat->S[j], ~ strat->sevS[j]))2611 {2612 // Print("delete %d=",j);2613 // wrp(strat->S[j]);2614 // Print(" wegen %d=",i);2615 // wrp(strat->S[i]);2616 // Print("( fromQ=%d)\n", (strat->fromQ) ? strat->fromQ[j]:0);2617 if ((strat->fromQ==NULL) || (strat->fromQ[j]==0))2618 {2619 deleteInS(j,strat);2620 j--;2621 }2622 }2623 }2624 }2625 }2626 }2627 2628 /*22629 2570 *reorders s with respect to posInS, 2630 2571 *suc is the first changed index or zero 2631 2572 */ 2573 2632 2574 void reorderS (int* suc,kStrategy strat) 2633 2575 { … … 2636 2578 unsigned long sev; 2637 2579 poly p; 2638 2639 *suc = -1; 2640 for (i=1; i<=strat->sl; i++) 2580 int new_suc=strat->sl+1; 2581 i= *suc; 2582 if (i<0) i=0; 2583 2584 for (; i<=strat->sl; i++) 2641 2585 { 2642 2586 at = posInS(strat,i-1,strat->S[i],strat->ecartS[i]); 2643 2587 if (at != i) 2644 2588 { 2645 if ( (*suc > at) || (*suc == -1)) *suc = at;2589 if (new_suc > at) new_suc = at; 2646 2590 p = strat->S[i]; 2647 2591 ecart = strat->ecartS[i]; … … 2670 2614 } 2671 2615 } 2616 if (new_suc <= strat->sl) *suc=new_suc; 2617 else *suc=-1; 2672 2618 } 2673 2619 … … 4625 4571 } 4626 4572 4573 #if 0 4627 4574 /*2 4628 4575 * reduces h using the elements from Q in the set S … … 4649 4596 return h; 4650 4597 } 4598 #endif 4651 4599 4652 4600 /*2 … … 4730 4678 int i, suc=0; 4731 4679 poly redSi=NULL; 4732 BOOLEAN change ;4680 BOOLEAN change,any_change; 4733 4681 // Print("nach initS: updateS start mit sl=%d\n",(strat->sl)); 4734 4682 // for (i=0; i<=(strat->sl); i++) … … 4739 4687 // } 4740 4688 // Print("pOrdSgn=%d\n", pOrdSgn); 4689 any_change=FALSE; 4741 4690 if (pOrdSgn==1) 4742 4691 { … … 4747 4696 { 4748 4697 change=FALSE; 4749 if (1//((strat->syzComp==0) || (pGetComp(strat->S[i])<=strat->syzComp)) 4750 && ((strat->fromQ==NULL) || (strat->fromQ[i]==0))) 4698 if (((strat->fromQ==NULL) || (strat->fromQ[i]==0)) && (i>0)) 4751 4699 { 4752 4700 redSi = pHead(strat->S[i]); 4753 4701 strat->S[i] = redBba(strat->S[i],i-1,strat); 4754 if ((strat->ak!=0)&&(strat->S[i]!=NULL))4755 strat->S[i]=redQ(strat->S[i],i+1,strat); /*reduce S[i] mod Q*/4702 //if ((strat->ak!=0)&&(strat->S[i]!=NULL)) 4703 // strat->S[i]=redQ(strat->S[i],i+1,strat); /*reduce S[i] mod Q*/ 4756 4704 if (pCmp(redSi,strat->S[i])!=0) 4757 4705 { 4758 4706 change=TRUE; 4707 any_change=TRUE; 4759 4708 if (TEST_OPT_DEBUG) 4760 4709 { … … 4793 4742 i++; 4794 4743 } 4795 reorderS(&suc,strat); 4744 if (any_change) reorderS(&suc,strat); 4745 else break; 4796 4746 } 4797 4747 if (toT) … … 4833 4783 { 4834 4784 change=FALSE; 4835 if (1//((strat->syzComp==0) || (pGetComp(strat->S[i])<=strat->syzComp)) 4836 && ((strat->fromQ==NULL) || (strat->fromQ[i]==0))) 4785 if (((strat->fromQ==NULL) || (strat->fromQ[i]==0)) && (i>0)) 4837 4786 { 4838 4787 redSi=pHead((strat->S)[i]); … … 4845 4794 else if (pCmp((strat->S)[i],redSi)!=0) 4846 4795 { 4796 any_change=TRUE; 4847 4797 h.p = strat->S[i]; 4848 4798 strat->initEcart(&h); … … 4867 4817 kTest(strat); 4868 4818 #endif 4869 reorderS(&suc,strat); 4819 if (any_change) reorderS(&suc,strat); 4820 else { suc=-1; break; } 4870 4821 if (h.p!=NULL) 4871 4822 { … … 4880 4831 for (i=0; i<=strat->sl; i++) 4881 4832 { 4882 if (((strat->fromQ==NULL) || (strat->fromQ[i]==0)) 4883 ) 4833 if ((strat->fromQ==NULL) || (strat->fromQ[i]==0)) 4884 4834 { 4885 4835 strat->S[i] = h.p = redtail(strat->S[i],strat->sl,strat); … … 5284 5234 strat->fromT = FALSE; 5285 5235 strat->noTailReduction = !TEST_OPT_REDTAIL; 5286 if (!TEST_OPT_SB_1)5236 if (!TEST_OPT_SB_1) 5287 5237 { 5288 5238 updateS(TRUE,strat); 5289 pairs(strat);5290 5239 } 5291 5240 if (strat->fromQ!=NULL) omFreeSize(strat->fromQ,IDELEMS(strat->Shdl)*sizeof(int));
Note: See TracChangeset
for help on using the changeset viewer.