Skip to main content
Log in

Computing convex hulls and counting integer points with polymake

  • Full Length Paper
  • Published:
Mathematical Programming Computation Aims and scope Submit manuscript


The main purpose of this paper is to report on the state of the art of computing integer hulls and their facets as well as counting lattice points in convex polytopes. Using the polymake system we explore various algorithms and implementations. Our experience in this area is summarized in ten “rules of thumb”.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Subscribe and save

Springer+ Basic
EUR 32.99 /Month
  • Get 10 units per month
  • Download Article/Chapter or Ebook
  • 1 Unit = 1 Article or 1 Chapter
  • Cancel anytime
Subscribe now

Buy Now

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7
Fig. 8
Fig. 9
Fig. 10

Similar content being viewed by others


  1. 4ti2 team, 4ti2—A software package for algebraic, geometric and combinatorial problems on linear spaces. (2015)

  2. Achterberg, T.: SCIP: solving constraint integer programs. Math. Program. Comput. 1(1), 1–41. (2009)

  3. Avis, D.: lrslib, version 6.0, (2015)

  4. Avis, D., Bremner, D. and Seidel, R.: How good are convex hull algorithms? Comput. Geom. 7(5–6), 265–301 (1997) (11th ACM Symposium on Computational Geometry (Vancouver, BC, 1995))

  5. Avis, D., Fukuda, K.: A pivoting algorithm for convex hulls and vertex enumeration of arrangements and polyhedra, Discrete Comput. Geom. 8(3), 295–313 (1992) (ACM Symposium on Computational Geometry (North Conway, NH, 1991))

  6. Avis, D., Fukuda, K.: Reverse search for enumeration, Discrete Appl. Math. 65(1–3), 21–46 (1996) (First International Colloquium on Graphs and Optimization (GOI), 1992 (Grimentz))

  7. Avis, D., Imai, H., Ito, T.: Generating facets for the cut polytope of a graph by triangular elimination. Math. Program. Ser. A 112(2), 303–325 (2008)

  8. Avis, D., Jordan, C.: Comparative computational results for some vertex and facet enumeration codes, preprint arXiv:1510.02545 (2015)

  9. Bagnara, R., Hill, P. M., Zaffanella, E.: The Parma Polyhedra Library: Toward a complete set of numerical abstractions for the analysis and verification of hardware and software systems. Sci. Comp. Program. 72(1–2), 3–21 (2008)

  10. Baldoni, V., Berline, N., De Loera, J., Dutra, B., Koeppe, M., Vergne, M.: Coefficients of Sylvester’s denumerant, Integers 15, Paper No. A11 (2015)

  11. Barahona, F.: The max-cut problem on graphs not contractible to \(K_{s}\). Oper. Res. Lett. 2(3), 107–111 (1983)

  12. Barvinok, A. I.: A polynomial time algorithm for counting integral points in polyhedra when the dimension is fixed. Math. Oper. Res. 19(4), 769–779 (1994)

  13. Behle, M.: On threshold BDDs and the optimal variable ordering problem, Combinatorial Optimization and Applications. In: Andreas, D., Yinfeng, X., Binhai, Z. (eds) Lecture Notes in Computer Science, vol. 4616, pp. 124–135, Springer Berlin Heidelberg (English) (2007)

  14. Bejraburnin, N.: On facet inequalities of correlation polytopes,

  15. Karl, H.B.: Average-case analysis of the double description method and the beneath-beyond algorithm. Discrete Comput. Geom. 37(2), 175–204 (2007)

    Article  MathSciNet  MATH  Google Scholar 

  16. Bremner, D.: Incremental convex hull algorithms are not output sensitive. Discrete Comput. Geom. 21(1), 57–68 (1999)

  17. Bremner, D., Dutour Sikirić, M., Schürmann, A.: Polyhedral representation conversion up to symmetries. Polyhedral computation, CRM Proc. Lecture Notes, vol. 48, Amer. Math. Soc., Providence, RI, pp. 45–71 (2009)

  18. Bruns, W., Ichim, B., Söger, C.: The power of pyramid decomposition in Normaliz, J. Symbolic Comput. 74, 513–536 (2016)

  19. Bruns, W., Ichim, B., Söger, C., Römer, T.: Normaliz. Algorithms for rational cones and affine monoids, version 2.99.4, (2015)

  20. Chazelle, B.: An optimal convex hull algorithm in any fixed dimension. Discrete Comput. Geom. 10(4), 377–409 (1993)

  21. Chernikova, N.V.: Algorithm for finding a general formula for the non-negative solutions of system of linear equations. USSR Comput. Math. Math. Phys. 4(4), 151–158 (1964)

    Article  MATH  Google Scholar 

  22. Christof, T.: SMAPO, a library of linear descriptions of low-dimensional 0/1-polytopes connected with small instances of combinatorial optimization problems. (2010)

  23. Christof, T., Loebel, A.: PORTA, version 1.4.1-20090921. (2009)

  24. IBM Corporation, ILOG CPLEX,

  25. De Loera, J.A.: The many aspects of counting lattice points in polytopes. Math. Semesterber. 52(2), 175–195 (2005)

  26. De Loera, J.A., Berline, N., Baldoni, V., Dutra, B., Köppe, M., Moreinis, S., Pinto, G., Vergne, M., Wu, J.: A user’s guide for LattE integrale v1.7.3, software package LattE is available at, (2015)

  27. De Loera, J. A., Dutra, B., Köppe, M., Moreinis, S., Pinto, G., Wu, J.: Software for exact integration of polynomials over polyhedra. Comput. Geom. 46(3), 232–252 (2013)

  28. Dewey, C., Woods, K.: Parametric Sequence Alignment, Algebraic Statistics for Computational Biology. Cambridge Univ. Press, New York (2005)

  29. Edelsbrunner, H.: Algorithms in combinatorial geometry, EATCS Monographs on Theoretical Computer Science, vol. 10. Springer-Verlag, Berlin (1987)

  30. Koch, T. et al.: MIPLIB 2010. Math. Program. Comput. 3(2) 103–163 (english), (2011)

  31. Granlund, T. et al.: GNU multiple precision arithmetic library 5.1.2,

  32. Fukuda, K.: cddlib, version 0.94h, (2015)

  33. Fukuda, K., Prodon, A.: Double description method revisited, Combinatorics and computer science (Brest 1995), Lecture Notes in Comput. Sci., vol. 1120, pp 91–111, Springer, Berlin (1996)

  34. Garey, M. R., Johnson, D. S.: Computers and Intractability: A Guide to the Theory of NP-Completeness. W. H. Freeman & Co., New York (1979)

  35. Gawrilow, E., Joswig, M.: Polymake: a framework for analyzing convex polytopes, Polytopes–combinatorics and computation (Oberwolfach 1997), DMV Sem., vol. 29, pp. 43–73, Birkhäuser, Basel, (2000)

  36. Gawrilow, E., Joswig, M.: Flexible object hierarchies in polymake. In: Andrés, I., Nobuki, T. (eds.) Proceedings of the 2nd International Congress of Mathematical Software, 1–3. September 2006, pp. 219–221, Castro Urdiales, Spanien (2006)

  37. Ghemawat, S., Menage, P.: Thread-Caching Malloc part of the Google Performance Tools.

  38. Gurobi Optimization, Inc., Gurobi optimizer reference manual (2013)

  39. Hayes, A.C., David, G., Larman, : The vertices of the knapsack polytope. Discrete Appl. Math. 6(2), 135–138 (1983)

    Article  MathSciNet  MATH  Google Scholar 

  40. Hemmecke, R.: On the computation of Hilbert bases of cones, Mathematical software (Beijing, 2002) World Sci. Publ. River Edge, NJ 2002, pp. 307–317

  41. The MathWorks Inc., MATLAB version (r2013b),, Natick, Massachusetts (2010)

  42. Joswig, M.: Beneath-and-Beyond Revisited, Algebra, Geometry, and Software Systems. Springer, Berlin (2003)

  43. Joswig, M., Loho, G., Lorenz, B., Schröter, B.: Linear programs and convex hulls over fields of Puiseux fractions. In: Mathematical Aspects of Computer and Information Sciences: 6th International Conference, MACIS 2015, Berlin, Germany, November 11–13, 2015, Revised Selected Papers, Lecture Notes in Comput. Sci., vol. 9582, pp 429–445, Springer, Berlin (2016)

  44. Joswig, M., Theobald, T.: Polyhedral and algebraic methods in computational geometry, Universitext, Springer, London, 2013, Revised and updated translation of the 2008 German original

  45. Joswig, M., Ziegler, G. M.: Convex hulls, oracles, and homology. J. Symbolic Comput. 38(4), 1247–1259 (2004)

  46. Khachiyan, L., Boros, E., Borys, K., Elbassioni, K., Gurvich, V.: Generating all vertices of a polyhedron is hard. Discrete Comput. Geom. 39(1–3), 174–190 (2008)

  47. Klee, V., Minty, G.J.: How good is the simplex algorithm? Inequalities III. In: Proceedings of Third Symposium University California, Los Angeles, Calif., 1969; dedicated to the memory of Theodore S. Motzkin, pp. 159–175, Academic Press, New York (1972)

  48. Koeppe, M., Verdoolaege, S., Woods, K.: An implementation of the Barvinok-Woods integer projection algorithm. In: Proceedings of the International Conference on Information Theory and Statistical Learning, pp. 53–59 (2008)

  49. Köppe, M.: A primal Barvinok algorithm based on irrational decompositions. SIAM J. Discrete Math. 21(1), 220–236 (electronic) (2007)

  50. McMullen, P.: The numbers of faces of simplicial polytopes. Israel J. Math. 9, 559–570 (1971)

  51. Motzkin, T.S., Raiffa, H., Thompson, G.L., Thrall, R.M.: The double description method, Contributions to the theory of games, vol. 2, Annals of Mathematics Studies, no. 28, pp. 51–73, Princeton University Press, Princeton, (1953)

  52. Murai, S., Nevo, E.: On the generalized lower bound conjecture for polytopes and spheres. Acta Math. 210(1), 185–202 (2013)

  53. Opfer, T.: Entwicklung eines exakten rationalen dualen Simplex-Lösers, Master’s thesis, TU Darmstadt, (2011)

  54. The polymake team, Computing convex hulls and counting integer points with polymake,, Experimental data and source code (2015)

  55. The polymake team, polymake, version 2.14, (2015)

  56. Loïc, P.: The Euclidean algorithm in dimension \(n\), ISSAC ’96. Proceedings of the 1996 international symposium on Symbolic and algebraic computation, pp. 40–42 (1996)

  57. Rehn, T.: Polyhedral description conversion up to symmetries, Master’s thesis, Otto-von-Guericke-Universität Magdeburg, (2010)

  58. Schrijver, A.: Combinatorial optimization. Polyhedra and efficiency. Vol. C, Algorithms and Combinatorics, vol. 24, pp. 70–83, Springer-Verlag, Berlin, Disjoint paths, hypergraphs, Chapters (2003)

  59. Seidel, R.: A convex hull algorithm optimal for point sets in even dimensions. Tech. report, University of British Columbia, Department of Computer Science (1981)

  60. Tantau, T.: TikZ ist kein Zeichenprogramm PGF/TikZ,

  61. The CGAL Project, CGAL user and reference manual, 4.7 ed., CGAL Editorial Board, (2015)

  62. Valiant, L.G.: The complexity of enumeration and reliability problems. SIAM J. Comput. 8(3), 410–421 (1979)

    Article  MathSciNet  MATH  Google Scholar 

  63. Verdoolaege, S.: barvinok,

  64. Walter, M.: Unimodularity-test extension for polymake,

  65. Walter, M., Truemper, K.: Implementation of a unimodularity test. Math. Program. Comput. 5(1), 57–73 (2013)

  66. Ziegler, G.M.: Lectures on polytopes, Graduate Texts in Mathematics, vol. 152. Springer-Verlag, New York (1995)

