From d3bda80c32e48a9d9440a1dc2930cdc6e96b8930 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Thu, 20 Jul 2006 17:16:36 +0200 Subject: [PATCH] Polyhedron_is_infinite: use Polyhedron_Sample if available. --- barvinok.cc | 14 ++++++++++++++ tests/infinite3 | 13 +++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 tests/infinite3 diff --git a/barvinok.cc b/barvinok.cc index 682cc6c..86ec7cf 100644 --- a/barvinok.cc +++ b/barvinok.cc @@ -20,6 +20,7 @@ extern "C" { #include "decomposer.h" #include "lattice_point.h" #include "reduce_domain.h" +#include "sample.h" #ifdef NTL_STD_CXX using namespace NTL; @@ -1871,6 +1872,19 @@ static bool Polyhedron_is_infinite(Polyhedron *P, Value* result, unsigned MaxRay if (P->NbBid == 0 && r == P->NbRays) return false; +#ifdef HAVE_LIBGLPK + Vector *sample; + + sample = Polyhedron_Sample(P, MaxRays); + if (!sample) + value_set_si(*result, 0); + else { + value_set_si(*result, -1); + Vector_Free(sample); + } + return true; +#endif + for (int i = 0; i < P->NbRays; ++i) if (value_one_p(P->Ray[i][1+P->Dimension])) { value_set_si(*result, -1); diff --git a/tests/infinite3 b/tests/infinite3 new file mode 100644 index 0000000..006649a --- /dev/null +++ b/tests/infinite3 @@ -0,0 +1,13 @@ +D 1 +9 10 +0 4 -1 5 -1 -2 -5 0 0 1 +1 0 -97 41 3 6 15 0 0 -39 +1 0 89 -1 -3 -6 -15 0 0 203 +1 0 -23 -5 1 2 5 0 0 -157 +1 0 -7 11 -3 -6 -15 36 0 27 +1 0 5 -5 -7 -2 5 0 0 -5 +1 0 -5 5 13 -2 -5 0 0 11 +1 0 3 1 -1 -2 -1 4 0 12 +1 0 -2 -1 1 2 0 -3 1 -10 +F 0 +-1 -- 2.11.4.GIT