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
Permalink
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
.make-bindist.sh make-bindist.sh set back May 14, 2018
.travis-build.sh 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
Makefile.am Merge branch 'master' of github.com:Normaliz/Normaliz Jul 17, 2018
OldREADME.md Passage to 3.5.0 Nov 30, 2017
ReadMe.md Once more Jul 20, 2018
bootstrap.sh Add --force option to autoreconf Jul 21, 2016
configure.ac 3.6.1 --> 3.6.2 Jul 17, 2018
install_nmz_antic.sh Better LDFLAGS May 10, 2018
install_nmz_arb.sh curl --> wget May 31, 2018
install_nmz_cocoa.sh curl --> wget May 31, 2018
install_nmz_e-antic.sh Little improvements May 28, 2018
install_nmz_flint.sh curl --> wget May 31, 2018
install_nmz_flint_for_eantic.sh curl --> wget May 31, 2018
install_normaliz.sh Merge branch 'master' of https://github.com/Normaliz/Normaliz May 25, 2018
install_normaliz_with_opt.sh Restore install_normaliz_with_opt.sh to non-eantic operation; new ins… Apr 9, 2018
install_normaliz_with_qnormaliz_eantic.sh Restore install_nmz_flint.sh to use stable FLINT; new install_nmz_fli… Apr 9, 2018
install_pynormaliz.sh Updated Dockerfile to use PyNormaliz install script Jul 17, 2018

ReadMe.md

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: https://mybinder.org/v2/gh/Normaliz/NormalizJupyter/master

Sample input and output

The file 2cone.in 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

Platforms

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

Interfaces

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

Normaliz.jpg

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.

Installation

Download and extract

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

Download and extract

  • the executable for your system (normaliz-x.y.zLinux64.zip, normaliz-x.y.zMacOS.zip or normaliz-x.y.zLinux64.zip).

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

  • install_normaliz_with_opt.sh (only Normaliz)
  • install_normaliz_with_qnormaliz_eantic.sh (Normaliz and QNormaliz)

Docker image

available from https://hub.docker.com/r/normaliz/normaliz/