evalue_split_domains_into_orthants: don't reduce evalue after splitting
[barvinok.git] / lattice_point.h
blob334aacc7278c11109d11caeda3f0ae7d7f5ec81f
1 #ifndef LATTICE_POINT_H
2 #define LATTICE_POINT_H
4 #include <gmp.h>
5 #include <NTL/vec_ZZ.h>
6 #include <NTL/mat_ZZ.h>
7 #include <barvinok/polylib.h>
9 #ifdef NTL_STD_CXX
10 using namespace NTL;
11 #endif
13 struct barvinok_options;
15 evalue *multi_monom(vec_ZZ& p);
16 int normal_mod(Value *coef, int len, Value *m);
17 evalue *fractional_part(Value *coef, Value denom, int nvar, Polyhedron *PD);
18 void lattice_point_fixed(Value *vertex, Value *vertex_res,
19 Matrix *Rays, Matrix *Rays_res,
20 Value *point);
21 void lattice_points_fixed(Value *vertex, Value *vertex_res,
22 Matrix *Rays, Matrix *Rays_res, Matrix *points,
23 unsigned long det);
24 void lattice_point(Param_Vertices *V, const mat_ZZ& rays, vec_ZZ& num,
25 evalue **E_vertex, barvinok_options *options);
27 /* This structure encodes the power of the term in a rational generating function.
29 * Either E == NULL or constant = 0
30 * If E != NULL, then the power is E
31 * If E == NULL, then the power is constant
33 struct term_info {
34 evalue **E;
35 vec_ZZ constant;
38 void lattice_point(Param_Vertices* V, const mat_ZZ& rays, vec_ZZ& lambda,
39 term_info* term, unsigned long det,
40 barvinok_options *options);
42 #endif