zz2values: make first argument const
[barvinok.git] / README
blobf6e7c6fc4a09269264710f16c0ca06b144f1e506
1 This is a (partial) reimplementation of latte
2 (http://www.math.ucdavis.edu/~latte/)
3 using polylib (http://icps.u-strasbg.fr/polylib/ or
4 http://www.kotnet.org/~skimo/polylib/).
6 Next to polylib, it uses NTL (http://shoup.net/ntl/)
7 Mac users may want to apply NTL_5_3_2.patch
9 Optionally, PIP (http://www.piplib.org/)
10 and Omega (http://www.cs.umd.edu/projects/omega/ or 
11 http://www.liacs.nl/~sverdool/gitweb.cgi?p=omega.git;a=summary)
12 can be used during enumeration of integer projections.
14 Both NTL and polylib need to have been compiled with gmp
15 support.
16 For NTL this means you have to specify
17     NTL_GMP_LIP=on
19 Suppose you want to put everyting in /opt,
20 Then you configure/compile polylib using
22 ./configure --with-libgmp=/path/to/gmp --prefix=/opt
23 make
24 make install
26 For NTL,
28 cd src
29 ./configure NTL_GMP_LIP=on PREFIX=/opt GMP_PREFIX=/path/to/gmp
30 make
31 make install
33 For Omega,
35 vi -c '/DESTDIR=/|s/=.*$/=\/opt/|wq' Makefile.config
36 make libomega.a libcode_gen.a
37 make install
39 For piplib,
41 ./configure --with-gmp=/path/to/gmp --prefix=/opt
42 make
43 make install
45 Configure this library using
47 ./configure --prefix=/opt --with-polylib=/opt --with-ntl=/opt
51 ./configure --prefix=/opt --with-polylib=/opt --with-ntl=/opt --enable-fractional
53 Then
55 make
56 make check
57 make install
59 If you want to put any one of these packages in the default location
60 (typically /usr/local), then the prefix argument can be omitted.
61 For more information on other arguments,
63 ./configure --help
65 Please use a version of the PolyLib library that is not
66 older than August 13th 2004.
68 The input format of barvinok_enumerate is the same as that
69 of testehrhart from the PolyLib distribution.
70 See the PolyLib manual, barvinok_enumerate.c or the
71 examples in tests/ehrhart/ .
73 Note that the fractional representation is subject to change.
75 The library supports three specialization algorithms.
76 The first performs a direct specialization using a random vector.
77 The second performs a "depth-first" incremental specialization.
78 The third performs a "breadth-first" incremental specialization.
80 The first is usually the fastest, but can fail if the random
81 vector happens to be chosen incorrectly.
82 The incremental algorithms should never fail, but can be slower,
83 in some cases by quite a bit.  The breadth-first version should
84 be faster than the depth-first version, especially on polytopes
85 of moderate dimension with a lot of "structure", but can require
86 more memory.
88 Sven Verdoolaege <skimo@kotnet.org>