cdd wrapper module for Julia. cdd is a library for polyhedra manipulation such as double description and Fourier-Motzkin elimination
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
deps πŸ™ˆ Ignore build.log Oct 9, 2018
src Updates Oct 9, 2018
test Updates Oct 9, 2018
.gitignore Basic working Jan 4, 2016
.travis.yml πŸ‘· JuMP and Polyhedra have been released Oct 11, 2018
COPYING Switch to GPLv2 license to match cddlib's license Jan 4, 2016 Fix #3 May 13, 2016 Update package evaluator links Jun 8, 2018
REQUIRE πŸ‘· Bump Polyhedra bounds Oct 11, 2018
appveyor.yml Update CI Oct 1, 2018


PackageEvaluator Build Status References to cite
Build Status Build Status DOI
Coveralls branch Codecov branch

CDDLib is a wrapper for cdd. This module can either be used in a "lower level" using the API of cdd or using the higher level interface of Polyhedra. CDDLib also includes the linear programming solver CDDSolver which can be used by JuMP or Convex through MathProgBase.

I needed to fork cddlib to write the wrapper because it is interface is text file based. My changes are not upstream yet, the version used by CDDLib.jl can be found here.

As written in the README of cddlib:

The C-library cddlib is a C implementation of the Double Description Method of Motzkin et al. for generating all vertices (i.e. extreme points) and extreme rays of a general convex polyhedron in R^d given by a system of linear inequalities:

P = { x=(x1, ..., xd)^T : b - A x >= 0 }

where A is a given m x d real matrix, b is a given m-vector and 0 is the m-vector of all zeros.

The program can be used for the reverse operation (i.e. convex hull computation). This means that one can move back and forth between an inequality representation and a generator (i.e. vertex and ray) representation of a polyhedron with cdd. Also, cdd can solve a linear programming problem, i.e. a problem of maximizing and minimizing a linear function over P.


On Unix, cddlib is build from source while on Windows, a binary is downloaded using WinRPM. Therefore, on Unix, it is required that you have a working environment for compiling C programs and that you have the headers file of GMP installed (GMP is bundled with Julia but we still need the development files for compiling cddlib). On Linux, install libgmp-dev if you are on a Debian based Linux OS (such as Ubuntu), libgmp-devel or gmp-devel if you are on RedHat based Linux OS (such as Fedora) and gmp if you are on an ArchLinux based Linux OS (such as Antergos). On MacOS, gmp is automatically installed through Homebrew.