15 #include "gfanlib/config.h"
16 #ifdef HAVE_CDD_SETOPER_H
17 #include <cdd/setoper.h>
19 #include <cdd/cddmp.h>
20 #elif HAVE_CDDLIB_SETOPER_H
21 #include <cddlib/setoper.h>
22 #include <cddlib/cdd.h>
23 #include <cddlib/cddmp.h>
37 lists grfan(ideal inputIdeal,
int heuristic,
bool singleCone);
39 #include "gfanlib/gfanlib.h"
40 gfan::ZFan *
grfan(ideal inputIdeal,
int h,
bool singleCone);
154 static float time_getConeNormals;
155 static float time_getCodim2Normals;
156 static float t_getExtremalRays;
157 static float t_ddPolyh;
158 static float time_flip;
159 static float time_flip2;
160 static float t_areEqual;
162 static float t_markings;
165 static float time_enqueue;
166 static float time_computeInv;
170 static float t_isParallel;
171 static unsigned parallelButNotEqual;
172 static unsigned numberOfFacetChecks;
247 inline ideal
ffG(
const ideal &
H,
const ideal &
G);
ideal getFlipGB()
Return the flipped GB.
facet()
The default constructor.
facet(const int &n)
Constructor for lower dimensional faces.
volatile void fDebugPrint()
Debugging function prints the facet normal an all (codim-2)-facets that belong to it.
bool isFlippable
Boolean value to indicate whether a facet is flippable or not This is also used to mark facets that n...
int UCN
Universal Cone Number The number of the cone the facet belongs to, Set in getConeNormals()
void setFlipGB(ideal I)
Store the flipped GB.
facet(const facet &f)
The copy constructor.
void printFlipGB()
Print the flipped GB.
short codim
The codim of the facet.
void setFacetNormal(int64vec *iv)
Comparison operator.
void setInteriorPoint(int64vec *iv)
Store an interior point of the facet.
const int64vec * getRef2InteriorPoint()
void printNormal() const
Method to print the facet normal.
void setUCN(int n)
Set the UCN.
~facet()
The default destructor.
const int64vec * getRef2FacetNormal() const
Return a reference to the facet normal.
int64vec * getInteriorPoint()
int getUCN()
Get the UCN Returns the UCN iff this != NULL, else -1.
facet * shallowCopy(const facet &f)
A shallow copy of facets.
int64vec * fNormal
Inner normal of the facet, describing it uniquely up to isomorphism.
ideal flipGB
The Groebner basis on the other side of a shared facet.
int64vec * getFacetNormal() const
Returns the facet normal.
int64vec * interiorPoint
An interior point of the facet.
Implements the cone structure.
int64vec * getIntPoint(bool shallow=FALSE)
static int lengthOfSearchList
static bool hasHomInput
is the ideal homogeneous?
void interiorPoint(dd_MatrixPtr &M, int64vec &iv)
static int64vec * hilbertFunction
The hilbert function - for the homogeneous case.
void noRevS(gcone &gcRoot, bool usingIntPoint=FALSE)
ideal gcBasis
Contains the Groebner basis of the cone.
facet * enqueueNewFacets(facet *f)
void getGB(ideal const &inputIdeal)
void getExtremalRays(const gcone &gc)
ring rCopyAndAddWeight(const ring &r, int64vec *ivw)
void getConeNormals(const ideal &I, bool compIntPoint=FALSE)
static int64vec * ivZeroVector
The zero vector.
facet * facetPtr
Pointer to the first facet.
dd_MatrixPtr computeLinealitySpace()
Compute the lineality space Ax=0 and return it as dd_MatrixPtr dd_LinealitySpace.
void computeInv(const ideal &gb, ideal &inv, const int64vec &f)
void flip2(const ideal &gb, facet *f)
gcone(const gcone &gc, const facet &f)
dd_MatrixPtr ddFacets
At least as a workaround we store the irredundant facets of a matrix here.
void replaceDouble_ringorder_a_ByASingleOne()
Exchange 2 ordertype_a by just 1.
static int maxSize
Maximum size of the searchlist.
void writeConeToFile(const gcone &gc, bool usingIntPoints=FALSE)
ideal ffG(const ideal &H, const ideal &G)
void setIntPoint(int64vec *iv)
int64vec ** gcRays
Array of intvecs representing the rays of the cone.
volatile void showFacets(short codim=1)
bool iv64isStrictlyPositive(const int64vec *)
facet * enqueue2(facet *f)
ring rCopyAndAddWeight2(const ring &, const int64vec *, const int64vec *)
static dd_MatrixPtr dd_LinealitySpace
Matrix to contain the homogeneity/lineality space.
int64vec f2M(gcone *gc, facet *f, int n=1)
void flip(ideal gb, facet *f)
void preprocessInequalities(dd_MatrixPtr &M)
void readConeFromFile(int gcNum, gcone *gc)
void getCodim2Normals(const gcone &gc)
void makeInt(const dd_MatrixPtr &M, const int line, int64vec &n)
gfan::ZFan * grfan(ideal inputIdeal, int h, bool singleCone)
lists lprepareResult(gcone *gc, const int n)