update isl for support for recent versions of clang
[barvinok.git] / lattice_point.h
blobe62cd1e1f3a2201a001d829a5dea6e57a22e2bf5
1 #ifndef LATTICE_POINT_H
2 #define LATTICE_POINT_H
4 #include <barvinok/evalue.h>
6 #if defined(__cplusplus)
7 extern "C" {
8 #endif
10 evalue *fractional_part(Value *coef, Value denom, int nvar, Polyhedron *PD);
11 evalue *ceiling(Value *coef, Value denom, int nvar, Polyhedron *PD);
12 Matrix *relative_coordinates(Param_Vertices *V, Matrix *basis);
14 #if defined(__cplusplus)
16 #endif
18 #if defined(__cplusplus)
20 #include <NTL/vec_ZZ.h>
21 #include <NTL/mat_ZZ.h>
23 using namespace NTL;
25 struct barvinok_options;
27 evalue *multi_monom(vec_ZZ& p);
28 int normal_mod(Value *coef, int len, Value *m);
29 void lattice_point_fixed(Value *vertex, Value *vertex_res,
30 Matrix *Rays, Matrix *Rays_res,
31 Value *point);
32 void lattice_points_fixed(Value *vertex, Value *vertex_res,
33 Matrix *Rays, Matrix *Rays_res, Matrix *points,
34 unsigned long det);
35 void lattice_point(Param_Vertices *V, const mat_ZZ& rays, vec_ZZ& num,
36 evalue **E_vertex, barvinok_options *options);
38 /* This structure encodes the power of the term in a rational generating function.
40 * Either E == NULL or constant = 0
41 * If E != NULL, then the power is E
42 * If E == NULL, then the power is constant
44 struct term_info {
45 evalue **E;
46 vec_ZZ constant;
49 void lattice_point(Param_Vertices* V, const mat_ZZ& rays, vec_ZZ& lambda,
50 term_info* term, unsigned long det,
51 barvinok_options *options);
53 #endif
55 #endif