Download references


We thank Thomas Opfer for contributing his implementation of the dual simplex method, originally written for his Master’s Thesis [53], to the polymake project, and this includes the code maintenance until today. Moreover, we are very grateful to the developers of cdd, lrs, normaliz and ppl as they gave us various kind of valuable feedback. The comments by David Avis and Winfried Bruns were particularly detailed. What we found most rewarding is the fact that, partially in reaction to the 2014 preprint version of this paper, the teams of lrs and normaliz published new releases of their codes. Throughout these show improvements which are sometimes very substantial, e.g., for normaliz ’ handling of non-symmetric cut polytopes. The interested reader may find it worth-while to compare the results below with that preprint version (which is still available as arXiv:1408.4653v1).

Author information

Authors and Affiliations


Corresponding author

Correspondence to Michael Joswig.

Additional information

M. Joswig, B. Lorenz and A. Paffenholz are partially supported by the DFG within the Priority Program 1489. M. Joswig is additionally supported by Einstein Foundation Berlin.


Appendix 1: Experimental setup

Everything was calculated on identical Linux machines with the memory limit set to 4 GB (via ulimit). All tests in one section were done on the same machine. Any test exceeding this bound is marked as

figure p

in the respective tables. All timings were measured in CPU seconds, except for tests on non-symmetric cut polytopes where we used wallclock time to show the performance of the multithreaded version of normaliz. Those entries marked with a \({}^*\) ran only one iteration. The hardware for all tests was:

  • CPU: AMD Phenom(tm) II X6 1090T

  • bogomips: 6421.34

  • MemTotal: 8191520 kB

