Changeset 1bf317 in git


Ignore:
Timestamp:
Jan 27, 2000, 5:53:50 PM (24 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
df542e1981a3253e3b5f545b729d46864eeda8f4
Parents:
cffe626538ef0cfae838530fcc27c99e394e0b7f
Message:
*hannes/siebert: lift stuff....


git-svn-id: file:///usr/local/Singular/svn/trunk@4095 2c84dea3-7e68-4137-9b89-c4e89433aadc
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • Singular/grammar.y

    rcffe626 r1bf317  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: grammar.y,v 1.78 2000-01-11 17:51:14 Singular Exp $ */
     4/* $Id: grammar.y,v 1.79 2000-01-27 16:53:45 Singular Exp $ */
    55/*
    66* ABSTRACT: SINGULAR shell grammatik
     
    173173%token <i> DIFF_CMD
    174174%token <i> DIM_CMD
     175%token <i> DIVISION_CMD
    175176%token <i> ELIMINATION_CMD
    176177%token <i> E_CMD
  • Singular/ideals.cc

    rcffe626 r1bf317  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: ideals.cc,v 1.83 2000-01-13 14:40:24 siebert Exp $ */
     4/* $Id: ideals.cc,v 1.84 2000-01-27 16:53:46 Singular Exp $ */
    55/*
    66* ABSTRACT - all basic methods to manipulate ideals
     
    13631363    int curr_syz_limit=rGetCurrSyzLimit();
    13641364    if (curr_syz_limit>0)
    1365     for (ii=0;ii<IDELEMS(h1);ii++) 
     1365    for (ii=0;ii<IDELEMS(h1);ii++)
    13661366    {
    13671367      if (h1->m[ii]!=NULL)
     
    14001400    for (j=0; j<IDELEMS(s_h3); j++)
    14011401    {
    1402       if (s_h3->m[j] != NULL) 
     1402      if (s_h3->m[j] != NULL)
    14031403      {
    14041404        if (pMinComp(s_h3->m[j],syz_ring) > k)
     
    14161416    return s_h3;
    14171417  }
    1418  
     1418
    14191419  ideal e = idInit(IDELEMS(s_h3), s_h3->rank);
    14201420
     
    14321432    }
    14331433  }
    1434  
     1434
    14351435  idSkipZeroes(s_h3);
    14361436  idSkipZeroes(e);
    1437  
    1438   if (deg != NULL 
     1437
     1438  if (deg != NULL
    14391439  && (!isMonomial)
    14401440  && (!TEST_OPT_NOTREGULARITY)
     
    15411541    rChangeCurrRing(orig_ring,TRUE);
    15421542  }
    1543  
     1543
    15441544  idDelete((ideal*)ma);
    15451545  *ma = mpNew(j,i);
     
    16091609* of mod
    16101610*/
    1611 ideal   idLiftNonStB (ideal  mod, ideal submod,ideal * rest, BOOLEAN goodShape,
    1612                     BOOLEAN divide,BOOLEAN lift1)
    1613 {
    1614   return idLift(mod, submod, rest, goodShape, FALSE);
    1615 }
    1616 
    1617 
    1618 ideal   idLift (ideal mod, ideal submod,ideal * rest, BOOLEAN goodShape,
    1619                BOOLEAN isSB,BOOLEAN divide,BOOLEAN lift1)
    1620 {
    1621   int   lsmod =idRankFreeModule(submod), i, j, k;
     1611
     1612ideal   idLift (ideal mod, ideal submod,ideal * rest, BOOLEAN goodShape,
     1613               BOOLEAN isSB,BOOLEAN divide,matrix * unit)
     1614{
     1615  int lsmod =idRankFreeModule(submod), i, j, k;
    16221616  int comps_to_add=0;
    16231617  poly p;
    16241618
    16251619  if (idIs0(mod))
     1620  {
     1621    if (unit!=NULL)
     1622    {
     1623      *unit=mpNew(1,1);
     1624      MATELEM(*unit,1,1)=pOne();
     1625    }
     1626    if (rest!=NULL)
     1627    {
     1628      *rest=idInit(1,mod->rank);
     1629    }
    16261630    return idInit(1,mod->rank);
    1627 //#define NEW_LIFT
    1628 //#define TEST_LIFT
    1629 #ifdef TEST_LIFT
    1630 //divide=TRUE;
    1631 Print("The module is:\n");
    1632 idPrint(mod);
    1633 Print("The submodule is:\n");
    1634 idPrint(submod);
    1635 #endif
    1636 #ifdef NEW_LIFT
    1637   if (lift1)
     1631  }
     1632  if (unit!=NULL)
    16381633  {
    16391634    comps_to_add = IDELEMS(submod);
    1640     while ((comps_to_add>0) && (submod->m[comps_to_add-1]==NULL)) 
     1635    while ((comps_to_add>0) && (submod->m[comps_to_add-1]==NULL))
    16411636      comps_to_add--;
    16421637  }
    1643 #endif
    16441638  k=idRankFreeModule(mod);
    16451639  if  ((k!=0) && (lsmod==0)) lsmod=1;
     
    16881682    }
    16891683  }
    1690 #ifdef NEW_LIFT
    1691   if (lift1)
     1684  if (unit!=NULL)
    16921685  {
    16931686    for(j = 0;j<comps_to_add;j++)
     
    17041697    }
    17051698  }
    1706 #endif
    17071699  ideal s_result = kNF(s_h3,currQuotient,s_temp,k);
    17081700  s_result->rank = s_h3->rank;
     
    17541746    }
    17551747  }
    1756 #ifdef TEST_LIFT
    1757 Print("The lift is:\n");
    1758 idPrint(s_result);
    1759 Print("The rest is:\n");
    1760 if (s_rest!=NULL) idPrint(s_rest);
    1761 #endif
    17621748  if(syz_ring!=orig_ring)
    17631749  {
     
    17721758  else
    17731759    idDelete(&s_rest);
     1760  if (unit!=NULL)
     1761  {
     1762    *unit=mpNew(comps_to_add,comps_to_add);
     1763    int i;
     1764    int comps=k+comps_to_add;
     1765    for(i=0;i<IDELEMS(s_result);i++)
     1766    {
     1767      poly p=s_result->m[i];
     1768      poly q=NULL;
     1769      while(p!=NULL)
     1770      {
     1771        if(pGetComp(p)<=comps)
     1772        {
     1773          pSetComp(p,0);
     1774          if (q!=NULL)
     1775          {
     1776            pNext(q)=pNext(p);
     1777          }
     1778          else
     1779          {
     1780            if(p!=s_result->m[i])
     1781              PrintS("wrong q\n");
     1782            pIter(s_result->m[i]);
     1783          }
     1784          pNext(p)=NULL;
     1785          MATELEM(*unit,i+1,i+1)=pAdd(MATELEM(*unit,i+1,i+1),p);
     1786          if(q!=NULL)   p=pNext(q);
     1787          else          p=s_result->m[i];
     1788        }
     1789        else
     1790        {
     1791          q=p;
     1792          pIter(p);
     1793        }
     1794      }
     1795    }
     1796  }
    17741797  return s_result;
    17751798}
     
    23682391        }
    23692392        if (p!=NULL)
    2370         { 
     2393        {
    23712394          if (k>=size)
    23722395          {
     
    29582981  rSetSyzComp(length);
    29592982  ideal s_temp;
    2960  
     2983
    29612984  if (syz_ring != orig_ring)
    29622985  {
     
    29672990    s_temp = temp;
    29682991  }
    2969  
     2992
    29702993  idTest(s_temp);
    29712994  ideal s_temp1 = kStd(s_temp,currQuotient,testHomog,&w,NULL,length);
     
    32193242  while ((i<IDELEMS(arg)) && (generator<0))
    32203243  {
    3221     for (j=rk_arg;j>=0;j--) 
     3244    for (j=rk_arg;j>=0;j--)
    32223245      (*componentIsUsed)[j]=0;
    32233246    p = arg->m[i];
    32243247    while (p!=NULL)
    3225     { 
     3248    {
    32263249      j = pGetComp(p);
    32273250      if ((*componentIsUsed)[j]==0)
  • Singular/ideals.h

    rcffe626 r1bf317  
    44*  Computer Algebra System SINGULAR     *
    55****************************************/
    6 /* $Id: ideals.h,v 1.19 2000-01-13 14:40:23 siebert Exp $ */
     6/* $Id: ideals.h,v 1.20 2000-01-27 16:53:47 Singular Exp $ */
    77/*
    88* ABSTRACT - all basic methods to manipulate ideals
     
    8484
    8585//ideal   idSyzygies (ideal h1, tHomog h,intvec **w);
    86 ideal   idSyzygies (ideal h1, tHomog h,intvec **w, BOOLEAN setSyzComp=TRUE, 
     86ideal   idSyzygies (ideal h1, tHomog h,intvec **w, BOOLEAN setSyzComp=TRUE,
    8787                    BOOLEAN setRegularity=FALSE, int *deg = NULL);
    8888ideal   idLiftStd  (ideal h1, matrix *m, tHomog h=testHomog);
     
    9090ideal   idLift (ideal mod, ideal sumod,ideal * rest=NULL,
    9191             BOOLEAN goodShape=FALSE, BOOLEAN isSB=TRUE,BOOLEAN divide=FALSE,
    92              BOOLEAN lift1=FALSE);
    93 ideal   idLiftNonStB (ideal  mod, ideal submod,ideal * rest=NULL,
    94              BOOLEAN goodShape=FALSE,BOOLEAN divide=FALSE,
    95              BOOLEAN lift1=FALSE);
     92             matrix *unit=NULL);
    9693
    9794intvec * idMWLift(ideal mod,intvec * weights);
  • Singular/iparith.cc

    rcffe626 r1bf317  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: iparith.cc,v 1.200 2000-01-13 14:18:58 siebert Exp $ */
     4/* $Id: iparith.cc,v 1.201 2000-01-27 16:53:47 Singular Exp $ */
    55
    66/*
     
    149149  { "dim",         0, DIM_CMD ,           CMD_1},
    150150  { "div",         0, INTDIV_CMD ,        MULDIV_OP},
     151  { "division",    0, DIVISION_CMD ,      CMD_2},
    151152#ifdef DRING
    152153  { "dring",       0, DRING_CMD ,         DRING_CMD},
     
    14821483  return FALSE;
    14831484}
     1485static BOOLEAN jjDIVISION(leftv res, leftv u, leftv v)
     1486{
     1487  ideal ui=(ideal)u->Data();
     1488  int ul= IDELEMS(ui);
     1489  ideal vi=(ideal)v->Data();
     1490  int vl= IDELEMS(vi);
     1491  ideal R; matrix U;
     1492  ideal m = idLift(ui,vi,&R, FALSE,hasFlag(u,FLAG_STD),FALSE,&U);
     1493  matrix T = idModule2formatedMatrix(m,ul,vl);
     1494  lists L=(lists)AllocSizeOf(slists);
     1495  L->Init(3);
     1496  L->m[0].rtyp=MATRIX_CMD;
     1497  L->m[0].data=(void *)T;
     1498  L->m[1].rtyp=MATRIX_CMD;
     1499  L->m[1].data=(void *)U;
     1500  L->m[2].rtyp=u->Typ();
     1501  L->m[2].data=(void *)R;
     1502  res->data=(char *)L;
     1503  return FALSE;
     1504}
    14841505static BOOLEAN jjEXTGCD_I(leftv res, leftv u, leftv v)
    14851506{
     
    17251746  int ul= IDELEMS((ideal)u->Data());
    17261747  int vl= IDELEMS((ideal)v->Data());
    1727   //if (currRing->OrdSgn==-1) ul += vl;  //to add if NEW_LIFT defined
    1728   if (hasFlag(u,FLAG_STD))
    1729   {
    1730     m = idLift((ideal)u->Data(),(ideal)v->Data());
    1731     res->data = (char *)idModule2formatedMatrix(m,ul,vl);
    1732   }
    1733   else
    1734   {
    1735     // matrix ma=mpNew(1,1);
    1736     // ideal mo=idLiftStd((ideal)u->CopyD(),currQuotient,&ma,testHomog);
    1737     // m = idLift(mo,(ideal)v->Data());
    1738     // matrix r=idModule2formatedMatrix(m, IDELEMS(mo),vl);
    1739     // idDelete(&mo);
    1740     // // idDelete(&m); already done by idModule2formatedMatrix
    1741     // res->data=(char *)mpMult(ma,r);
    1742     // idDelete((ideal *)&ma);
    1743     // idDelete((ideal *)&r);
    1744     m = idLiftNonStB((ideal)u->Data(),(ideal)v->Data());
    1745     res->data = (char *)idModule2formatedMatrix(m,ul,vl);
    1746   }
     1748  m = idLift((ideal)u->Data(),(ideal)v->Data(),NULL,FALSE,hasFlag(u,FLAG_STD));
     1749  res->data = (char *)idModule2formatedMatrix(m,ul,vl);
    17471750  return FALSE;
    17481751}
     
    21602163,{jjWRONG2,    EQUAL_EQUAL,    0,              IDEAL_CMD,  IDEAL_CMD PROFILER}
    21612164,{jjWRONG2,    EQUAL_EQUAL,    0,              MODUL_CMD,  MODUL_CMD PROFILER}
     2165,{jjWRONG2,    EQUAL_EQUAL,    0,              IDEAL_CMD,  MODUL_CMD PROFILER}
     2166,{jjWRONG2,    EQUAL_EQUAL,    0,              MODUL_CMD,  IDEAL_CMD PROFILER}
    21622167,{jjEQUAL_I,   NOTEQUAL,       INT_CMD,        INT_CMD,    INT_CMD PROFILER}
    21632168,{jjEQUAL_N,   NOTEQUAL,       INT_CMD,        NUMBER_CMD, NUMBER_CMD PROFILER}
     
    21702175,{jjWRONG2,    NOTEQUAL,       0,              IDEAL_CMD,  IDEAL_CMD PROFILER}
    21712176,{jjWRONG2,    NOTEQUAL,       0,              MODUL_CMD,  MODUL_CMD PROFILER}
     2177,{jjWRONG2,    NOTEQUAL,       0,              IDEAL_CMD,  MODUL_CMD PROFILER}
     2178,{jjWRONG2,    NOTEQUAL,       0,              MODUL_CMD,  IDEAL_CMD PROFILER}
    21722179,{jjDOTDOT,    DOTDOT,         INTVEC_CMD,     INT_CMD,    INT_CMD PROFILER}
    21732180,{jjINDEX_I,   '[',            INT_CMD,        INTVEC_CMD, INT_CMD PROFILER}
     
    22082215,{jjDIM2,      DIM_CMD,        INT_CMD,        IDEAL_CMD,  IDEAL_CMD PROFILER}
    22092216,{jjDIM2,      DIM_CMD,        INT_CMD,        MODUL_CMD,  IDEAL_CMD PROFILER}
     2217,{jjDIVISION,  DIVISION_CMD,   LIST_CMD,       IDEAL_CMD,  IDEAL_CMD PROFILER}
     2218,{jjDIVISION,  DIVISION_CMD,   LIST_CMD,       MODUL_CMD,  MODUL_CMD PROFILER}
    22102219,{jjELIMIN,    ELIMINATION_CMD,IDEAL_CMD,      IDEAL_CMD,  POLY_CMD PROFILER}
    22112220,{jjELIMIN,    ELIMINATION_CMD,MODUL_CMD,      MODUL_CMD,  POLY_CMD PROFILER}
     
    41834192static BOOLEAN jjLIFT3(leftv res, leftv u, leftv v, leftv w)
    41844193{
    4185   int sw=(int)w->Data();
    4186   if (sw==0)
    4187   {
    4188     return jjLIFT(res,u,v);
    4189   }
    4190   else
    4191   {
    4192     ideal m;
    4193     ideal ui=(ideal)u->Data();
    4194     ideal vi=(ideal)v->Data();
    4195     int ul= IDELEMS(ui);
    4196     int vl= IDELEMS(vi);
    4197     m = idLiftNonStB(ui,vi, sw);
    4198     res->data = (char *)idModule2formatedMatrix(m,ul,vl);
    4199   }
     4194  if (w->rtyp!=IDHDL) return TRUE;
     4195  int ul= IDELEMS((ideal)u->Data());
     4196  int vl= IDELEMS((ideal)v->Data());
     4197  ideal m
     4198    = idLift((ideal)u->Data(),(ideal)v->Data(),NULL,FALSE,hasFlag(u,FLAG_STD),
     4199             FALSE, (matrix *)(&(IDMATRIX((idhdl)(w->data)))));
     4200  res->data = (char *)idModule2formatedMatrix(m,ul,vl);
    42004201  return FALSE;
    42014202}
     
    43284329,{jjRES3,           MRES_CMD,   NONE,       MODUL_CMD,  INT_CMD,    ANY_TYPE }
    43294330#endif
    4330 ,{jjLIFT3,          LIFT_CMD,   MATRIX_CMD, IDEAL_CMD,  IDEAL_CMD,  INT_CMD }
     4331,{jjLIFT3,          LIFT_CMD,   MATRIX_CMD, IDEAL_CMD,  IDEAL_CMD,  MATRIX_CMD }
     4332,{jjLIFT3,          LIFT_CMD,   MATRIX_CMD, MODUL_CMD,  MODUL_CMD,  MATRIX_CMD }
    43314333,{jjPREIMAGE,       PREIMAGE_CMD, IDEAL_CMD, RING_CMD,  ANY_TYPE,   ANY_TYPE }
    43324334,{jjPREIMAGE,       PREIMAGE_CMD, IDEAL_CMD, QRING_CMD, ANY_TYPE,   ANY_TYPE }
Note: See TracChangeset for help on using the changeset viewer.