Changeset 32d2a9 in git


Ignore:
Timestamp:
Jan 17, 2009, 11:19:17 AM (15 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
1d03c4e373b711862a7ef612718dc18f225aafd2
Parents:
1378915d904a163ade5fd8be0a96eb3e73bac75c
Message:
*hannes: homog stuff


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

Legend:

Unmodified
Added
Removed
  • Singular/iparith.cc

    r1378915 r32d2a9  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: iparith.cc,v 1.492 2009-01-16 02:21:09 motsak Exp $ */
     4/* $Id: iparith.cc,v 1.493 2009-01-17 10:19:17 Singular Exp $ */
    55
    66/*
     
    261261  { "hilb",        0, HILBERT_CMD ,       CMD_123},
    262262  { "highcorner",  0, HIGHCORNER_CMD,     CMD_1},
    263   { "homog",       0, HOMOG_CMD ,         CMD_12},
     263  { "homog",       0, HOMOG_CMD ,         CMD_123},
    264264  { "hres",        0, HRES_CMD ,          CMD_2},
    265265  { "ideal",       0, IDEAL_CMD ,         IDEAL_CMD},
     
    898898  {
    899899     Werror("matrix size not compatible(%dx%d, %dx%d)",
    900              MATROWS(A),MATCOLS(A),MATROWS(B),MATCOLS(B));
     900             MATROWS(A),MATCOLS(A),MATROWS(B),MATCOLS(B));
    901901     return TRUE;
    902902  }
     
    977977  {
    978978     Werror("matrix size not compatible(%dx%d, %dx%d)",
    979              MATROWS(A),MATCOLS(A),MATROWS(B),MATCOLS(B));
     979             MATROWS(A),MATCOLS(A),MATROWS(B),MATCOLS(B));
    980980     return TRUE;
    981981  }
     
    11031103  {
    11041104     Werror("matrix size not compatible(%dx%d, %dx%d)",
    1105              MATROWS(A),MATCOLS(A),MATROWS(B),MATCOLS(B));
     1105             MATROWS(A),MATCOLS(A),MATROWS(B),MATCOLS(B));
    11061106     return TRUE;
    11071107  }
     
    23042304    WerrorS("variable must have weight 1");
    23052305  return (d!=1);
     2306}
     2307static BOOLEAN jjHOMOG1_W(leftv res, leftv v, leftv u)
     2308{
     2309  intvec *w=new intvec(rVar(currRing));
     2310  intvec *vw=(intvec*)u->Data();
     2311  ideal v_id=(ideal)v->Data();
     2312  pFDegProc save_FDeg=pFDeg;
     2313  pLDegProc save_LDeg=pLDeg;
     2314  BOOLEAN save_pLexOrder=pLexOrder;
     2315  pLexOrder=FALSE;
     2316  kHomW=vw;
     2317  kModW=w;
     2318  pSetDegProcs(kHomModDeg);
     2319  res->data=(void *)(long)idHomModule(v_id,currQuotient,&w);
     2320  pLexOrder=save_pLexOrder;
     2321  kHomW=NULL;
     2322  kModW=NULL;
     2323  pRestoreDegProcs(save_FDeg,save_LDeg);
     2324  if (w!=NULL) delete w;
     2325  return FALSE;
    23062326}
    23072327static BOOLEAN jjINDEPSET2(leftv res, leftv u, leftv v)
     
    28192839    if (weights!=NULL) (*w) += add_row_shift;
    28202840    atSet(res,omStrDup("isHomog"),w,INTVEC_CMD);
    2821     delete w;
     2841    w=NULL;
    28222842  }
    28232843  else
     
    33523372,{jjHILBERT2,  HILBERT_CMD,    INTVEC_CMD,     IDEAL_CMD,  INT_CMD NO_PLURAL}
    33533373,{jjHILBERT2,  HILBERT_CMD,    INTVEC_CMD,     MODUL_CMD,  INT_CMD NO_PLURAL}
     3374,{jjHOMOG1_W,  HOMOG_CMD,      INT_CMD,        IDEAL_CMD,  INTVEC_CMD ALLOW_PLURAL}
     3375,{jjHOMOG1_W,  HOMOG_CMD,      INT_CMD,        MODUL_CMD,   INTVEC_CMD ALLOW_PLURAL}
    33543376,{jjHOMOG_P,   HOMOG_CMD,      POLY_CMD,       POLY_CMD,   POLY_CMD ALLOW_PLURAL}
    33553377,{jjHOMOG_P,   HOMOG_CMD,      VECTOR_CMD,     VECTOR_CMD, POLY_CMD ALLOW_PLURAL}
     
    39343956  {
    39353957    res->data=(void *)(long)idHomModule(v_id,currQuotient,&w);
    3936     if ((res->data!=NULL) && (v->rtyp==IDHDL))
    3937     {
    3938       char *isHomog=omStrDup("isHomog");
     3958    if (res->data!=NULL)
     3959    {
     3960      if (v->rtyp==IDHDL)
     3961      {
     3962        char *isHomog=omStrDup("isHomog");
     3963        if (v->e==NULL)
     3964          atSet((idhdl)(v->data),isHomog,w,INTVEC_CMD);
     3965        else
     3966          atSet((idhdl)(v->LData()),isHomog,w,INTVEC_CMD);
     3967      }
     3968      else if (w!=NULL) delete w;
     3969    } // if res->data==NULL then w==NULL
     3970  }
     3971  else
     3972  {
     3973    res->data=(void *)(long)idTestHomModule(v_id,currQuotient,w);
     3974    if((res->data==NULL) && (v->rtyp==IDHDL))
     3975    {
    39393976      if (v->e==NULL)
    3940         atSet((idhdl)(v->data),isHomog,w,INTVEC_CMD);
     3977        atKill((idhdl)(v->data),"isHomog");
    39413978      else
    3942         atSet((idhdl)(v->LData()),isHomog,w,INTVEC_CMD);
    3943     }
    3944     else if (w!=NULL) delete w;
    3945   }
    3946   else
    3947     res->data=(void *)(long)idTestHomModule(v_id,currQuotient,w);
     3979        atKill((idhdl)(v->LData()),"isHomog");
     3980    }
     3981  }
    39483982  return FALSE;
    39493983}
     
    40544088static BOOLEAN jjJACOB_M(leftv res, leftv a)
    40554089{
    4056 
    4057         ideal id = (ideal)a->Data();
    4058         id = idTransp(id);
    4059         int W = IDELEMS(id);
    4060 
    4061         ideal result = idInit(W * pVariables, id->rank);
    4062         poly *p = result->m;
    4063        
    4064         for( int v = 1; v <= pVariables; v++ )
     4090  ideal id = (ideal)a->Data();
     4091  id = idTransp(id);
     4092  int W = IDELEMS(id);
     4093
     4094  ideal result = idInit(W * pVariables, id->rank);
     4095  poly *p = result->m;
     4096       
     4097  for( int v = 1; v <= pVariables; v++ )
    40654098  {
    40664099    poly* q = id->m;
    4067           for( int i = 0; i < W; i++, p++, q++ )
    4068                   *p = pDiff( *q, v );
    4069   }
    4070         idDelete(&id);
    4071 
    4072         res->data = (char *)result;
     4100    for( int i = 0; i < W; i++, p++, q++ )
     4101      *p = pDiff( *q, v );
     4102  }
     4103  idDelete(&id);
     4104
     4105  res->data = (char *)result;
    40734106  return FALSE;
    40744107}
     
    56315664  return TRUE;
    56325665}
     5666static BOOLEAN jjHOMOG_ID_W(leftv res, leftv u, leftv v, leftv w)
     5667{
     5668  PrintS("TODO\n");
     5669  int i=pVar((poly)v->Data());
     5670  if (i==0)
     5671  {
     5672    WerrorS("ringvar expected");
     5673    return TRUE;
     5674  }
     5675  poly p=pOne(); pSetExp(p,i,1); pSetm(p);
     5676  int d=pWTotaldegree(p);
     5677  pLmDelete(p);
     5678  if (d==1)
     5679    res->data = (char *)idHomogen((ideal)u->Data(),i);
     5680  else
     5681    WerrorS("variable must have weight 1");
     5682  return (d!=1);
     5683}
     5684static BOOLEAN jjHOMOG_P_W(leftv res, leftv u, leftv v,leftv w)
     5685{
     5686  PrintS("TODO\n");
     5687  int i=pVar((poly)v->Data());
     5688  if (i==0)
     5689  {
     5690    WerrorS("ringvar expected");
     5691    return TRUE;
     5692  }
     5693  poly p=pOne(); pSetExp(p,i,1); pSetm(p);
     5694  int d=pWTotaldegree(p);
     5695  pLmDelete(p);
     5696  if (d==1)
     5697    res->data = (char *)pHomogen((poly)u->Data(),i);
     5698  else
     5699    WerrorS("variable must have weight 1");
     5700  return (d!=1);
     5701}
    56335702static BOOLEAN jjINTMAT3(leftv res, leftv u, leftv v,leftv w)
    56345703{
     
    60906159,{jjHILBERT3,       HILBERT_CMD,INTVEC_CMD, IDEAL_CMD,  INT_CMD,    INTVEC_CMD NO_PLURAL}
    60916160,{jjHILBERT3,       HILBERT_CMD,INTVEC_CMD, MODUL_CMD,  INT_CMD,    INTVEC_CMD NO_PLURAL}
     6161,{jjHOMOG_P_W,      HOMOG_CMD,  POLY_CMD,   POLY_CMD,   POLY_CMD,   INTVEC_CMD ALLOW_PLURAL}
     6162,{jjHOMOG_P_W,      HOMOG_CMD,  VECTOR_CMD, VECTOR_CMD, POLY_CMD,   INTVEC_CMD ALLOW_PLURAL}
     6163,{jjHOMOG_ID_W,     HOMOG_CMD,  IDEAL_CMD,  IDEAL_CMD,  POLY_CMD,   INTVEC_CMD ALLOW_PLURAL}
     6164,{jjHOMOG_ID_W,     HOMOG_CMD,  MODUL_CMD,  MODUL_CMD,  POLY_CMD,   INTVEC_CMD ALLOW_PLURAL}
    60926165,{jjCALL3MANY,      IDEAL_CMD,  IDEAL_CMD,  DEF_CMD,    DEF_CMD,    DEF_CMD ALLOW_PLURAL}
    60936166,{lInsert3,         INSERT_CMD, LIST_CMD,   LIST_CMD,   DEF_CMD,    INT_CMD ALLOW_PLURAL}
     
    63576430      {
    63586431        number b=(number)h->Data();
    6359         number n=nInit_bigint(b);
     6432        number n=nInit_bigint(b);
    63606433        if (!nIsZero(n))
    63616434        {
Note: See TracChangeset for help on using the changeset viewer.