Normaliz is a tool for computations in affine monoids, vector configurations, lattice polytopes, and rational cones.
Its input data can be specified in terms of
Normaliz can be started from the command line or from the GUI interface jNormaliz (written by Vinicius Almendra and Bogdan Ichim). jNormaliz is included in the distribution. See the Normaliz documentation for details.
The user indicates the type of input data in the input file and controls the computation and the output via the GUI interface or command line options.
Normaliz is provided for 2 degrees of integer precision: 64 bits or infinite. For infinite precision it uses the GMP (Linux, Mac) and MPIR (Windows) libraries. The user can require arithmetic checks at critical steps of the algorithms.
NmzIntegrate is based on CoCoALib.
comes with interfaces for Macaulay2 and Singular. The Macaulay2 interface
(written by Gesa Kämpf) needs Macaulay2 1.1.99 or later. The Singular interface
needs Singular 3-0-0 or later. Normaliz is accessible from polymake (thanks to
an interface written by Andreas Paffenholz) and is used by B. Burton's
Some interesting and challenging examples document the power of Normaliz. Please send examples that you would like to add to the collection to one of the authors!
References to articles about Normaliz are included in the documentation and their pdf files can be found in the distribution.
Normaliz is distributed under GPL.
Note: Version 2.10.1 corrects a bug in versions 2.10 and 2.9 that produced the wrong multiplicity in computation mode -v (volume) for some non-integral polytopes (and two minor bugs of 2.8).
History: The first version of Normaliz was a C program developed by Winfried Bruns and Robert Koch in 1997/98. In 2002 Bruns added a Singular library. Witold Jarnicki improved the h-vector computation in 2003 and augmented the output options.
Version 2.0 (of 2008) was completely rewritten in C++ by Bogdan Ichim. The algorithms and their implementations were significantly improved by the authors. Moreover, additional input modes and user-controlled arithmetic checks were added.
Version 2.1 was augmented in regard to the user interface. Moreover, Pottier’s algorithm was added for solving systems of inequalities and equations.
Another addition was the Macaulay2 interface, implemented by Gesa Kämpf.
In version 2.2 the user interface was improved by Christof Söger.
Version 2.5 adds congruences, allowing the combination with equations and inequalities, and binomial ideals as further input types. Algorithms for large examples give access to hitherto unreachable cones. Various aspects, in particular the computation of shellings, have been improved considerably, and Normaliz can now exploits parallelization on shared memory systems via OpenMP. The main output file is re-organized.
Version 2.7 unites the former norm64 and normbig in a single executable normaliz. h-vector computation considerably improved.
Version 2.8 adds arbitrary Z-gradings and improves the performance considerably.
Version 2.9 includes NmzIntegrate 1.0
Version 2.10: improvement of NmzIntegrate and corrections in the exchange of data between Normaliz and NmzIntegrate