Changeset fcf6c4 in git


Ignore:
Timestamp:
Apr 12, 2019, 1:52:33 PM (5 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
51b5853275964eb90183d3490cd0f77df75505c1
Parents:
8cfc9149aafe2ed41aafc94efb1cddf86a07bbcf
Message:
fix: use of isHomog
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • Singular/iparith.cc

    r8cfc91 rfcf6c4  
    23142314static BOOLEAN jjFRES3(leftv res, leftv u, leftv v, leftv w)
    23152315{
    2316     assumeStdFlag(u);
    2317     ideal id = (ideal)u->Data();
    2318     int max_length = (int)(long)v->Data();
    2319     if (max_length < 0) {
    2320         WerrorS("length for fres must not be negative");
    2321         return TRUE;
    2322     }
    2323     if (max_length == 0) {
    2324         max_length = currRing->N+1;
    2325         if (currRing->qideal != NULL) {
    2326             Warn("full resolution in a qring may be infinite, "
    2327                 "setting max length to %d", max_length);
    2328         }
    2329     }
    2330     char *method = (char *)w->Data();
    2331     /* For the moment, only "complete" (default), "frame", or "extended frame"
    2332      * are allowed. Another useful option would be "linear strand".
    2333      */
    2334     if (strcmp(method, "complete") != 0
    2335             && strcmp(method, "frame") != 0
    2336             && strcmp(method, "extended frame") != 0
    2337             && strcmp(method, "single module") != 0) {
    2338         WerrorS("wrong optional argument for fres");
    2339     }
    2340     syStrategy r = syFrank(id, max_length, method);
    2341     assume(r->fullres != NULL);
    2342     res->data = (void *)r;
    2343     return FALSE;
     2316  assumeStdFlag(u);
     2317  ideal id = (ideal)u->Data();
     2318  int max_length = (int)(long)v->Data();
     2319  if (max_length < 0)
     2320  {
     2321    WerrorS("length for fres must not be negative");
     2322    return TRUE;
     2323  }
     2324  if (max_length == 0)
     2325  {
     2326    max_length = currRing->N+1;
     2327    if (currRing->qideal != NULL)
     2328    {
     2329      Warn("full resolution in a qring may be infinite, "
     2330           "setting max length to %d", max_length);
     2331    }
     2332  }
     2333  char *method = (char *)w->Data();
     2334  /* For the moment, only "complete" (default), "frame", or "extended frame"
     2335   * are allowed. Another useful option would be "linear strand".
     2336   */
     2337  if (strcmp(method, "complete") != 0
     2338  && strcmp(method, "frame") != 0
     2339  && strcmp(method, "extended frame") != 0
     2340  && strcmp(method, "single module") != 0)
     2341  {
     2342    WerrorS("wrong optional argument for fres");
     2343    return TRUE;
     2344  }
     2345  syStrategy r = syFrank(id, max_length, method);
     2346  assume(r->fullres != NULL);
     2347  res->data = (void *)r;
     2348  return FALSE;
    23442349}
    23452350
     
    34833488{
    34843489  // see jjSYZYGY
     3490  intvec *ww=(intvec *)atGet(u,"isHomog",INTVEC_CMD);
    34853491  intvec *w=NULL;
     3492  tHomog hom=testHomog;
    34863493  ideal I=(ideal)u->Data();
    34873494  GbVariant alg=syGetAlgorithm((char*)v->Data(),currRing,I);
    3488   res->data = (char *)idSyzygies(I,testHomog,&w,TRUE,FALSE,NULL,alg);
     3495  if (ww!=NULL)
     3496  {
     3497    if (idTestHomModule(I,currRing->qideal,ww))
     3498    {
     3499      w=ivCopy(ww);
     3500      int add_row_shift=w->min_in();
     3501      (*w)-=add_row_shift;
     3502      hom=isHomog;
     3503    }
     3504    else
     3505    {
     3506      //WarnS("wrong weights");
     3507      delete ww; ww=NULL;
     3508      hom=testHomog;
     3509    }
     3510  }
     3511  else
     3512  {
     3513    if (u->Typ()==IDEAL_CMD)
     3514      if (idHomIdeal(I,currRing->qideal))
     3515        hom=isHomog;
     3516  }
     3517  ideal S=idSyzygies(I,hom,&w,TRUE,FALSE,NULL,alg);
    34893518  if (w!=NULL) delete w;
     3519  res->data = (char *)S;
     3520  if (hom==isHomog)
     3521  {
     3522    int vl=S->rank;
     3523    intvec *vv=new intvec(vl);
     3524    if ((u->Typ()==IDEAL_CMD)||(ww==NULL))
     3525    {
     3526      for(int i=0;i<vl;i++)
     3527      {
     3528        if (I->m[i]!=NULL)
     3529          (*vv)[i]=p_Deg(I->m[i],currRing);
     3530      }
     3531    }
     3532    else
     3533    {
     3534      p_SetModDeg(ww, currRing);
     3535      for(int i=0;i<vl;i++)
     3536      {
     3537        if (I->m[i]!=NULL)
     3538          (*vv)[i]=currRing->pFDeg(I->m[i],currRing);
     3539      }
     3540      p_SetModDeg(NULL, currRing);
     3541    }
     3542    if (idTestHomModule(S,currRing->qideal,vv))
     3543      atSet(res,omStrDup("isHomog"),vv,INTVEC_CMD);
     3544    else
     3545      delete vv;
     3546  }
    34903547  if (TEST_OPT_RETURN_SB) setFlag(res,FLAG_STD);
    34913548  return FALSE;
     
    36203677static BOOLEAN jjDUMMY(leftv res, leftv u)
    36213678{
    3622   res->data = (char *)u->CopyD();
     3679//  res->data = (char *)u->CopyD();
     3680// also copy attributes:
     3681  res->Copy(u);
    36233682  return FALSE;
    36243683}
     
    44464505}
    44474506
    4448 
    44494507static BOOLEAN jjKBASE(leftv res, leftv v)
    44504508{
     
    50895147  ideal v_id=(ideal)v->Data();
    50905148  tHomog hom=testHomog;
    5091   int add_row_shift=0;
    50925149  if (ww!=NULL)
    50935150  {
     
    50955152    {
    50965153      w=ivCopy(ww);
    5097       add_row_shift=w->min_in();
     5154      int add_row_shift=w->min_in();
    50985155      (*w)-=add_row_shift;
    50995156      hom=isHomog;
  • Singular/table.h

    r8cfc91 rfcf6c4  
    663663,{D(jjHILBERT2),  HILBERT_CMD,    INTVEC_CMD,     MODUL_CMD,  INT_CMD, ALLOW_PLURAL | ALLOW_RING | NO_ZERODIVISOR}
    664664,{D(jjHOMOG1_W),  HOMOG_CMD,      INT_CMD,        IDEAL_CMD,  INTVEC_CMD, ALLOW_PLURAL |ALLOW_RING}
    665 ,{D(jjHOMOG1_W),  HOMOG_CMD,      INT_CMD,        MODUL_CMD,   INTVEC_CMD, ALLOW_PLURAL |ALLOW_RING}
     665,{D(jjHOMOG1_W),  HOMOG_CMD,      INT_CMD,        MODUL_CMD,  INTVEC_CMD, ALLOW_PLURAL |ALLOW_RING}
    666666,{D(jjHOMOG_P),   HOMOG_CMD,      POLY_CMD,       POLY_CMD,   POLY_CMD, ALLOW_PLURAL |ALLOW_RING}
    667667,{D(jjHOMOG_P),   HOMOG_CMD,      VECTOR_CMD,     VECTOR_CMD, POLY_CMD, ALLOW_PLURAL |ALLOW_RING}
Note: See TracChangeset for help on using the changeset viewer.