gen_fun::Hadamard_product: don't assume equalities are independent
[barvinok.git] / README
blob1648e8c5f03050ec5d5fea8ae57e6dbd471a7b73
1 barvinok is a library for counting the number of integer points
2 in parametric and non-parametric polytopes as well as projections
3 of such sets.
4 For parametric polytopes the count is represented by either
5 an explicit function or a generating function.
6 The first comes in the shape of a piece-wise step-polynomial.
7 This is a generalization of both Ehrhart quasi-polynomials
8 and vector partition functions.
9 The second is a generalization of an Ehrhart series.
11 This library shares some functionality with LattE
12 (http://www.math.ucdavis.edu/~latte/)
13 and uses PolyLib (http://icps.u-strasbg.fr/polylib/ or
14 http://www.kotnet.org/~skimo/polylib/) and
15 NTL (http://shoup.net/ntl/).
17 Additionally, the following packages can optionally be used
18 - PIP (http://www.piplib.org/)
19 - Omega (http://www.cs.umd.edu/projects/omega/ or 
20     http://www.liacs.nl/~sverdool/gitweb.cgi?p=omega.git;a=summary)
21 - GLPK (http://www.gnu.org/software/glpk/)
23 Both NTL and PolyLib need to have been compiled with GMP
24 support.
25 For NTL this means you have to specify
26     NTL_GMP_LIP=on
28 Suppose you want to put everything in /opt,
29 Then you configure/compile PolyLib using
31 ./configure --with-libgmp=/path/to/gmp --prefix=/opt
32 make
33 make install
35 For NTL,
37 cd src
38 ./configure NTL_GMP_LIP=on PREFIX=/opt GMP_PREFIX=/path/to/gmp
39 make
40 make install
42 For Omega,
44 vi -c '/DESTDIR=/|s/=.*$/=\/opt/|wq' Makefile.config
45 make libomega.a libcode_gen.a
46 make install
48 For piplib,
50 ./configure --with-gmp=/path/to/gmp --prefix=/opt
51 make
52 make install
54 Configure this library using
56 ./configure --prefix=/opt --with-polylib=/opt --with-ntl=/opt
60 ./configure --prefix=/opt --with-polylib=/opt --with-ntl=/opt --enable-fractional
62 Then
64 make
65 make check
66 make install
68 If you want to put any one of these packages in the default location
69 (typically /usr/local), then the prefix argument can be omitted.
70 For more information on other arguments,
72 ./configure --help
74 Please use PolyLib version 5.21.0 or later.
76 The input format of barvinok_enumerate is the same as that
77 of testehrhart from the PolyLib distribution.
78 See the PolyLib manual, barvinok_enumerate.c or the
79 examples in tests/ehrhart/ .
81 Note that the fractional representation is subject to change.
83 The library supports three specialization algorithms.
84 The first performs a direct specialization using a random vector.
85 The second performs a "depth-first" incremental specialization.
86 The third performs a "breadth-first" incremental specialization.
88 The first is usually the fastest, but can fail if the random
89 vector happens to be chosen incorrectly.
90 The incremental algorithms should never fail, but can be slower,
91 in some cases by quite a bit.  The breadth-first version should
92 be faster than the depth-first version, especially on polytopes
93 of moderate dimension with a lot of "structure", but can require
94 more memory.
96 Sven Verdoolaege <skimo@kotnet.org>