Changeset cda0b0 in git for kernel/kstd2.cc


Ignore:
Timestamp:
Dec 6, 2013, 9:11:52 AM (10 years ago)
Author:
Christian Eder
Branches:
(u'spielwiese', '17f1d200f27c5bd38f5dfc6e8a0879242279d1d8')
Children:
d5856fbe65f58da80d3a39417a5314d658f97342
Parents:
0c15dc1d046c89a6a771b4f899e787a85af175ce
git-author:
Christian Eder <ederc@mathematik.uni-kl.de>2013-12-06 09:11:52+01:00
git-committer:
Christian Eder <ederc@mathematik.uni-kl.de>2013-12-12 13:51:29+01:00
Message:
adds sorting of newly added syzygies in sba
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/kstd2.cc

    r0c15dc rcda0b0  
    5555#define SBA_TAIL_RED                        1
    5656#define SBA_PRODUCT_CRITERION               0
    57 #define SBA_PRINT_ZERO_REDUCTIONS           0
    58 #define SBA_PRINT_REDUCTION_STEPS           0
    59 #define SBA_PRINT_OPERATIONS                0
    60 #define SBA_PRINT_SIZE_G                    0
    61 #define SBA_PRINT_SIZE_SYZ                  0
     57#define SBA_PRINT_ZERO_REDUCTIONS           1
     58#define SBA_PRINT_REDUCTION_STEPS           1
     59#define SBA_PRINT_OPERATIONS                1
     60#define SBA_PRINT_SIZE_G                    1
     61#define SBA_PRINT_SIZE_SYZ                  1
    6262#define SBA_PRINT_PRODUCT_CRITERION         0
    6363
     
    17151715  for (int i=0; i<sort->length();++i)
    17161716    F->m[i] = F1->m[(*sort)[i]-1];
    1717 #if 0
     1717#if 1
    17181718  printf("SBA COMPUTATIONS DONE IN THE FOLLOWING RING:\n");
    17191719  rWrite (currRing);
     1720  printf("ordSgn = %d\n",currRing->OrdSgn);
    17201721  printf("\n");
    17211722#endif
     
    20542055      strat->enterS(strat->P, pos, strat, strat->tl);
    20552056      if(strat->sbaOrder != 1)
     2057      {
     2058        BOOLEAN overwrite = TRUE;
     2059        for (int tk=0; tk<strat->sl+1; tk++)
     2060        {
     2061          if (pGetComp(strat->sig[tk]) == pGetComp(strat->P.sig))
     2062          {
     2063            //printf("TK %d / %d\n",tk,strat->sl);
     2064            overwrite = FALSE;
     2065            break;
     2066          }
     2067        }
     2068        //printf("OVERWRITE %d\n",overwrite);
     2069        if (overwrite)
     2070        {
     2071          int cmp = pGetComp(strat->P.sig);
     2072          int* vv = (int*)omAlloc((currRing->N+1)*sizeof(int));
     2073          pGetExpV (strat->P.p,vv);
     2074          pSetExpV (strat->P.sig, vv);
     2075          pSetComp (strat->P.sig,cmp);
     2076
     2077          strat->P.sevSig = pGetShortExpVector (strat->P.sig);
     2078          int i;
     2079          for(int ps=0;ps<strat->sl+1;ps++)
     2080          {
     2081
     2082            strat->newt = TRUE;
     2083            if (strat->syzl == strat->syzmax)
     2084            {
     2085              pEnlargeSet(&strat->syz,strat->syzmax,setmaxTinc);
     2086              strat->sevSyz = (unsigned long*) omRealloc0Size(strat->sevSyz,
     2087                  (strat->syzmax)*sizeof(unsigned long),
     2088                  ((strat->syzmax)+setmaxTinc)
     2089                  *sizeof(unsigned long));
     2090              strat->syzmax += setmaxTinc;
     2091            }
     2092            LObject Q;
     2093            Q.sig = pCopy(strat->P.sig);
     2094            // add LM(F->m[i]) to the signature to get a Schreyer order
     2095            // without changing the underlying polynomial ring at all
     2096            if (strat->sbaOrder == 0)
     2097              p_ExpVectorAdd (Q.sig,strat->S[ps],currRing);
     2098            // since p_Add_q() destroys all input
     2099            // data we need to recreate help
     2100            // each time
     2101            // ----------------------------------------------------------
     2102            // in the Schreyer order we always know that the multiplied
     2103            // module monomial strat->P.sig gives the leading monomial of
     2104            // the corresponding principal syzygy
     2105            // => we do not need to compute the "real" syzygy completely
     2106            poly help = pCopy(strat->sig[ps]);
     2107            p_ExpVectorAdd (help,strat->P.p,currRing);
     2108            Q.sig = p_Add_q(Q.sig,help,currRing);
     2109            //printf("%d. SYZ  ",i+1);
     2110            //pWrite(strat->syz[i]);
     2111            Q.sevSig = p_GetShortExpVector(Q.sig,currRing);
     2112            i = posInSyz(strat, Q.sig);
     2113            enterSyz(Q, strat, i);
     2114          }
     2115        }
     2116      }
     2117      // deg - idx - lp/rp
     2118      // => we need to add syzygies with indices > pGetComp(strat->P.sig)
     2119      /*
     2120      if(strat->sbaOrder == 3)
    20562121      {
    20572122        BOOLEAN overwrite = TRUE;
     
    21122177        }
    21132178      }
     2179      */
    21142180//#if 1
    21152181#if DEBUGF50
    2116     //printf("---------------------------\n");
     2182    printf("---------------------------\n");
    21172183    Print(" %d. ELEMENT ADDED TO GCURR:\n",strat->sl+1);
    21182184    Print("LEAD POLY:  "); pWrite(pHead(strat->S[strat->sl]));
Note: See TracChangeset for help on using the changeset viewer.