Normaliz is a open source tool for computations in affine monoids, vector configurations, lattice polytopes, and rational cones.
C++ CMake M4 Makefile Shell Dockerfile
Clone or download
Winfried Bruns
Winfried Bruns Even better ?
Latest commit d551487 Jul 20, 2018
Failed to load latest commit information.
Docker Some more NotComputableException Jul 20, 2018
Macaulay2 Normaliz.m2: keep backward compatibility Mar 4, 2016
Qexample Symbolic constraints in QNormaliz implemented Apr 28, 2018
Qplayground Corrections to project-and-lift Apr 22, 2018
Qsource Manual adapted to new treatment of polytopes Jul 15, 2018
Qtest Simplification of Travis builds May 6, 2018
Singular Quick test for normaliz.lib added Jul 20, 2018
doc Even better ? Jul 20, 2018
example Tests of new features Jun 27, 2018
m4 Refactored flint-checking in configure Jun 7, 2018
playground Special volume algorithm for parallelotopes Jun 27, 2018
source Some more NotComputableException Jul 20, 2018
test Extreme rays repaired Jul 17, 2018
tools Tool transpose added. Some verbose output removed. Jul 9, 2014
.gitignore Installation in local May 2, 2018 set back May 14, 2018 Refactored flint-checking in configure Jun 7, 2018
.travis.yml Better Mac static May 25, 2018
.travis_ci_bindist_deploy_key.enc New key for binary deployment Apr 2, 2018
CHANGELOG Update of docummentation Jul 6, 2018
COPYING Hide after configure May 7, 2018
Dockerfile Updated Dockerfile to use PyNormaliz install script Jul 17, 2018
INSTALL PyQNormaliz in manual May 25, 2018 Merge branch 'master' of Jul 17, 2018 Passage to 3.5.0 Nov 30, 2017 Once more Jul 20, 2018 Add --force option to autoreconf Jul 21, 2016 3.6.1 --> 3.6.2 Jul 17, 2018 Better LDFLAGS May 10, 2018 curl --> wget May 31, 2018 curl --> wget May 31, 2018 Little improvements May 28, 2018 curl --> wget May 31, 2018 curl --> wget May 31, 2018 Merge branch 'master' of May 25, 2018 Restore to non-eantic operation; new ins… Apr 9, 2018 Restore to use stable FLINT; new install_nmz_fli… Apr 9, 2018 Updated Dockerfile to use PyNormaliz install script Jul 17, 2018

Normaliz - a tool for discrete convex geometry

Normaliz is a open source tool for computations in affine monoids, vector configurations, rational polyhedar and rational cones. The variant QNormaliz now computes algebraic polyhedra, i.e., polyhedra defined over real algebraic extensions of QQ.

Computation goals

  • convex hulls and dual cones
  • conversion from generators to constraints and vice versa
  • projections of cones and polyhedra
  • triangulations, disjoint decompositions and Stanley decompositions
  • Hilbert basis of rational, not necessarily pointed cones
  • normalization of affine monoids
  • lattice points of rational polytopes and (unbounded) polyhedra
  • Euclidean and lattice normalized volumes of polytopes
  • Hilbert (or Ehrhart) series and (quasi) polynomials under Z-gradings (for example, for rational polytopes)
  • generalized (or weighted) Ehrhart series and Lebesgue integrals of - polynomials over rational polytopes

Normaliz offers the API libnormaliz that allows the user to access tNormaliz computations from any C++ program.

The frontend Normaliz reads input files and writes output files. There is a wide variety of input types to specify polyhedra and lattices by generators (vertices, extreme rays) or by constraints (inequalities, equations and congruences). The user sets computation goals and chooses algorithmic variants through comman line options.

Online exploration of Normaliz:

Sample input and output

The file from the directory example contains

amb_space 2
cone 2
1 3
 2 1

It defines a cone in two-dimensional real space by its extreme rays. 2-dimensional cone

The command

normaliz example/2cone

runs Normaliz with its default computation goals. Ot produces the output file 2cone.out (here typeset in two columns):

4 Hilbert basis elements          embedding dimension = 2
2 extreme rays                    rank = 2 (maximal)
2 support hyperplanes             external index = 1
                                  internal index = 5
                                  original monoid is not integrally closed

size of triangulation   = 1       rank of class group = 0
resulting sum of |det|s = 5       finite cyclic summands:
                                  5: 1  
No implicit grading found


4 Hilbert basis elements:         2 extreme rays:
 1 1                               1 3
 1 2                               2 1
 1 3
 2 1                              2 support hyperplanes:
                                   -1  2
                                    3 -1


Each releae contains executables for Linux 64, MacOS X and MS Windows 64.


Normaliz can be called from several other systems:

The Python packages PyNormaliz and PyQNormaliz provide an envirinment for interactive access. They are part of the Normaliz repository.

jNormaliz provides a GUI to Normaliz


Optional packages

For its basic functionality Normaliz needs only GMP and Boost. Pararllelization is based on OpenMP. For the computation of integrals CoCoALib is used.

QNormaliz needs Flint, antic, arb and e-antic.


Download and extract

  • the source basic package (or tar.gz) or the extended source package (x.y.z denotes the version) from the release page of this repository.

Download and extract

  • the executable for your system (, or

Or compile Normaliz yourself on Linux or MacOS by one of the installation scripts

  • (only Normaliz)
  • (Normaliz and QNormaliz)

Docker image

available from