lattice_point.cc: implement lookup-table version in term of fractional version
[barvinok.git] / lattice_point.h
blob34654127088f0dba2a18deeb5dcbefd38e083705
1 #ifndef LATTICE_POINT_H
2 #define LATTICE_POINT_H
4 #include <gmp.h>
5 #include <NTL/vec_ZZ.h>
6 #include <barvinok/polylib.h>
8 #ifdef NTL_STD_CXX
9 using namespace NTL;
10 #endif
12 struct barvinok_options;
14 evalue *multi_monom(vec_ZZ& p);
15 int normal_mod(Value *coef, int len, Value *m);
16 void lattice_point(Value* values, const mat_ZZ& rays, vec_ZZ& vertex, int *closed);
17 void lattice_point(Value* values, const mat_ZZ& rays, mat_ZZ& vertex,
18 unsigned long det, int *closed);
19 evalue* lattice_point(const mat_ZZ& rays, vec_ZZ& lambda, Matrix *W,
20 Value lcm, Polyhedron *PD, barvinok_options *options);
21 void lattice_point(Param_Vertices *V, const mat_ZZ& rays, vec_ZZ& num,
22 evalue **E_vertex, barvinok_options *options);
24 /* This structure encodes the power of the term in a rational generating function.
26 * Either E == NULL or constant = 0
27 * If E != NULL, then the power is E
28 * If E == NULL, then the power is constant
30 struct term_info {
31 evalue *E;
32 ZZ constant;
35 void lattice_point(Param_Vertices* V, const mat_ZZ& rays, vec_ZZ& lambda,
36 term_info* term, Polyhedron *PD, barvinok_options *options);
38 #endif