barvinok_bound: add --iterate options for evaluating evalue in each point
[barvinok.git] / lattice_point.h
blob441fd64cbe7f9c1cd7f5250565bca66d6d81d792
1 #ifndef LATTICE_POINT_H
2 #define LATTICE_POINT_H
4 #include <gmp.h>
5 #include <barvinok/polylib.h>
7 #if defined(__cplusplus)
8 extern "C" {
9 #endif
11 evalue *fractional_part(Value *coef, Value denom, int nvar, Polyhedron *PD);
13 #if defined(__cplusplus)
15 #endif
17 #if defined(__cplusplus)
19 #include <NTL/vec_ZZ.h>
20 #include <NTL/mat_ZZ.h>
22 #ifdef NTL_STD_CXX
23 using namespace NTL;
24 #endif
26 struct barvinok_options;
28 evalue *multi_monom(vec_ZZ& p);
29 int normal_mod(Value *coef, int len, Value *m);
30 void lattice_point_fixed(Value *vertex, Value *vertex_res,
31 Matrix *Rays, Matrix *Rays_res,
32 Value *point);
33 void lattice_points_fixed(Value *vertex, Value *vertex_res,
34 Matrix *Rays, Matrix *Rays_res, Matrix *points,
35 unsigned long det);
36 void lattice_point(Param_Vertices *V, const mat_ZZ& rays, vec_ZZ& num,
37 evalue **E_vertex, barvinok_options *options);
39 /* This structure encodes the power of the term in a rational generating function.
41 * Either E == NULL or constant = 0
42 * If E != NULL, then the power is E
43 * If E == NULL, then the power is constant
45 struct term_info {
46 evalue **E;
47 vec_ZZ constant;
50 void lattice_point(Param_Vertices* V, const mat_ZZ& rays, vec_ZZ& lambda,
51 term_info* term, unsigned long det,
52 barvinok_options *options);
54 #endif
56 #endif