The last major update on the software was in Feb 2009. It implemented an infeasible path-following algorithm (sqlp.m) for solving SQLP -- conic optimization problems involving semidefinite, second-order and linear cone constraints. It also has a path-following algorithm (HSDsqlp.m) for solving a 3-parameter homogeneous self-dual reformulation of SQLP. Note: though this software is fairly well tested, but minor refinement or fix may still be needed from time to time.

New features that SDPT3 can now handle:

- free variables;
- determinant maximization problems;
- SDP with complex data;
- 3-parameter homogeneous self-dual model of SQLP (in HSDsqlp.m);

**K.C. Toh, M.J. Todd, and R.H. Tutuncu**, SDPT3 --- a Matlab software package for semidefinite programming, Optimization Methods and Software, 11 (1999), pp. 545--581.**R.H Tutuncu, K.C. Toh, and M.J. Todd**, Solving semidefinite-quadratic-linear programs using SDPT3, Mathematical Programming Ser. B, 95 (2003), pp. 189--217.

**Copyright**: This version of SDPT3 is distributed under the**GNU General Public License 2.0**. For commercial applications that may be incompatible with this license, please contact the authors to discuss alternatives.- SDPT3 is currently used as one of the main computational engines in optimization modeling languages such as CVX and YALMIP .

Please read.. Welcome to SDPT3-4.0! The software is built for MATLAB version 7.4 or later releases, it may not work for earlier versions. The software requires a few Mex files for execution. You can generate the Mex files as follows:

Firstly, download the package SDPT3-4.0.zip

Run Matlab in the directory SDPT3-4.0

In Matlab command window, type:

`xxxxxxxxxx`

`>>installmex(1)`

After that, to see whether you have installed SDPT3 correctly, type:

`xxxxxxxxxx`

`>> startup`

`>> sqlpdemo`

By now, SDPT3 is ready for you to use.

**User's guide**(PDF)

The following example shows how SDPT3 call a data file that is stored in

**SDPA format**:`xxxxxxxxxx`

`>> [blk,At,C,b] = read_sdpa('/sdplib/theta3.dat-s');`

`>> [obj,X,y,Z] = sdpt3(blk,At,C,b);`

The following example shows how SDPT3 call a data file that is stored in

**SeDuMi format**:`xxxxxxxxxx`

`>> [blk,At,C,b] = read_sedumi(AA,bb,cc,K); or [blk,At,C,b] = read_sedumi('/dimacs/hamming_7_5_6.mat');`

`>> [obj,X,y,Z] = sdpt3(blk,At,C,b);`

Special thanks go to Hans Mittelmann for his effort in benchmarking several SDP software packages on the following test problems:

benchmark on some large sparse SDPs;

benchmark on SDPs with free variables;

- 2017/08/23: fixed a bug (reported by Johan Lofberg) due to mex-function incompatibility with MatlabR2016
- 2017/05/06: fixed a bug reported by Johan Lofberg
- 2017/05/06: fixed mex-function incompatibility with MatlabR2016a
- 2016/10/26: fixed mex-function incompatibility with MatlabR2015b

We thank those who had made suggestions and reported bugs to make SDPT3 better. In particular, we thank **Johan Lofberg** for bug reports while incorporating SDPT3 into YALMIP. Thanks also go to **Michael Grant** for bug reports while testing SDPT3 as an engine for CVX.