Fernando Mário de Oliveira Filho


In many applications of semidefinite programming, problem specification (that is, specifying the constraints of a problem) is a time-consuming and computationally-heavy step. SDPSL (Semidefinite Programming Specification Library) is a C++11 library that provides a high-level syntax for problem specification. Since it is a C++ library, it can be used for large-scale problems when efficiency is important. SDPSL generates input for SDP solvers (for instance in sparse SDPA format) and can also be used to analyze the output provided by the solver.

There is also a Sage interface for the library, that makes it possible to use SDPSL as a Sage module.

SDPSL grew out of my experience with two projects in which large-scale SDPs involving sums-of-squares had to be generated and analyzed. These applications are detailed in two of my publications:

  • arXiv:1308.4893 with F. Vallentin, Computing upper bounds for the packing density of congruent copies of a convex body I, arXiv:1308.4893, 2013, 28pp.

  • arXiv:1206.2608 with D. de Laat and F. Vallentin, Upper bounds for packings of spheres of several radii, to appear in Forum of Mathematics, Sigma, arXiv:1206.2608, 2012, 31pp.

SDPSL is free software and is distributed under the GNU General Public License version 3 or (at your choice) any later version.

Downloading and installing

You can download the latest version of SDPSL here:

  • SDPSL 0.85, released 2014-04-08, tar.gz (258KB).

To install SDPSL you will need:

  • The SCons software construction tool;

  • GMP with its C++ extension;

  • LAPACK and BLAS;

  • The MPFR library, if you want to use the Sage interface.

After downloading the file, expand it by typing (on Unix systems):

$ tar -xzvf sdpsl-0.85.tar.gz

A directory named sdpsl-0.85 will be created.

Before building the library, you might want to change your compiler path and flags and also the installation prefix. You can do this by editing the file custom.py in directory sdpsl-0.85.

To build the library, type:

$ cd sdpsl-0.85
$ scons

To install the Sage module you do not need to install the library itself in the system directories; you can type immediately after the library is built:

$ PATH-TO-SAGE/sage setup.py install

Notice that you need permission to access the directory where SAGE is installed, so you might need to run the command above as root.

To install the library in the system directories, type:

$ scons install

You also need permission to access the destination directory; you might need to run the above command as root.


Documentation is available both for the C++ library and for the Sage module:

You can find examples of programs using SDPSL in the sub-directories


of SDPSL' distribution.

Bugs and comments

I will be happy to hear about your experience with SDPSL; just send me an email.