Changeset a13807a in git for Singular


Ignore:
Timestamp:
Sep 15, 2022, 3:17:58 PM (19 months ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
579253660d6640785b2a43171e9c80480929e4df
Parents:
2229707f741b0ae4fd0a2f393ff9931d9d1cf9cc
git-author:
Hans Schoenemann <hannes@mathematik.uni-kl.de>2022-09-15 15:17:58+02:00
git-committer:
Hans Schoenemann <hannes@mathematik.uni-kl.de>2022-09-15 15:20:08+02:00
Message:
add: lDeleletIV
Location:
Singular
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • Singular/lists.cc

    r222970 ra13807a  
    3434  lists N=(lists)omAlloc0Bin(slists_bin);
    3535  int n=L->nr;
    36   if (L->nr>=0)
     36  if (n>=0)
    3737    N->Init(n+1);
    3838  else
     
    172172    l->Init(EndIndex+(VIndex>EndIndex));
    173173
    174     for(i=j=0;i<=EndIndex;i++,j++)
    175     {
    176       if (i!=VIndex)
    177       {
    178         l->m[j]=ul->m[i];
    179         memset(&ul->m[i],0,sizeof(ul->m[i]));
    180       }
    181       else
    182       {
    183         j--;
    184         ul->m[i].CleanUp();
    185       }
     174    ul->m[VIndex].CleanUp();
     175    for(i=0;i<VIndex;i++)
     176    {
     177      l->m[i]=ul->m[i];
     178    }
     179    for(i=VIndex+1;i<=ul->nr;i++)
     180    {
     181      l->m[i-1]=ul->m[i];
    186182    }
    187183    omFreeSize((ADDRESS)ul->m,(ul->nr+1)*sizeof(sleftv));
     
    192188  Werror("wrong index %d in list(%d)",VIndex+1,ul->nr+1);
    193189  return TRUE;
     190}
     191
     192BOOLEAN lDeleteIV(leftv res, leftv u, leftv v)
     193{
     194  lists ul=(lists)u->CopyD();
     195  intvec* vl=(intvec*)v->Data();
     196  int i,j,cnt;
     197  cnt=0;
     198  for(i=vl->length()-1;i>=0;i--)
     199  {
     200    j=(*vl)[i];
     201    if ((j>0)&&(j<=ul->nr))
     202    {
     203      cnt++;
     204      ul->m[j-1].CleanUp();
     205      memcpy(&(ul->m[j-1]),&(ul->m[j]),(ul->nr-j+1)*sizeof(sleftv));
     206      ul->m[ul->nr].rtyp=DEF_CMD;
     207      ul->m[ul->nr].data=NULL;
     208    }
     209  }
     210  if ((cnt*2>=ul->nr)||(cnt*sizeof(sleftv)>=1024))
     211  {
     212    ul->m=(leftv)omReallocSize(ul->m,(ul->nr+1)*sizeof(sleftv),(ul->nr-cnt+1)*sizeof(sleftv));
     213    ul->nr -= cnt;
     214  }
     215  res->data = (char *)ul;
     216  return FALSE;
    194217}
    195218
  • Singular/lists.h

    r222970 ra13807a  
    5656BOOLEAN lAppend(leftv res, leftv u, leftv v);
    5757BOOLEAN lDelete(leftv res, leftv u, leftv v);
     58BOOLEAN lDeleteIV(leftv res, leftv u, leftv v);
    5859BOOLEAN lAdd(leftv res, leftv u, leftv v);
    5960BOOLEAN lRingDependend(lists L);
Note: See TracChangeset for help on using the changeset viewer.