doc: document extra occ operations
[barvinok.git] / polymake / lattice_points.cc
blob053fd2746bbf8a98b422c73a90aff346b4698653
1 #include <gmp.h>
2 #include <cstdlib>
3 #include <Rational.h>
4 #include <Poly.h>
5 #include <Matrix.h>
6 extern "C" {
7 #include <polylib/polylibgmp.h>
9 #include <barvinok/barvinok.h>
10 #include "convert.h"
12 namespace polymake { namespace polytope {
14 void lattice_points(Poly& p)
16 Value cb;
17 Matrix<Rational> F = p.give("FACETS | INEQUALITIES");
18 ::Matrix *M = polymake_constraints2polylib(F);
19 Polyhedron *A = Constraints2Polyhedron(M, 0);
20 Matrix_Free(M);
21 value_init(cb);
22 barvinok_count(A, &cb, 0);
23 Polyhedron_Free(A);
24 Integer count(cb);
25 value_clear(cb);
26 p.take("LATTICE_POINTS") << count;
29 } }
31 using namespace polymake;
33 int main(int argc, const char *argv[])
35 if (argc != 2) {
36 return 1;
38 try {
39 Poly p(argv[1], ios::in | ios::out);
40 polytope::lattice_points(p);
41 } catch (const std::exception& e) {
42 cerr << e.what() << endl;
43 return 1;
45 return 0;