Changeset 19ad278 in git


Ignore:
Timestamp:
Mar 18, 2011, 5:55:25 PM (12 years ago)
Author:
Frank Seelisch <seelisch@…>
Branches:
(u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'a800fe4b3e9d37a38c5a10cc0ae9dfa0c15a4ee6')
Children:
6fe9a5bbf090a5f523e34382e1d8657f5cd1a5f9
Parents:
4dfb227a84690906265e2bcf49abffa98444b04b
Message:
command hilb over Z (done over Q)

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

Legend:

Unmodified
Added
Removed
  • Singular/iparith.cc

    r4dfb22 r19ad278  
    21952195static BOOLEAN jjHILBERT2(leftv res, leftv u, leftv v)
    21962196{
     2197#ifdef HAVE_RINGS
     2198  if (rField_is_Ring_Z(currRing))
     2199  {
     2200    ring origR = currRing;
     2201    ring tempR = rCopy(origR);
     2202    tempR->ringtype = 0; tempR->ch = 0;
     2203    rComplete(tempR);
     2204    ideal uid = (ideal)u->Data();
     2205    rChangeCurrRing(tempR);
     2206    ideal uu = idrCopyR(uid, origR, currRing);
     2207    sleftv uuAsLeftv; memset(&uuAsLeftv, 0, sizeof(uuAsLeftv));
     2208    uuAsLeftv.rtyp = IDEAL_CMD;
     2209    uuAsLeftv.data = uu; uuAsLeftv.next = NULL;
     2210    if (hasFlag(u, FLAG_STD)) setFlag(&uuAsLeftv,FLAG_STD);
     2211    assumeStdFlag(&uuAsLeftv);
     2212    Print("// NOTE: computation of Hilbert series etc. is being\n");
     2213    Print("//       performed for generic fibre, that is, over Q\n");
     2214    intvec *module_w=(intvec*)atGet(&uuAsLeftv,"isHomog",INTVEC_CMD);
     2215    intvec *iv=hFirstSeries(uu,module_w,currQuotient);
     2216    int returnWithTrue = 1;
     2217    switch((int)(long)v->Data())
     2218    {
     2219      case 1:
     2220        res->data=(void *)iv;
     2221        returnWithTrue = 0;
     2222      case 2:
     2223        res->data=(void *)hSecondSeries(iv);
     2224        delete iv;
     2225        returnWithTrue = 0;
     2226    }
     2227    if (returnWithTrue)
     2228    {
     2229      WerrorS(feNotImplemented);
     2230      delete iv;
     2231    }
     2232    idDelete(&uu);
     2233    rChangeCurrRing(origR);
     2234    rDelete(tempR);
     2235    if (returnWithTrue) return TRUE; else return FALSE;
     2236  }
     2237#endif
    21972238  assumeStdFlag(u);
    21982239  intvec *module_w=(intvec*)atGet(u,"isHomog",INTVEC_CMD);
     
    36543695      return FALSE;
    36553696    }
    3656     rChangeCurrRing(tempR); rComplete(tempR);
     3697    rChangeCurrRing(tempR);
    36573698    ideal vv = idrCopyR(vid, origR, currRing);
    36583699    /* drop degree zero generator from vv (if any) */
     
    38243865static BOOLEAN jjHILBERT(leftv res, leftv v)
    38253866{
     3867#ifdef HAVE_RINGS
     3868  if (rField_is_Ring_Z(currRing))
     3869  {
     3870    ring origR = currRing;
     3871    ring tempR = rCopy(origR);
     3872    tempR->ringtype = 0; tempR->ch = 0;
     3873    rComplete(tempR);
     3874    ideal vid = (ideal)v->Data();
     3875    rChangeCurrRing(tempR);
     3876    ideal vv = idrCopyR(vid, origR, currRing);
     3877    sleftv vvAsLeftv; memset(&vvAsLeftv, 0, sizeof(vvAsLeftv));
     3878    vvAsLeftv.rtyp = IDEAL_CMD;
     3879    vvAsLeftv.data = vv; vvAsLeftv.next = NULL;
     3880    if (hasFlag(v, FLAG_STD)) setFlag(&vvAsLeftv,FLAG_STD);
     3881    assumeStdFlag(&vvAsLeftv);
     3882    Print("// NOTE: computation of Hilbert series etc. is being\n");
     3883    Print("//       performed for generic fibre, that is, over Q\n");
     3884    intvec *module_w=(intvec*)atGet(&vvAsLeftv,"isHomog",INTVEC_CMD);
     3885    //scHilbertPoly(vv,currQuotient);
     3886    hLookSeries(vv,module_w,currQuotient);
     3887    idDelete(&vv);
     3888    rChangeCurrRing(origR);
     3889    rDelete(tempR);
     3890    return FALSE;
     3891  }
     3892#endif
    38263893  assumeStdFlag(v);
    38273894  intvec *module_w=(intvec*)atGet(v,"isHomog",INTVEC_CMD);
     
    38323899static BOOLEAN jjHILBERT_IV(leftv res, leftv v)
    38333900{
     3901#ifdef HAVE_RINGS
     3902  if (rField_is_Ring_Z(currRing))
     3903  {
     3904    Print("// NOTE: computation of Hilbert series etc. is being\n");
     3905    Print("//       performed for generic fibre, that is, over Q\n");
     3906  }
     3907#endif
    38343908  res->data=(void *)hSecondSeries((intvec *)v->Data());
    38353909  return FALSE;
     
    53835457static BOOLEAN jjHILBERT3(leftv res, leftv u, leftv v, leftv w)
    53845458{
     5459  intvec *wdegree=(intvec*)w->Data();
     5460  if (wdegree->length()!=pVariables)
     5461  {
     5462    Werror("weight vector must have size %d, not %d",
     5463           pVariables,wdegree->length());
     5464    return TRUE;
     5465  }
     5466#ifdef HAVE_RINGS
     5467  if (rField_is_Ring_Z(currRing))
     5468  {
     5469    ring origR = currRing;
     5470    ring tempR = rCopy(origR);
     5471    tempR->ringtype = 0; tempR->ch = 0;
     5472    rComplete(tempR);
     5473    ideal uid = (ideal)u->Data();
     5474    rChangeCurrRing(tempR);
     5475    ideal uu = idrCopyR(uid, origR, currRing);
     5476    sleftv uuAsLeftv; memset(&uuAsLeftv, 0, sizeof(uuAsLeftv));
     5477    uuAsLeftv.rtyp = IDEAL_CMD;
     5478    uuAsLeftv.data = uu; uuAsLeftv.next = NULL;
     5479    if (hasFlag(u, FLAG_STD)) setFlag(&uuAsLeftv,FLAG_STD);
     5480    assumeStdFlag(&uuAsLeftv);
     5481    Print("// NOTE: computation of Hilbert series etc. is being\n");
     5482    Print("//       performed for generic fibre, that is, over Q\n");
     5483    intvec *module_w=(intvec*)atGet(&uuAsLeftv,"isHomog",INTVEC_CMD);
     5484    intvec *iv=hFirstSeries(uu,module_w,currQuotient,wdegree);
     5485    int returnWithTrue = 1;
     5486    switch((int)(long)v->Data())
     5487    {
     5488      case 1:
     5489        res->data=(void *)iv;
     5490        returnWithTrue = 0;
     5491      case 2:
     5492        res->data=(void *)hSecondSeries(iv);
     5493        delete iv;
     5494        returnWithTrue = 0;
     5495    }
     5496    if (returnWithTrue)
     5497    {
     5498      WerrorS(feNotImplemented);
     5499      delete iv;
     5500    }
     5501    idDelete(&uu);
     5502    rChangeCurrRing(origR);
     5503    rDelete(tempR);
     5504    if (returnWithTrue) return TRUE; else return FALSE;
     5505  }
     5506#endif
    53855507  assumeStdFlag(u);
    53865508  intvec *module_w=(intvec *)atGet(u,"isHomog",INTVEC_CMD);
    5387   intvec *wdegree=(intvec*)w->Data();
    5388   if (wdegree->length()!=pVariables)
    5389   {
    5390     Werror("weight vector must have size %d, not %d",
    5391            pVariables,wdegree->length());
    5392     return TRUE;
    5393   }
    53945509  intvec *iv=hFirstSeries((ideal)u->Data(),module_w,currQuotient,wdegree);
    53955510  switch((int)(long)v->Data())
  • Singular/table.h

    r4dfb22 r19ad278  
    116116,{D(jjHIGHCORNER), HIGHCORNER_CMD,  POLY_CMD,       IDEAL_CMD     , NO_PLURAL |ALLOW_RING}
    117117,{D(jjHIGHCORNER_M), HIGHCORNER_CMD,VECTOR_CMD,     MODUL_CMD     , NO_PLURAL |ALLOW_RING}
    118 ,{D(jjHILBERT),    HILBERT_CMD,     NONE,           IDEAL_CMD     , NO_PLURAL |NO_RING}
    119 ,{D(jjHILBERT),    HILBERT_CMD,     NONE,           MODUL_CMD     , NO_PLURAL |NO_RING}
    120 ,{D(jjHILBERT_IV), HILBERT_CMD,     INTVEC_CMD,     INTVEC_CMD    , NO_PLURAL |NO_RING}
     118,{D(jjHILBERT),    HILBERT_CMD,     NONE,           IDEAL_CMD     , NO_PLURAL |ALLOW_RING | NO_ZERODIVISOR}
     119,{D(jjHILBERT),    HILBERT_CMD,     NONE,           MODUL_CMD     , NO_PLURAL |ALLOW_RING | NO_ZERODIVISOR}
     120,{D(jjHILBERT_IV), HILBERT_CMD,     INTVEC_CMD,     INTVEC_CMD    , NO_PLURAL |ALLOW_RING | NO_ZERODIVISOR}
    121121,{D(jjHOMOG1),     HOMOG_CMD,       INT_CMD,        IDEAL_CMD     , ALLOW_PLURAL |ALLOW_RING}
    122122,{D(jjHOMOG1),     HOMOG_CMD,       INT_CMD,        MODUL_CMD     , ALLOW_PLURAL |ALLOW_RING}
     
    544544,{  jjWRONG2 ,    GCD_CMD,        POLY_CMD,       POLY_CMD,   POLY_CMD, NO_PLURAL |NO_RING}
    545545#endif
    546 ,{D(jjHILBERT2),  HILBERT_CMD,    INTVEC_CMD,     IDEAL_CMD,  INT_CMD, NO_PLURAL |NO_RING}
    547 ,{D(jjHILBERT2),  HILBERT_CMD,    INTVEC_CMD,     MODUL_CMD,  INT_CMD, NO_PLURAL |NO_RING}
     546,{D(jjHILBERT2),  HILBERT_CMD,    INTVEC_CMD,     IDEAL_CMD,  INT_CMD, NO_PLURAL | ALLOW_RING | NO_ZERODIVISOR}
     547,{D(jjHILBERT2),  HILBERT_CMD,    INTVEC_CMD,     MODUL_CMD,  INT_CMD, NO_PLURAL | ALLOW_RING | NO_ZERODIVISOR}
    548548,{D(jjHOMOG1_W),  HOMOG_CMD,      INT_CMD,        IDEAL_CMD,  INTVEC_CMD, ALLOW_PLURAL |ALLOW_RING}
    549549,{D(jjHOMOG1_W),  HOMOG_CMD,      INT_CMD,        MODUL_CMD,   INTVEC_CMD, ALLOW_PLURAL |ALLOW_RING}
     
    682682,{D(jjFIND3),          FIND_CMD,   INT_CMD,    STRING_CMD, STRING_CMD, INT_CMD, ALLOW_PLURAL |ALLOW_RING}
    683683,{D(jjFWALK3),         FWALK_CMD,  IDEAL_CMD,  RING_CMD,   DEF_CMD,    INT_CMD, NO_PLURAL |ALLOW_RING}
    684 ,{D(jjHILBERT3),       HILBERT_CMD,INTVEC_CMD, IDEAL_CMD,  INT_CMD,    INTVEC_CMD, NO_PLURAL |NO_RING}
    685 ,{D(jjHILBERT3),       HILBERT_CMD,INTVEC_CMD, MODUL_CMD,  INT_CMD,    INTVEC_CMD, NO_PLURAL |NO_RING}
     684,{D(jjHILBERT3),       HILBERT_CMD,INTVEC_CMD, IDEAL_CMD,  INT_CMD,    INTVEC_CMD, NO_PLURAL | ALLOW_RING | NO_ZERODIVISOR}
     685,{D(jjHILBERT3),       HILBERT_CMD,INTVEC_CMD, MODUL_CMD,  INT_CMD,    INTVEC_CMD, NO_PLURAL | ALLOW_RING | NO_ZERODIVISOR}
    686686,{D(jjHOMOG_P_W),      HOMOG_CMD,  POLY_CMD,   POLY_CMD,   POLY_CMD,   INTVEC_CMD, ALLOW_PLURAL |ALLOW_RING}
    687687,{D(jjHOMOG_P_W),      HOMOG_CMD,  VECTOR_CMD, VECTOR_CMD, POLY_CMD,   INTVEC_CMD, ALLOW_PLURAL |ALLOW_RING}
Note: See TracChangeset for help on using the changeset viewer.