Changeset b6b3d3 in git


Ignore:
Timestamp:
Feb 12, 2015, 11:53:35 AM (9 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', 'd08f5f0bb3329b8ca19f23b74cb1473686415c3a')
Children:
9b46beddf45e066826f54f9c45475d22b6acfa15
Parents:
ba68419b3ac117ee2dadc0972c99d83101aa359be5fd095e7959549d6a23e7b4b88e0c4e818f0586
Message:
Merge pull request #697 from YueRen/tropicalstuff

chg: allow users to pass dp and ds as orderings + code cleanup suggested by Hans and Oleksandr
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • Singular/dyn_modules/gfanlib/bbfan.cc

    rba6841 rb6b3d3  
    127127  int rr = iv->rows();
    128128  bigintmat* ivCopy = new bigintmat(rr, cc, coeffs_BIGINT);
     129  number temp1 = n_Init(1,coeffs_BIGINT);
    129130  for (int r = 1; r <= rr; r++)
    130131    for (int c = 1; c <= cc; c++)
    131132    {
    132       number temp1 = n_Init(1,coeffs_BIGINT);
    133133      number temp2 = n_Sub(IMATELEM(*iv, r, c),temp1,coeffs_BIGINT);
    134134      ivCopy->set(r,c,temp2);
    135       n_Delete(&temp1,coeffs_BIGINT);
    136135      n_Delete(&temp2,coeffs_BIGINT);
    137136    }
     137  n_Delete(&temp1,coeffs_BIGINT);
    138138  gfan::ZMatrix* zm = bigintmatToZMatrix(ivCopy);
    139139  gfan::IntMatrix im = gfan::IntMatrix(gfan::ZToIntMatrix(*zm));
     
    463463}
    464464
    465 BOOLEAN coneContaining(leftv res, leftv args)
    466 {
    467   leftv u=args;
    468   if ((u != NULL) && (u->Typ() == fanID))
    469   {
    470     leftv v=u->next;
    471     if ((v != NULL) && ((v->Typ() == BIGINTMAT_CMD) || (v->Typ() == INTVEC_CMD)))
    472     {
    473       gfan::ZFan* zf = (gfan::ZFan*)u->Data();
    474       gfan::ZVector* point;
    475       if (v->Typ() == INTVEC_CMD)
    476       {
    477         intvec* w0 = (intvec*) v->Data();
    478         bigintmat* w1 = iv2bim(w0,coeffs_BIGINT);
    479         w1->inpTranspose();
    480         point = bigintmatToZVector(*w1);
    481         delete w1;
    482       }
    483       else
    484       {
    485         bigintmat* w1 = (bigintmat*) v->Data();
    486         point = bigintmatToZVector(*w1);
    487       }
    488       lists L = (lists)omAllocBin(slists_bin);
    489       res->rtyp = LIST_CMD;
    490       res->data = (void*) L;
    491       delete point;
    492       return FALSE;
    493     }
    494   }
    495   WerrorS("coneContaining: unexpected parameters");
    496   return TRUE;
    497 }
     465// BOOLEAN coneContaining(leftv res, leftv args)
     466// {
     467//   leftv u=args;
     468//   if ((u != NULL) && (u->Typ() == fanID))
     469//   {
     470//     leftv v=u->next;
     471//     if ((v != NULL) && ((v->Typ() == BIGINTMAT_CMD) || (v->Typ() == INTVEC_CMD)))
     472//     {
     473//       gfan::ZFan* zf = (gfan::ZFan*)u->Data();
     474//       gfan::ZVector* point;
     475//       if (v->Typ() == INTVEC_CMD)
     476//       {
     477//         intvec* w0 = (intvec*) v->Data();
     478//         bigintmat* w1 = iv2bim(w0,coeffs_BIGINT);
     479//         w1->inpTranspose();
     480//         point = bigintmatToZVector(*w1);
     481//         delete w1;
     482//       }
     483//       else
     484//       {
     485//         bigintmat* w1 = (bigintmat*) v->Data();
     486//         point = bigintmatToZVector(*w1);
     487//       }
     488//       lists L = (lists)omAllocBin(slists_bin);
     489//       res->rtyp = LIST_CMD;
     490//       res->data = (void*) L;
     491//       delete point;
     492//       return FALSE;
     493//     }
     494//   }
     495//   WerrorS("coneContaining: unexpected parameters");
     496//   return TRUE;
     497// }
    498498
    499499BOOLEAN removeCone(leftv res, leftv args)
  • Singular/dyn_modules/gfanlib/tropical.cc

    rba6841 rb6b3d3  
    6767
    6868
     69gfan::ZCone lowerHomogeneitySpace(ideal I, ring r)
     70{
     71  int n = rVar(r);
     72  poly g;
     73  int* leadexpv = (int*) omAlloc((n+1)*sizeof(int));
     74  int* tailexpv = (int*) omAlloc((n+1)*sizeof(int));
     75  gfan::ZVector leadexpw = gfan::ZVector(n);
     76  gfan::ZVector tailexpw = gfan::ZVector(n);
     77  gfan::ZMatrix equations = gfan::ZMatrix(0,n);
     78  for (int i=0; i<IDELEMS(I); i++)
     79  {
     80    g = (poly) I->m[i];
     81    if (g)
     82    {
     83      p_GetExpV(g,leadexpv,r);
     84      leadexpw = intStar2ZVector(n,leadexpv);
     85      pIter(g);
     86      while (g)
     87      {
     88        p_GetExpV(g,tailexpv,r);
     89        tailexpw = intStar2ZVector(n,tailexpv);
     90        equations.appendRow(leadexpw-tailexpw);
     91        pIter(g);
     92      }
     93    }
     94  }
     95  gfan::ZMatrix inequalities = gfan::ZMatrix(0,n);
     96  gfan::ZVector lowerHalfSpaceCondition = gfan::ZVector(n);
     97  lowerHalfSpaceCondition[0] = -1;
     98  inequalities.appendRow(lowerHalfSpaceCondition);
     99
     100  omFreeSize(leadexpv,(n+1)*sizeof(int));
     101  omFreeSize(tailexpv,(n+1)*sizeof(int));
     102  return gfan::ZCone(inequalities,equations);
     103}
     104
     105
     106BOOLEAN lowerHomogeneitySpace(leftv res, leftv args)
     107{
     108  leftv u = args;
     109  if ((u != NULL) && (u->Typ() == IDEAL_CMD))
     110  {
     111    leftv v = u->next;
     112    if (v == NULL)
     113    {
     114      ideal I = (ideal) u->Data();
     115      res->rtyp = coneID;
     116      res->data = (void*) new gfan::ZCone(lowerHomogeneitySpace(I,currRing));
     117      return FALSE;
     118    }
     119  }
     120  WerrorS("lowerHomogeneitySpace: unexpected parameters");
     121  return TRUE;
     122}
     123
     124
    69125gfan::ZCone groebnerCone(const ideal I, const ring r, const gfan::ZVector &w)
    70126{
     
    268324  p->iiAddCproc("","maximalGroebnerCone",FALSE,maximalGroebnerCone);
    269325  p->iiAddCproc("","homogeneitySpace",FALSE,homogeneitySpace);
     326  p->iiAddCproc("","lowerHomogeneitySpace",FALSE,lowerHomogeneitySpace);
    270327  p->iiAddCproc("","initial",FALSE,initial);
    271328  // p->iiAddCproc("","tropicalNeighbours",FALSE,tropicalNeighbours);
  • Singular/dyn_modules/gfanlib/tropicalStrategy.cc

    rba6841 rb6b3d3  
    174174  s->wvhdl[0] = (int*) omAlloc(n*sizeof(int));
    175175  s->wvhdl[0][0] = 1;
    176   for (int i=1; i<n; i++)
    177     s->wvhdl[0][i] = -(r->wvhdl[0][i-1]);
     176  if (r->order[0] == ringorder_dp)
     177  {
     178    for (int i=1; i<n; i++)
     179      s->wvhdl[0][i] = -1;
     180  }
     181  else if (r->order[0] == ringorder_ds)
     182  {
     183    for (int i=1; i<n; i++)
     184      s->wvhdl[0][i] = 1;
     185  }
     186  else if (r->order[0] == ringorder_ws)
     187  {
     188    for (int i=1; i<n; i++)
     189      s->wvhdl[0][i] = r->wvhdl[0][i-1];
     190  }
     191  else
     192  {
     193    for (int i=1; i<n; i++)
     194      s->wvhdl[0][i] = -r->wvhdl[0][i-1];
     195  }
    178196  s->order[1] = ringorder_C;
    179197
     
    182200  return s;
    183201}
    184 
    185 #if 0 /*unused*/
    186 static ring writeOrderingAsWP(ring r)
    187 {
    188   assume(r->order[0]==ringorder_wp || r->order[0]==ringorder_dp);
    189   if (r->order[0]==ringorder_dp)
    190   {
    191     ring s = rCopy0(r,FALSE,TRUE);
    192     rComplete(s);
    193     rTest(s);
    194     return s;
    195   }
    196   return rCopy(r);
    197 }
    198 #endif
    199202
    200203static ideal constructStartingIdeal(ideal originalIdeal, ring originalRing, number uniformizingParameter, ring startingRing)
     
    222225  omFreeSize(shiftByOne,(n+1)*sizeof(int));
    223226
    224   ring origin = currRing;
    225   rChangeCurrRing(startingRing);
    226   ideal startingIdeal = kNF(pt,startingRing->qideal,J);
    227   rChangeCurrRing(origin);
     227  // ring origin = currRing;
     228  // rChangeCurrRing(startingRing);
     229  // ideal startingIdeal = kNF(pt,startingRing->qideal,J);
     230  // rChangeCurrRing(origin);
     231  ideal startingIdeal = J; J = NULL;
    228232  assume(startingIdeal->m[k]==NULL);
    229233  startingIdeal->m[k] = pt->m[0];
     
    867871  originalIdeal(NULL),
    868872  expectedDimension(NULL),
    869   linealitySpace(gfan::ZCone()), // to come, see below
    870   startingRing(NULL),            // to come, see below
    871   startingIdeal(NULL),           // to come, see below
    872   uniformizingParameter(NULL),   // to come, see below
    873   shortcutRing(NULL),            // to come, see below
     873  linealitySpace(gfan::ZCone()),
     874  startingRing(NULL),
     875  startingIdeal(NULL),
     876  uniformizingParameter(NULL),
     877  shortcutRing(NULL),
    874878  onlyLowerHalfSpace(false)
    875879{
  • Singular/dyn_modules/gfanlib/tropicalVariety.cc

    rba6841 rb6b3d3  
    8989    {
    9090      setOptionRedSB();
    91       ideal stdI;
    92       if (!hasFlag(u,FLAG_STD))
    93         stdI = gfanlib_kStd_wrapper(I,currRing);
    94       else
    95         stdI = id_Copy(I,currRing);
     91      // ideal stdI;
     92      // if (!hasFlag(u,FLAG_STD))
     93      //   stdI = gfanlib_kStd_wrapper(I,currRing);
     94      // else
     95      //   stdI = id_Copy(I,currRing);
    9696      tropicalStrategy currentStrategy(I,currRing);
    9797      gfan::ZFan* tropI = tropicalVariety(currentStrategy);
     
    9999      res->data = (char*) tropI;
    100100      undoSetOptionRedSB();
    101       id_Delete(&stdI,currRing);
     101      // id_Delete(&stdI,currRing);
    102102      return FALSE;
    103103    }
     
    105105    {
    106106      number p = (number) v->Data();
    107       ideal stdI;
    108       if (!hasFlag(u,FLAG_STD))
    109         stdI = gfanlib_kStd_wrapper(I,currRing);
    110       else
    111         stdI = id_Copy(I,currRing);
    112       tropicalStrategy currentStrategy(stdI,p,currRing);
    113       // tropicalStrategy currentStrategy(I,p,currRing);
     107      // ideal stdI;
     108      // if (!hasFlag(u,FLAG_STD))
     109      //   stdI = gfanlib_kStd_wrapper(I,currRing);
     110      // else
     111      //   stdI = id_Copy(I,currRing);
     112      // tropicalStrategy currentStrategy(stdI,p,currRing);
     113      tropicalStrategy currentStrategy(I,p,currRing);
    114114      gfan::ZFan* tropI = tropicalVariety(currentStrategy);
    115115      res->rtyp = fanID;
    116116      res->data = (char*) tropI;
    117       id_Delete(&stdI,currRing);
     117      // id_Delete(&stdI,currRing);
    118118      return FALSE;
    119119    }
  • gfanlib/gfanlib_zcone.cpp

    rba6841 rb6b3d3  
    2323#include <setoper.h>
    2424#include <cdd.h>
    25 #endif
    26 #endif
     25#endif //HAVE_CDDLIB_SETOPER_H
     26#endif //HAVE_CDD_SETOPER_H
    2727
    2828namespace gfan{
Note: See TracChangeset for help on using the changeset viewer.