Note, this software was originally written by Ambros Marzetta
when he was a Ph.D. student at ETHZ Zurich.
Since Ambros is no longer involved in this area of research, I have
taken over maintaining this code.
David Bremner

Compiling pd

Or you may want to use other compiler options by changing the line
CFLAGS = -O -DNDEBUG -DOMIT_TIMES

If you remove -DOMIT_TIMES, the program measures the execution
time for the different phases of the algorithm. Then, simply type
make

and you get an executable named pd.

Running pd

pd reads the input data from stdin. Start the program by typing
% pd < pdtest/cross2.ine

Input format

pd accepts files in
.ine-format
like lrs, prs and
cdd.
The input must consist of rational numbers (no floating point
numbers). There are some restrictions on the input data:
V-representation: The polyhedron must be bounded (no rays) and
full-dimensional.
H-representation: The origin must be in the interior of the
polyhedron (in the interior, not on the border!), and the
polyhedron must have at least one vertex.
There may be a digits command before the begin line:
digits n: Use n decimal digits for the numerator and denominator of
all rational numbers. Default is 180.
There may be options after the end of the input matrix:

incidence: After every facet found, print a list of its incident
vertices.

#incidence: After every facet found, print the number of incident
vertices.
notranslation: For V-representations: The origin is in the interior
of the polytope. For H-representations: The input polyhedron is
bounded. In both cases, the option instructs the program not to
translate the input. This can make the computation much faster.
volume: Compute the volume of the polytope. This option is only
valid for H-representations and if the polyhedron is bounded.

The output should contain (along with other comment lines beginning with a "*")

The numbers between the ":" and the "|" give the vertices incident
to the facet, and the number after the "|" gives the number of
incident vertices.

Error messages

When pd is run, the following error messages may be generated:
Syntax error in the input file.
Internal error. Please send me a bug report.
Not enough memory. Change (decrease) the digits line in your input
file.
Overflow. Change (increase) the digits line in your input file.
Digits is too large. Increase MAX_DIGITS in prs_mp.h and
recompile the program.
Unbounded / origin not in the interior. Remove the "notranslation"
or the "volume" option from the input file, and check the
restrictions on the input data.
Not full-dimensional.

Release notes

pd prints its revision number in the first or second line of the
output. Currently, this is revision 1.8.