All tests were done on openSUSE 13.1 (x86_64), with Linux kernel 3.11.10-25, gcc 4.9.3 and perl 5.18.1.

All tests were run through polymake version 2.15-beta3 via the respective interfaces. This creates some overhead, for instance, due to data conversion. While bb is the only implementation which is actually part of polymake, this does not constitute a principal technical advantage over the other convex hull codes tested. The libraries cddlib 0.94h, lrslib 6.0 and libnormaliz 2.99.4 (which contains the same code as version 3.0) are shipped with polymake under the GNU General Public License (GPL). As far as ppl is concerned the polymake distribution only comes with a bare interface, i.e., without the ppl code. We used the ppl library version 1.1.

The external software packages used via a file based interfaces are 4ti2 version 1.6.6, azove version 2.0, LattE version 1.7.3 and porta version 1.4.1-20090921.

The GMP was configured to use the standard memory allocator malloc. Employing a different memory allocator, such as TCMalloc [37], can have a great impact, in particular, in a multi-threaded setting. However, the precise behavior depends on numerous factors. For instance, we observed that TCMalloc was clearly superior to malloc in an openSUSE 12.2 environment, while the difference is only marginal in our setup with openSUSE 13.1, on the same hardware.

The histogram in Fig. 6 was created with MATLAB [41].

Appendix 2: Tables with detailed computational results

Table 3 Timings (in seconds) for convex hull computations of non-symmetric cut polytopes \(\mathsf {Cut}(G_k)\), see Sect. 3.3
Table 4 Running times (in seconds) for integer hull computations of Fibonacci knapsack polytopes \(F_d(b)\), see Sect. 3.4.
Table 5 Running times (in seconds) for Voronoi diagrams of random point sets, see Sect. 3.5
Table 6 Timings (in sec.) for counting lattice points in \(F_5(b)\); Sect. 4.3
Table 7 Timings (in sec.) for counting lattice points in \(F_d(60)\); Sect. 4.3
Table 8 Running times (in second) for counting lattice points in random polytopes; Sect. 4.4
Table 9 Timings (in seconds) for counting lattice points in the matching polytope of \(K_n\), see Sect. 4.5

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Assarf, B., Gawrilow, E., Herr, K. et al. Computing convex hulls and counting integer points with polymake . Math. Prog. Comp. 9, 1–38 (2017).

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI:


Mathematics Subject Classification