15#include "gfanlib/config.h"
16#ifdef HAVE_CDDLIB_SETOPER_H
17#include <cddlib/setoper.h>
18#include <cddlib/cdd.h>
19#include <cddlib/cddmp.h>
21#ifdef HAVE_CDD_SETOPER_H
22#include <cdd/setoper.h>
39 lists grfan(ideal inputIdeal,
int heuristic,
bool singleCone);
41 #include "gfanlib/gfanlib.h"
42 gfan::ZFan *
grfan(ideal inputIdeal,
int h,
bool singleCone);
249 inline ideal
ffG(
const ideal &
H,
const ideal &
G);
ideal getFlipGB()
Return the flipped GB.
facet()
The default constructor.
facet * shallowCopy(const facet &f)
A shallow copy of facets.
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.
int getUCN()
Get the UCN Returns the UCN iff this != NULL, else -1.
int64vec * getFacetNormal() const
Returns the facet normal.
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 * getInteriorPoint()
int64vec * interiorPoint
An interior point of the facet.
const int64vec * getRef2FacetNormal() const
Return a reference to the facet normal.
Implements the cone structure.
STATIC_VAR dd_MatrixPtr dd_LinealitySpace
Matrix to contain the homogeneity/lineality space.
void interiorPoint(dd_MatrixPtr &M, int64vec &iv)
int64vec * getIntPoint(bool shallow=FALSE)
void noRevS(gcone &gcRoot, bool usingIntPoint=FALSE)
ideal gcBasis
Contains the Groebner basis of the cone.
void getGB(ideal const &inputIdeal)
void getExtremalRays(const gcone &gc)
ring rCopyAndAddWeight(const ring &r, int64vec *ivw)
STATIC_VAR int lengthOfSearchList
void getConeNormals(const ideal &I, bool compIntPoint=FALSE)
STATIC_VAR int maxSize
Maximum size of the searchlist.
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.
STATIC_VAR int64vec * ivZeroVector
The zero vector.
void replaceDouble_ringorder_a_ByASingleOne()
Exchange 2 ordertype_a by just 1.
STATIC_VAR int64vec * hilbertFunction
The hilbert function - for the homogeneous case.
facet * enqueue2(facet *f)
void writeConeToFile(const gcone &gc, bool usingIntPoints=FALSE)
ideal ffG(const ideal &H, const ideal &G)
facet * enqueueNewFacets(facet *f)
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 *)
ring rCopyAndAddWeight2(const ring &, const int64vec *, const int64vec *)
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)
STATIC_VAR bool hasHomInput
is the ideal homogeneous?
void makeInt(const dd_MatrixPtr &M, const int line, int64vec &n)
lists lprepareResult(gcone *gc, const int n)
gfan::ZFan * grfan(ideal inputIdeal, int h, bool singleCone)
EXTERN_VAR int gfanHeuristic