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