Changeset 3be219 in git


Ignore:
Timestamp:
Mar 5, 2001, 5:43:14 PM (23 years ago)
Author:
Mathias Schulze <mschulze@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
a1df019ac85bd902853f9b914a948442541c16b0
Parents:
7e30dd301152a4f9cb4143f7ae78d529b3af303b
Message:
*mschulze: JET4 neu, REDUCE3+5 neue Reihenfolge der Parameter, REDUCE4 geaendert


git-svn-id: file:///usr/local/Singular/svn/trunk@5305 2c84dea3-7e68-4137-9b89-c4e89433aadc
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/iparith.cc

    r7e30dd r3be219  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: iparith.cc,v 1.258 2001-02-27 18:11:57 mschulze Exp $ */
     4/* $Id: iparith.cc,v 1.259 2001-03-05 16:43:14 mschulze Exp $ */
    55
    66/*
     
    202202  { "intvec",      0, INTVEC_CMD ,        ROOT_DECL_LIST},
    203203  { "jacob",       0, JACOB_CMD ,         CMD_1},
    204   { "jet",         0, JET_CMD ,           CMD_23},
     204  { "jet",         0, JET_CMD ,           CMD_M},
    205205  { "kbase",       0, KBASE_CMD ,         CMD_12},
    206206  { "keepring",    0, KEEPRING_CMD ,      KEEPRING_CMD},
     
    41614161static BOOLEAN jjJET_P_P(leftv res, leftv u, leftv v, leftv w)
    41624162{
    4163   poly ww=(poly)w->Data();
    4164   if (!pIsUnit(ww))
    4165   {
    4166     WerrorS("3rd argument must be a unit");
     4163  if (!pIsUnit((poly)v->Data()))
     4164  {
     4165    WerrorS("2rd argument must be a unit");
    41674166    return TRUE;
    41684167  }
    4169   res->data = (char *)pSeries((int)v->Data(),(poly)u->CopyD(),(poly)w->CopyD());
     4168  res->data = (char *)pSeries((int)w->Data(),(poly)u->CopyD(),(poly)v->CopyD());
    41704169  return FALSE;
    41714170}
     
    41784177static BOOLEAN jjJET_ID_M(leftv res, leftv u, leftv v, leftv w)
    41794178{
    4180   matrix ww=(matrix)w->Data();
    4181   if (!mpIsDiagUnit(ww))
    4182   {
    4183     WerrorS("3rd argument must be a diagonal matrix of units");
     4179  if (!mpIsDiagUnit((matrix)v->Data()))
     4180  {
     4181    WerrorS("2rd argument must be a diagonal matrix of units");
    41844182    return TRUE;
    41854183  }
    4186   res->data = (char *)idSeries((int)v->Data(),(ideal)u->CopyD(),
    4187                                (matrix)w->CopyD());
     4184  res->data = (char *)idSeries((int)w->Data(),(ideal)u->CopyD(),
     4185                               (matrix)v->CopyD());
    41884186  return FALSE;
    41894187}
     
    44344432    return TRUE;
    44354433  }
    4436   res->data = (char *)redNF((ideal)v->CopyD(),(poly)u->CopyD(),
    4437     (poly)w->CopyD());
     4434  res->data = (char *)redNF((ideal)w->CopyD(),(poly)u->CopyD(),
     4435    (poly)v->CopyD());
    44384436  return FALSE;
    44394437}
     
    44464444    return TRUE;
    44474445  }
    4448   res->data = (char *)redNF((ideal)v->CopyD(),(ideal)u->CopyD(),
    4449     (matrix)w->CopyD());
     4446  res->data = (char *)redNF((ideal)w->CopyD(),(ideal)u->CopyD(),
     4447    (matrix)v->CopyD());
    44504448  return FALSE;
    44514449}
     
    45694567,{jjJET_P_IV,       JET_CMD,    VECTOR_CMD, VECTOR_CMD, INT_CMD,    INTVEC_CMD }
    45704568,{jjJET_ID_IV,      JET_CMD,    MODUL_CMD,  MODUL_CMD,  INT_CMD,    INTVEC_CMD }
    4571 ,{jjJET_P_P,        JET_CMD,    POLY_CMD,   POLY_CMD,   INT_CMD,    POLY_CMD }
    4572 ,{jjJET_P_P,        JET_CMD,    VECTOR_CMD, VECTOR_CMD, INT_CMD,    POLY_CMD }
    4573 ,{jjJET_ID_M,       JET_CMD,    IDEAL_CMD,  IDEAL_CMD,  INT_CMD,    MATRIX_CMD }
    4574 ,{jjJET_ID_M,       JET_CMD,    MODUL_CMD,  MODUL_CMD,  INT_CMD,    MATRIX_CMD }
     4569,{jjJET_P_P,        JET_CMD,    POLY_CMD,   POLY_CMD,   POLY_CMD,   INT_CMD }
     4570,{jjJET_P_P,        JET_CMD,    VECTOR_CMD, VECTOR_CMD, POLY_CMD,   INT_CMD }
     4571,{jjJET_ID_M,       JET_CMD,    IDEAL_CMD,  IDEAL_CMD,  MATRIX_CMD, INT_CMD }
     4572,{jjJET_ID_M,       JET_CMD,    MODUL_CMD,  MODUL_CMD,  MATRIX_CMD, INT_CMD }
    45754573,{jjWRONG3,         JET_CMD,    POLY_CMD,   POLY_CMD,   INT_CMD,    INT_CMD }
    45764574,{mpKoszul,         KOSZUL_CMD, MATRIX_CMD, INT_CMD,    INT_CMD,    IDEAL_CMD }
     
    45964594,{jjREDUCE3_ID,     REDUCE_CMD, MODUL_CMD,  MODUL_CMD,  MODUL_CMD,  INT_CMD }
    45974595,{jjREDUCE3_ID,     REDUCE_CMD, MODUL_CMD,  MODUL_CMD,  IDEAL_CMD,  INT_CMD }
    4598 ,{jjREDUCE3_CP,     REDUCE_CMD, POLY_CMD,   POLY_CMD,   IDEAL_CMD,  POLY_CMD }
    4599 ,{jjREDUCE3_CP,     REDUCE_CMD, VECTOR_CMD, VECTOR_CMD, MODUL_CMD,  POLY_CMD }
    4600 ,{jjREDUCE3_CID,    REDUCE_CMD, IDEAL_CMD,  IDEAL_CMD,  IDEAL_CMD,  MATRIX_CMD }
    4601 ,{jjREDUCE3_CID,    REDUCE_CMD, MODUL_CMD,  MODUL_CMD,  MODUL_CMD,  MATRIX_CMD }
     4596,{jjREDUCE3_CP,     REDUCE_CMD, POLY_CMD,   POLY_CMD,   POLY_CMD,   IDEAL_CMD }
     4597,{jjREDUCE3_CP,     REDUCE_CMD, VECTOR_CMD, VECTOR_CMD, POLY_CMD,   MODUL_CMD }
     4598,{jjREDUCE3_CID,    REDUCE_CMD, IDEAL_CMD,  IDEAL_CMD,  MATRIX_CMD, IDEAL_CMD }
     4599,{jjREDUCE3_CID,    REDUCE_CMD, MODUL_CMD,  MODUL_CMD,  MATRIX_CMD, MODUL_CMD }
    46024600#ifdef OLD_RES
    46034601,{jjRES3,           RES_CMD,    NONE,       IDEAL_CMD,  INT_CMD,    ANY_TYPE }
     
    48674865  return FALSE;
    48684866}
     4867static BOOLEAN jjJET4(leftv res, leftv u)
     4868{
     4869  leftv u1=u;
     4870  leftv u2=u1->next;
     4871  leftv u3=u2->next;
     4872  leftv u4=u3->next;
     4873  if((u1->Typ()==POLY_CMD)&&(u2->Typ()==POLY_CMD)&&(u3->Typ()==INT_CMD)&&
     4874     (u4->Typ()==INTVEC_CMD)||
     4875     (u1->Typ()==VECTOR_CMD)&&(u2->Typ()==POLY_CMD)&&(u3->Typ()==INT_CMD)&&
     4876     (u4->Typ()==INTVEC_CMD))
     4877  {
     4878    if(!pIsUnit((poly)u2->Data()))
     4879    {
     4880      Werror("2nd argument must be a unit");
     4881      return TRUE;
     4882    }
     4883    res->rtyp=u1->Typ();
     4884    res->data=(char*)pSeries((int)u3->Data(),pCopy((poly)u1->Data()),
     4885                             pCopy((poly)u2->Data()),(intvec*)u4->Data());
     4886    return FALSE;
     4887  }
     4888  else
     4889  if((u1->Typ()==IDEAL_CMD)&&(u2->Typ()==MATRIX_CMD)&&(u3->Typ()==INT_CMD)&&
     4890     (u4->Typ()==INTVEC_CMD)||
     4891     (u1->Typ()==MODUL_CMD)&&(u2->Typ()==MATRIX_CMD)&&(u3->Typ()==INT_CMD)&&
     4892     (u4->Typ()==INTVEC_CMD))
     4893  {
     4894    if(!mpIsDiagUnit((matrix)u2->Data()))
     4895    {
     4896      Werror("2nd argument must be a diagonal matrix of units");
     4897      return TRUE;
     4898    }
     4899    res->rtyp=u1->Typ();
     4900    res->data=(char*)idSeries((int)u3->Data(),idCopy((ideal)u1->Data()),
     4901                              mpCopy((matrix)u2->Data()),(intvec*)u4->Data());
     4902    return FALSE;
     4903  }
     4904  else
     4905  {
     4906    Werror("%s(`poly`,`poly`,`int`,`intvec`) exppected",
     4907           Tok2Cmdname(iiOp));
     4908    return TRUE;
     4909  }
     4910}
    48694911static BOOLEAN jjKLAMMER_PL(leftv res, leftv u)
    48704912{
     
    49504992  return setOption(res,v);
    49514993}
    4952 static BOOLEAN jjREDUCE4(leftv res, leftv v)
    4953 {
    4954   // poly, ideal, deg, weights
    4955   leftv u1=v;
    4956   leftv u2=v->next;
    4957   leftv u3=u2->next; u2->next=NULL;
     4994static BOOLEAN jjREDUCE4(leftv res, leftv u)
     4995{
     4996  leftv u1=u;
     4997  leftv u2=u1->next;
     4998  leftv u3=u2->next;
    49584999  leftv u4=u3->next;
    4959   if ((u3->Typ()!=INT_CMD)||(u4->Typ()!=INTVEC_CMD))
    4960   {
    4961     Werror("%s(`poly`,`ideal`,`int`,`intvec`) exppected",Tok2Cmdname(iiOp));
     5000  if((u3->Typ()==INT_CMD)&&(u4->Typ()==INTVEC_CMD))
     5001  {
     5002    int save_d=Kstd1_deg;
     5003    Kstd1_deg=(int)u3->Data();
     5004    kModW=(intvec *)u4->Data();
     5005    BITSET save=verbose;
     5006    verbose|=Sy_bit(V_DEG_STOP);
     5007    u2->next=NULL;
     5008    BOOLEAN r=jjCALL2ARG(res,u);
     5009    kModW=NULL;
     5010    Kstd1_deg=save_d;
     5011    verbose=save;
     5012    u->next->next=u3;
     5013    return r;
     5014  }
     5015  else
     5016  if((u1->Typ()==IDEAL_CMD)&&(u2->Typ()==MATRIX_CMD)&&(u3->Typ()==IDEAL_CMD)&&
     5017     (u4->Typ()==INT_CMD))
     5018  {
     5019    if(!mpIsDiagUnit((matrix)u2->Data()))
     5020    {
     5021      Werror("2rd argument must be a diagonal matrix of units");
     5022      return TRUE;
     5023    }
     5024    res->rtyp=IDEAL_CMD;
     5025    res->data=(char*)redNF(idCopy((ideal)u3->Data()),idCopy((ideal)u1->Data()),
     5026                           mpCopy((matrix)u2->Data()),(int)u4->Data());
     5027    return FALSE;
     5028  }
     5029  else
     5030  if((u1->Typ()==POLY_CMD)&&(u2->Typ()==POLY_CMD)&&(u3->Typ()==IDEAL_CMD)&&
     5031     (u4->Typ()==INT_CMD))
     5032  {
     5033    if(!pIsUnit((poly)u2->Data()))
     5034    {
     5035      Werror("2rd argument must be a unit");
     5036      return TRUE;
     5037    }
     5038    res->rtyp=POLY_CMD;
     5039    res->data=(char*)redNF(idCopy((ideal)u3->Data()),pCopy((poly)u1->Data()),
     5040                           pCopy((poly)u2->Data()),(int)u4->Data());
     5041    return FALSE;
     5042  }
     5043  else
     5044  {
     5045    Werror("%s(`poly`,`ideal`,`int`,`intvec`) expected",Tok2Cmdname(iiOp));
    49625046    return TRUE;
    49635047  }
    4964   int save_d=Kstd1_deg;
    4965   Kstd1_deg=(int)u3->Data();
    4966   kModW=(intvec *)u4->Data();
    4967   BITSET save=verbose;
    4968   verbose|=Sy_bit(V_DEG_STOP);
    4969   BOOLEAN r=jjCALL2ARG(res,v);
    4970   kModW=NULL;
    4971   Kstd1_deg=save_d;
    4972   verbose=save;
    4973   v->next->next=u3;
    4974   return r;
    4975 }
    4976 static BOOLEAN jjREDUCE5(leftv res, leftv v)
    4977 {
    4978   leftv u1=v;
    4979   leftv u2=v->next;
     5048}
     5049static BOOLEAN jjREDUCE5(leftv res, leftv u)
     5050{
     5051  leftv u1=u;
     5052  leftv u2=u1->next;
    49805053  leftv u3=u2->next;
    49815054  leftv u4=u3->next;
    49825055  leftv u5=u4->next;
    4983   if((u1->Typ()==IDEAL_CMD)&&(u2->Typ()==IDEAL_CMD)&&(u3->Typ()==MATRIX_CMD)&&
     5056  if((u1->Typ()==IDEAL_CMD)&&(u2->Typ()==MATRIX_CMD)&&(u3->Typ()==IDEAL_CMD)&&
    49845057     (u4->Typ()==INT_CMD)&&(u5->Typ()==INTVEC_CMD))
    49855058  {
    4986     if(!mpIsDiagUnit((matrix)u3->Data()))
    4987     {
    4988       Werror("3rd argument must be a diagonal matrix of units");
    4989       return FALSE;
     5059    if(!mpIsDiagUnit((matrix)u2->Data()))
     5060    {
     5061      Werror("2rd argument must be a diagonal matrix of units");
     5062      return TRUE;
    49905063    }
    49915064    res->rtyp=IDEAL_CMD;
    4992     res->data=(char*)redNF(idCopy((ideal)u2->Data()),idCopy((ideal)u1->Data()),
    4993                            mpCopy((matrix)u3->Data()),
     5065    res->data=(char*)redNF(idCopy((ideal)u3->Data()),idCopy((ideal)u1->Data()),
     5066                           mpCopy((matrix)u2->Data()),
    49945067                           (int)u4->Data(),(intvec*)u5->Data());
    49955068    return FALSE;
    49965069  }
    49975070  else
    4998   if((u1->Typ()==POLY_CMD)&&(u2->Typ()==IDEAL_CMD)&&(u3->Typ()==POLY_CMD)&&
     5071  if((u1->Typ()==POLY_CMD)&&(u2->Typ()==POLY_CMD)&&(u3->Typ()==IDEAL_CMD)&&
    49995072     (u4->Typ()==INT_CMD)&&(u5->Typ()==INTVEC_CMD))
    50005073  {
    5001     if(!pIsUnit((poly)u3->Data()))
    5002     {
    5003       Werror("3rd argument must be a unit");
    5004       return FALSE;
     5074    if(!pIsUnit((poly)u2->Data()))
     5075    {
     5076      Werror("2rd argument must be a unit");
     5077      return TRUE;
    50055078    }
    50065079    res->rtyp=POLY_CMD;
    5007     res->data=(char*)redNF(idCopy((ideal)u2->Data()),pCopy((poly)u1->Data()),
    5008                            pCopy((poly)u3->Data()),
     5080    res->data=(char*)redNF(idCopy((ideal)u3->Data()),pCopy((poly)u1->Data()),
     5081                           pCopy((poly)u2->Data()),
    50095082                           (int)u4->Data(),(intvec*)u5->Data());
    50105083    return FALSE;
     
    52475320,{jjCALL1ARG,  INTVEC_CMD,      INTVEC_CMD,         1  }
    52485321,{jjINTVEC_PL, INTVEC_CMD,      INTVEC_CMD,         -2 }
     5322,{jjCALL2ARG,  JET_CMD,         POLY_CMD,/*or set by p*/           2  }
     5323,{jjCALL3ARG,  JET_CMD,         POLY_CMD,/*or set by p*/           3  }
     5324,{jjJET4,      JET_CMD,         POLY_CMD,/*or set by p*/           4  }
    52495325,{jjLIST_PL,   LIST_CMD,        LIST_CMD,           -1 }
    52505326,{jjCALL1ARG,  MODUL_CMD,       MODUL_CMD,          1  }
Note: See TracChangeset for help on using the changeset viewer.