Changeset a73fae in git


Ignore:
Timestamp:
Oct 26, 2013, 5:54:56 PM (9 years ago)
Author:
Yue Ren <ren@…>
Branches:
(u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'a800fe4b3e9d37a38c5a10cc0ae9dfa0c15a4ee6')
Children:
d770e6a687e6451b6e42d8b59cf74426e947eaf0
Parents:
97351e66f70a4390d6f911ee38436e695b8ec551
git-author:
Yue Ren <ren@mathematik.uni-kl.de>2013-10-26 17:54:56+02:00
git-committer:
Yue Ren <ren@mathematik.uni-kl.de>2015-02-06 13:47:01+01:00
Message:
chg: moved all routines for tropical geometry to tropical.cc/.h
Location:
Singular/dyn_modules/gfanlib
Files:
2 added
2 edited

Legend:

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

    r97351e6 ra73fae  
    99#include <coeffs/longrat.h>
    1010
    11 #include <Singular/ipid.h>
    1211#include <Singular/ipid.h>
    1312#include <Singular/ipshell.h>
    1413#include <Singular/blackbox.h>
    1514
    16 // #include <omalloc/omalloc.h>
    17 // #include <kernel/intvec.h>
    18 // #include <kernel/longrat.h>
    19 // #include <Singular/lists.h>
    20 // #include <Singular/subexpr.h>
     15#include <sstream>
    2116
    2217#include <gfanlib/gfanlib.h>
     
    109104    delete gi;
    110105  }
     106  return zv;
     107}
     108
     109gfan::ZVector intStar2ZVector(const int d, const int* i)
     110{
     111  gfan::ZVector zv(d);
     112  for(int j=0; j<d; j++)
     113    zv[j]=i[j+1];
    111114  return zv;
    112115}
     
    15931596}
    15941597
    1595 gfan::ZVector intStar2ZVector(const int d, const int* i)
    1596 {
    1597   gfan::ZVector zv(d);
    1598   for(int j=0; j<d; j++)
    1599     zv[j]=i[j+1];
    1600   return zv;
    1601 }
    1602 
    1603 BOOLEAN maximalGroebnerCone(leftv res, leftv args)
    1604 {
    1605   leftv u = args;
    1606   if ((u != NULL) && (u->Typ() == IDEAL_CMD))
    1607   {
    1608     leftv v = u->next;
    1609     if (v == NULL)
    1610     {
    1611       int n = currRing->N;
    1612       ideal I = (ideal) u->Data();
    1613       poly g = NULL;
    1614       int* leadexpv = (int*) omAlloc((n+1)*sizeof(int));
    1615       int* tailexpv = (int*) omAlloc((n+1)*sizeof(int));
    1616       gfan::ZVector leadexpw = gfan::ZVector(n);
    1617       gfan::ZVector tailexpw = gfan::ZVector(n);
    1618       gfan::ZMatrix inequalities = gfan::ZMatrix(0,n);
    1619       for (int i=0; i<IDELEMS(I); i++)
    1620       {
    1621         g = (poly) I->m[i]; pGetExpV(g,leadexpv);
    1622         leadexpw = intStar2ZVector(n, leadexpv);
    1623         pIter(g);
    1624         while (g != NULL)
    1625         {
    1626           pGetExpV(g,tailexpv);
    1627           tailexpw = intStar2ZVector(n, tailexpv);
    1628           inequalities.appendRow(leadexpw-tailexpw);
    1629           pIter(g);
    1630         }
    1631       }
    1632       gfan::ZCone* gCone = new gfan::ZCone(inequalities,gfan::ZMatrix(0, inequalities.getWidth()));
    1633       omFreeSize(leadexpv,(n+1)*sizeof(int));
    1634       omFreeSize(tailexpv,(n+1)*sizeof(int));
    1635 
    1636       res->rtyp = coneID;
    1637       res->data = (void*) gCone;
    1638       return FALSE;
    1639     }
    1640   }
    1641   WerrorS("maximalGroebnerCone: unexpected parameters");
    1642   return TRUE;
    1643 }
    1644 
    16451598
    16461599lists listOfFacets(const gfan::ZCone &zc)
     
    16961649
    16971650
    1698 poly initial(poly p)
    1699 {
    1700   poly g = p;
    1701   poly h = p_Head(g,currRing);
    1702   poly f = h;
    1703   long d = p_Deg(g,currRing);
    1704   pIter(g);
    1705   while ((g != NULL) && (p_Deg(g,currRing) == d))
    1706   {
    1707     pNext(h) = p_Head(g,currRing);
    1708     pIter(h);
    1709     pIter(g);
    1710   }
    1711   return(f);
    1712 }
    1713 
    1714 
    1715 BOOLEAN initial(leftv res, leftv args)
    1716 {
    1717   leftv u = args;
    1718   if ((u != NULL) && (u->Typ() == POLY_CMD))
    1719   {
    1720     leftv v = u->next;
    1721     if (v == NULL)
    1722     {
    1723       poly p = (poly) u->Data();
    1724       res->rtyp = POLY_CMD;
    1725       res->data = (void*) initial(p);
    1726       return FALSE;
    1727     }
    1728   }
    1729   if ((u != NULL) && (u->Typ() == IDEAL_CMD))
    1730   {
    1731     leftv v = u->next;
    1732     if (v == NULL)
    1733     {
    1734       ideal I = (ideal) u->Data();
    1735       ideal inI = idInit(IDELEMS(I));
    1736       poly g;
    1737       for (int i=0; i<IDELEMS(I); i++)
    1738       {
    1739         g = (poly) I->m[i];
    1740         inI->m[i]=initial(g);
    1741       }
    1742       res->rtyp = IDEAL_CMD;
    1743       res->data = (void*) inI;
    1744       return FALSE;
    1745     }
    1746   }
    1747   WerrorS("initial: unexpected parameters");
    1748   return TRUE;
    1749 }
    1750 
    1751 
    1752 BOOLEAN homogeneitySpace(leftv res, leftv args)
    1753 {
    1754   leftv u = args;
    1755   if ((u != NULL) && (u->Typ() == IDEAL_CMD))
    1756   {
    1757     leftv v = u->next;
    1758     if (v == NULL)
    1759     {
    1760       int n = currRing->N;
    1761       ideal I = (ideal) u->Data();
    1762       poly g;
    1763       int* leadexpv = (int*) omAlloc((n+1)*sizeof(int));
    1764       int* tailexpv = (int*) omAlloc((n+1)*sizeof(int));
    1765       gfan::ZVector leadexpw = gfan::ZVector(n);
    1766       gfan::ZVector tailexpw = gfan::ZVector(n);
    1767       gfan::ZMatrix equations = gfan::ZMatrix(0,n);
    1768       for (int i=0; i<IDELEMS(I); i++)
    1769       {
    1770         g = (poly) I->m[i]; pGetExpV(g,leadexpv);
    1771         leadexpw = intStar2ZVector(n, leadexpv);
    1772         pIter(g);
    1773         while (g != NULL)
    1774         {
    1775           pGetExpV(g,tailexpv);
    1776           tailexpw = intStar2ZVector(n, tailexpv);
    1777           equations.appendRow(leadexpw-tailexpw);
    1778           pIter(g);
    1779         }
    1780       }
    1781       gfan::ZCone* gCone = new gfan::ZCone(gfan::ZMatrix(0, equations.getWidth()),equations);
    1782       omFreeSize(leadexpv,(n+1)*sizeof(int));
    1783       omFreeSize(tailexpv,(n+1)*sizeof(int));
    1784 
    1785       res->rtyp = coneID;
    1786       res->data = (void*) gCone;
    1787       return FALSE;
    1788     }
    1789   }
    1790   WerrorS("homogeneitySpace: unexpected parameters");
    1791   return TRUE;
    1792 }
    1793 
    1794 
    1795 BOOLEAN groebnerCone(leftv res, leftv args)
    1796 {
    1797   leftv u = args;
    1798   if ((u != NULL) && (u->Typ() == IDEAL_CMD))
    1799   {
    1800     leftv v = u->next;
    1801     if (v == NULL)
    1802     {
    1803       int n = currRing->N;
    1804       ideal I = (ideal) u->Data();
    1805       poly g = NULL;
    1806       int* leadexpv = (int*) omAlloc((n+1)*sizeof(int));
    1807       int* tailexpv = (int*) omAlloc((n+1)*sizeof(int));
    1808       gfan::ZVector leadexpw = gfan::ZVector(n);
    1809       gfan::ZVector tailexpw = gfan::ZVector(n);
    1810       gfan::ZMatrix inequalities = gfan::ZMatrix(0,n);
    1811       gfan::ZMatrix equations = gfan::ZMatrix(0,n);
    1812       long d;
    1813       for (int i=0; i<IDELEMS(I); i++)
    1814       {
    1815         g = (poly) I->m[i]; pGetExpV(g,leadexpv);
    1816         leadexpw = intStar2ZVector(n, leadexpv);
    1817         pIter(g);
    1818         d = p_Deg(g,currRing);
    1819         while ((g != NULL) && (p_Deg(g,currRing) == d))
    1820         {
    1821           pGetExpV(g,tailexpv);
    1822           tailexpw = intStar2ZVector(n, tailexpv);
    1823           equations.appendRow(leadexpw-tailexpw);
    1824           pIter(g);
    1825         }
    1826 
    1827         if (g != NULL)
    1828         {
    1829           while (g != NULL)
    1830           {
    1831             pGetExpV(g,tailexpv);
    1832             tailexpw = intStar2ZVector(n, tailexpv);
    1833             inequalities.appendRow(leadexpw-tailexpw);
    1834             pIter(g);
    1835           }
    1836         }
    1837       }
    1838       gfan::ZCone* gCone = new gfan::ZCone(inequalities,equations);
    1839       omFreeSize(leadexpv,(n+1)*sizeof(int));
    1840       omFreeSize(tailexpv,(n+1)*sizeof(int));
    1841 
    1842       res->rtyp = coneID;
    1843       res->data = (void*) gCone;
    1844       return FALSE;
    1845     }
    1846   }
    1847   WerrorS("groebnerCone: unexpected parameters");
    1848   return TRUE;
    1849 }
    1850 
    18511651/***
    18521652 * Given a cone and a point in its boundary,
    18531653 * returns the inner normal vector of a facet
    18541654 * containing the point.
     1655 * Unless the point is in the relative interior of the facet
     1656 * the facet is not unique.
    18551657 * In case no facet contains the point,
    18561658 * then 0 is returned.
     
    19591761  p->iiAddCproc("","listContainsCone",FALSE,containsCone);
    19601762  p->iiAddCproc("","listOfFacets",FALSE,listOfFacets);
    1961   p->iiAddCproc("","maximalGroebnerCone",FALSE,maximalGroebnerCone);
    1962   p->iiAddCproc("","groebnerCone",FALSE,groebnerCone);
    1963   p->iiAddCproc("","initial",FALSE,initial);
    1964   p->iiAddCproc("","homogeneitySpace",FALSE,homogeneitySpace);
    19651763  p->iiAddCproc("","facetContaining",FALSE,facetContaining);
    19661764  coneID=setBlackboxStuff(b,"cone");
  • Singular/dyn_modules/gfanlib/gfanlib.cc

    r97351e6 ra73fae  
    77#include <bbpolytope.h>
    88#include <gitfan.h>
     9#include <tropical.h>
    910
    1011#include <Singular/ipid.h>
     
    2324  bbpolytope_setup(p);
    2425  gitfan_setup(p);
     26  tropical_setup(p);
    2527  return MAX_TOK;
    2628}
Note: See TracChangeset for help on using the changeset viewer.