Changeset 91fdef in git


Ignore:
Timestamp:
Jun 7, 2023, 2:02:07 PM (12 months ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', '4fa496c5b814dbde0a905c54f0796301d03f6dc9')
Children:
1b1ce0bf9a008ec26d193fd1e7125768ed91e1af
Parents:
d1ec153efbb92b07a03c829a7f893fe854f169d2
Message:
add idSaturate
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/ideals.cc

    rd1ec153 r91fdef  
    32213221  p_SetExp(t,rVar(tmpR),1,tmpR);
    32223222  p_Setm(t,tmpR);
    3223   BITSET save2;
    3224   SI_SAVE_OPT1(save2);
    3225   //if (!TEST_OPT_RETURN_SB) si_opt_2|=Sy_bit(V_IDELIM);
    3226   //si_opt_1|=Sy_bit(OPT_PROT);
    32273223  ideal TT=idGroebner(T,0,GbStd);
    3228   SI_RESTORE_OPT1(save2);
    32293224  p_Delete(&t,tmpR);
    32303225  for(int j=0;j<IDELEMS(TT);j++)
     
    32473242ideal idSaturate(ideal I, ideal J, int &k, BOOLEAN isIdeal)
    32483243{
     3244  if(idIs0(I))
     3245  {
     3246     I=idCopy(I);
     3247     idSkipZeroes(I);
     3248     return(I);
     3249  }
    32493250  //if (idElem(J)==1)
    32503251  //{
     
    32543255  //---------------------------------------------------
    32553256  BOOLEAN only_vars=TRUE;
    3256   if (IDELEMS(J)==1)
    3257   {
    3258     poly x = J->m[0];
    3259     if ((x==NULL)||(pNext(x)!=NULL))
    3260       only_vars=FALSE;
    3261     else
    3262     for (int i=1; i<=currRing->N; i++)
    3263     {
    3264       int li = p_GetExp(x,i,currRing);
    3265       if (li>1)
    3266       {
    3267         only_vars=FALSE;
    3268         break;
    3269       }
    3270     }
    3271   }
    3272   else
    32733257  {
    32743258    for(int j=IDELEMS(J)-1;j>=0;j--)
     
    32863270    }
    32873271  }
    3288   if (only_vars)
    3289   {
    3290     BITSET old_test1;
    3291     SI_SAVE_OPT1(old_test1);
    3292     si_opt_1 |= Sy_bit(OPT_RETURN_SB);
    3293     ideal I2,I3,II;
    3294     II=idCopy(I);
    3295     idSkipZeroes(II);
    3296 
    3297     I2=idQuot(II,J,FALSE,TRUE);
     3272  if (only_vars && isIdeal)
     3273  {
     3274    ideal Iquot,Istd;
     3275    intvec *w=NULL;
     3276    Istd=id_Satstd(I,J,currRing);
    32983277    k=0;
    32993278    loop
    33003279    {
    33013280      k++;
    3302       I3=idQuot(I2,J,TRUE,TRUE);
    3303       ideal tmp=kNF(I2,currRing->qideal,I3,1);
     3281      Iquot=idQuot(Istd,J,TRUE,isIdeal);
     3282      ideal tmp=kNF(Istd,currRing->qideal,Iquot,5);
    33043283      int  elem=idElem(tmp);
    33053284      id_Delete(&tmp,currRing);
    3306       id_Delete(&I2,currRing);
     3285      id_Delete(&Istd,currRing);
     3286      w=NULL;
     3287      Istd=kStd(Iquot,currRing->qideal,testHomog,&w);
     3288      if (w!=NULL) delete w;
     3289      id_Delete(&Iquot,currRing);
    33073290      if (elem==0) break;
    3308       I2=I3;
    3309     }
    3310     idDelete(&II);
    3311     SI_RESTORE_OPT1(old_test1);
    3312     return I3;
     3291    }
     3292    k--;
     3293    idSkipZeroes(Istd);
     3294    return Istd;
    33133295  }
    33143296  //--------------------------------------------------
    3315   BITSET old_test1;
    3316   SI_SAVE_OPT1(old_test1);
    3317   si_opt_1 |= Sy_bit(OPT_RETURN_SB);
    33183297  ideal Iquot,Istd;
    3319   Iquot=idQuot(I,J,FALSE,isIdeal);
    33203298  intvec *w=NULL;
    3321   Istd=kStd(Iquot,currRing->qideal,testHomog,&w);
     3299  Istd=kStd(I,currRing->qideal,testHomog,&w);
    33223300  if (w!=NULL) delete w;
    33233301  k=0;
     
    33263304    k++;
    33273305    Iquot=idQuot(Istd,J,TRUE,isIdeal);
    3328     ideal tmp=kNF(Istd,currRing->qideal,Iquot,1);
     3306    ideal tmp=kNF(Istd,currRing->qideal,Iquot,5);
    33293307    int  elem=idElem(tmp);
    33303308    id_Delete(&tmp,currRing);
     
    33363314    if (elem==0) break;
    33373315  }
    3338   SI_RESTORE_OPT1(old_test1);
     3316  k--;
    33393317  idSkipZeroes(Istd);
    33403318  return Istd;
Note: See TracChangeset for help on using the changeset viewer.